From 36341cf63452e12c11a2f70b5ab40e53f01b777e Mon Sep 17 00:00:00 2001 From: DucDangAnh Date: Mon, 15 Jun 2020 11:28:13 +0700 Subject: [PATCH] Init --- .gitignore | 261 + App.config | 10 + Constant.cs | 22 + NLog.config | 21 + NLog.xsd | 3638 ++ PingTool.csproj | 100 + PingTool.sln | 25 + PingToolForm.Designer.cs | 84 + PingToolForm.cs | 64 + PingToolForm.resx | 123 + Program.cs | 97 + Properties/AssemblyInfo.cs | 36 + Properties/Resources.Designer.cs | 71 + Properties/Resources.resx | 117 + Properties/Settings.Designer.cs | 30 + Properties/Settings.settings | 7 + Util.cs | 65 + packages.config | 6 + packages/NLog.4.7.2/.signature.p7s | Bin 0 -> 9471 bytes .../NLog.4.7.2/lib/monoandroid44/NLog.dll | Bin 0 -> 765952 bytes .../NLog.4.7.2/lib/monoandroid44/NLog.xml | 26661 ++++++++++++++ packages/NLog.4.7.2/lib/net35/NLog.dll | Bin 0 -> 843264 bytes packages/NLog.4.7.2/lib/net35/NLog.xml | 29160 +++++++++++++++ packages/NLog.4.7.2/lib/net40-client/NLog.dll | Bin 0 -> 858624 bytes packages/NLog.4.7.2/lib/net40-client/NLog.xml | 29391 +++++++++++++++ packages/NLog.4.7.2/lib/net45/NLog.dll | Bin 0 -> 869888 bytes packages/NLog.4.7.2/lib/net45/NLog.xml | 29589 ++++++++++++++++ .../NLog.4.7.2/lib/netstandard1.3/NLog.dll | Bin 0 -> 741888 bytes .../NLog.4.7.2/lib/netstandard1.3/NLog.xml | 25730 ++++++++++++++ .../NLog.4.7.2/lib/netstandard1.5/NLog.dll | Bin 0 -> 784896 bytes .../NLog.4.7.2/lib/netstandard1.5/NLog.xml | 26729 ++++++++++++++ .../NLog.4.7.2/lib/netstandard2.0/NLog.dll | Bin 0 -> 813568 bytes .../NLog.4.7.2/lib/netstandard2.0/NLog.xml | 27537 ++++++++++++++ packages/NLog.4.7.2/lib/sl4/NLog.dll | Bin 0 -> 672768 bytes packages/NLog.4.7.2/lib/sl4/NLog.xml | 21873 ++++++++++++ packages/NLog.4.7.2/lib/sl5/NLog.dll | Bin 0 -> 683520 bytes packages/NLog.4.7.2/lib/sl5/NLog.xml | 22039 ++++++++++++ packages/NLog.4.7.2/lib/wp8/NLog.dll | Bin 0 -> 666112 bytes packages/NLog.4.7.2/lib/wp8/NLog.xml | 21215 +++++++++++ packages/NLog.4.7.2/lib/xamarinios10/NLog.dll | Bin 0 -> 764416 bytes packages/NLog.4.7.2/lib/xamarinios10/NLog.xml | 26607 ++++++++++++++ packages/NLog.Config.4.7.2/.signature.p7s | Bin 0 -> 9471 bytes .../NLog.Config.4.7.2/content/NLog.config | 41 + .../contentFiles/any/any/NLog.config | 41 + packages/NLog.Config.4.7.2/tools/Install.ps1 | 12 + packages/NLog.Schema.4.7.2/.signature.p7s | Bin 0 -> 9470 bytes packages/NLog.Schema.4.7.2/content/NLog.xsd | 3638 ++ .../contentFiles/any/any/NLog.xsd | 3638 ++ 48 files changed, 298678 insertions(+) create mode 100644 .gitignore create mode 100644 App.config create mode 100644 Constant.cs create mode 100644 NLog.config create mode 100644 NLog.xsd create mode 100644 PingTool.csproj create mode 100644 PingTool.sln create mode 100644 PingToolForm.Designer.cs create mode 100644 PingToolForm.cs create mode 100644 PingToolForm.resx create mode 100644 Program.cs create mode 100644 Properties/AssemblyInfo.cs create mode 100644 Properties/Resources.Designer.cs create mode 100644 Properties/Resources.resx create mode 100644 Properties/Settings.Designer.cs create mode 100644 Properties/Settings.settings create mode 100644 Util.cs create mode 100644 packages.config create mode 100644 packages/NLog.4.7.2/.signature.p7s create mode 100644 packages/NLog.4.7.2/lib/monoandroid44/NLog.dll create mode 100644 packages/NLog.4.7.2/lib/monoandroid44/NLog.xml create mode 100644 packages/NLog.4.7.2/lib/net35/NLog.dll create mode 100644 packages/NLog.4.7.2/lib/net35/NLog.xml create mode 100644 packages/NLog.4.7.2/lib/net40-client/NLog.dll create mode 100644 packages/NLog.4.7.2/lib/net40-client/NLog.xml create mode 100644 packages/NLog.4.7.2/lib/net45/NLog.dll create mode 100644 packages/NLog.4.7.2/lib/net45/NLog.xml create mode 100644 packages/NLog.4.7.2/lib/netstandard1.3/NLog.dll create mode 100644 packages/NLog.4.7.2/lib/netstandard1.3/NLog.xml create mode 100644 packages/NLog.4.7.2/lib/netstandard1.5/NLog.dll create mode 100644 packages/NLog.4.7.2/lib/netstandard1.5/NLog.xml create mode 100644 packages/NLog.4.7.2/lib/netstandard2.0/NLog.dll create mode 100644 packages/NLog.4.7.2/lib/netstandard2.0/NLog.xml create mode 100644 packages/NLog.4.7.2/lib/sl4/NLog.dll create mode 100644 packages/NLog.4.7.2/lib/sl4/NLog.xml create mode 100644 packages/NLog.4.7.2/lib/sl5/NLog.dll create mode 100644 packages/NLog.4.7.2/lib/sl5/NLog.xml create mode 100644 packages/NLog.4.7.2/lib/wp8/NLog.dll create mode 100644 packages/NLog.4.7.2/lib/wp8/NLog.xml create mode 100644 packages/NLog.4.7.2/lib/xamarinios10/NLog.dll create mode 100644 packages/NLog.4.7.2/lib/xamarinios10/NLog.xml create mode 100644 packages/NLog.Config.4.7.2/.signature.p7s create mode 100644 packages/NLog.Config.4.7.2/content/NLog.config create mode 100644 packages/NLog.Config.4.7.2/contentFiles/any/any/NLog.config create mode 100644 packages/NLog.Config.4.7.2/tools/Install.ps1 create mode 100644 packages/NLog.Schema.4.7.2/.signature.p7s create mode 100644 packages/NLog.Schema.4.7.2/content/NLog.xsd create mode 100644 packages/NLog.Schema.4.7.2/contentFiles/any/any/NLog.xsd diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ee255d2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,261 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +project.fragment.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +#*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +#**/packages/* +# except build/, which is used as an MSBuild target. +#!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc \ No newline at end of file diff --git a/App.config b/App.config new file mode 100644 index 0000000..5b5f31a --- /dev/null +++ b/App.config @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Constant.cs b/Constant.cs new file mode 100644 index 0000000..acc2a25 --- /dev/null +++ b/Constant.cs @@ -0,0 +1,22 @@ +namespace PingTool +{ + public class Constant + { + #region DYNAMYC DLL FILES + public const string USER_32_DLL = "user32.dll"; + public const string KERNEL_32_DLL = "kernel32.dll"; + #endregion + + public const int PING_TIMEOUT_MS = 500; + public const string DATETIME_FORMAT = "HH:mm:ss dd/MM/yyyy"; + + #region Configuration Key + public static string PREFIX_IP_CONFIGURATION_KEY = "PrefixIP"; + public static string PING_TO_CONFIGURATION_KEY = "PingTo"; + #endregion + + + public static string PING_LOGGER_FILE_NAME = "PingLogger"; + + } +} diff --git a/NLog.config b/NLog.config new file mode 100644 index 0000000..76c4ef9 --- /dev/null +++ b/NLog.config @@ -0,0 +1,21 @@ + + + + + + + + + + + + diff --git a/NLog.xsd b/NLog.xsd new file mode 100644 index 0000000..578682a --- /dev/null +++ b/NLog.xsd @@ -0,0 +1,3638 @@ + + + + + + + + + + + + + + + Watch config file for changes and reload automatically. + + + + + Print internal NLog messages to the console. Default value is: false + + + + + Print internal NLog messages to the console error output. Default value is: false + + + + + Write internal NLog messages to the specified file. + + + + + Log level threshold for internal log messages. Default value is: Info. + + + + + Global log level threshold for application log messages. Messages below this level won't be logged. + + + + + Throw an exception when there is an internal error. Default value is: false. Not recommend to set to true in production! + + + + + Throw an exception when there is a configuration error. If not set, determined by throwExceptions. + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. Default value is: false. + + + + + Write internal NLog messages to the System.Diagnostics.Trace. Default value is: false. + + + + + Write timestamps for internal NLog messages. Default value is: true. + + + + + Use InvariantCulture as default culture instead of CurrentCulture. Default value is: false. + + + + + Perform message template parsing and formatting of LogEvent messages (true = Always, false = Never, empty = Auto Detect). Default value is: empty. + + + + + + + + + + + + + + Make all targets within this section asynchronous (creates additional threads but the calling thread isn't blocked by any target writes). + + + + + + + + + + + + + + + + + Prefix for targets/layout renderers/filters/conditions loaded from this assembly. + + + + + Load NLog extensions from the specified file (*.dll) + + + + + Load NLog extensions from the specified assembly. Assembly name should be fully qualified. + + + + + + + + + + Filter on the name of the logger. May include wildcard characters ('*' or '?'). + + + + + Comma separated list of levels that this rule matches. + + + + + Minimum level that this rule matches. + + + + + Maximum level that this rule matches. + + + + + Level that this rule matches. + + + + + Comma separated list of target names. + + + + + Ignore further rules if this one matches. + + + + + Enable this rule. Note: disabled rules aren't available from the API. + + + + + Rule identifier to allow rule lookup with Configuration.FindRuleByName and Configuration.RemoveRuleByName. + + + + + + + + + + + + + + + Default action if none of the filters match. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the file to be included. You could use * wildcard. The name is relative to the name of the current config file. + + + + + Ignore any errors in the include file. + + + + + + + + Variable value. Note, the 'value' attribute has precedence over this one. + + + + + + Variable name. + + + + + Variable value. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Number of log events that should be processed in a batch by the lazy writer thread. + + + + + Whether to use the locking queue, instead of a lock-free concurrent queue The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + Limit of full s to write before yielding into Performance is better when writing many small batches, than writing a single large batch + + + + + Action to be taken when the lazy writer thread request queue count exceeds the set limit. + + + + + Limit on the number of requests in the lazy writer thread request queue. + + + + + Time in milliseconds to sleep between batches. (1 or less means trigger on new activity) + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + Delay the flush until the LogEvent has been confirmed as written + + + + + Condition expression. Log events who meet this condition will cause a flush on the wrapped target. + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Number of log events to be buffered. + + + + + Timeout (in milliseconds) after which the contents of buffer will be flushed if there's no write in the specified period of time. Use -1 to disable timed flushes. + + + + + Action to take if the buffer overflows. + + + + + Indicates whether to use sliding timeout. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Encoding to be used. + + + + + Instance of that is used to format log messages. + + + + + End of line value if a newline is appended at the end of log message . + + + + + Maximum message size in bytes. + + + + + Indicates whether to append newline at the end of log message. + + + + + Get or set the SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + Network address. + + + + + Size of the connection cache (number of connections which are kept alive). + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + Maximum queue size. + + + + + Maximum current connections. 0 = no maximum. + + + + + Action that should be taken if the will be more connections than . + + + + + Action that should be taken if the message is larger than maxMessageSize. + + + + + Indicates whether to keep connection open whenever possible. + + + + + NDLC item separator. + + + + + Indicates whether to include source info (file name and line number) in the information sent over the network. + + + + + Renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + Indicates whether to include NLog-specific extensions to log4j schema. + + + + + Indicates whether to include contents of the stack. + + + + + Indicates whether to include stack contents. + + + + + Indicates whether to include dictionary contents. + + + + + Indicates whether to include dictionary contents. + + + + + Indicates whether to include call site (class and method name) in the information sent over the network. + + + + + Option to include all properties from the log events + + + + + AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + NDC item separator. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Layout that should be use to calculate the value for the parameter. + + + + + Viewer parameter name. + + + + + Whether an attribute with empty value should be included in the output + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + Indicates whether to auto-check if the console is available. - Disables console writing if Environment.UserInteractive = False (Windows Service) - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + Enables output using ANSI Color Codes + + + + + The encoding for writing messages to the . + + + + + Indicates whether the error stream (stderr) should be used instead of the output stream (stdout). + + + + + Indicates whether to auto-flush after + + + + + Indicates whether to auto-check if the console has been redirected to file - Disables coloring logic when System.Console.IsOutputRedirected = true + + + + + Indicates whether to use default row highlighting rules. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Condition that must be met in order to set the specified foreground and background color. + + + + + Background color. + + + + + Foreground color. + + + + + + + + + + + + + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + Condition that must be met before scanning the row for highlight of words + + + + + Indicates whether to ignore case when comparing texts. + + + + + Regular expression to be matched. You must specify either text or regex. + + + + + Text to be matched. You must specify either text or regex. + + + + + Indicates whether to match whole words only. + + + + + Background color. + + + + + Foreground color. + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + Indicates whether to auto-flush after + + + + + Indicates whether to auto-check if the console is available - Disables console writing if Environment.UserInteractive = False (Windows Service) - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + The encoding for writing messages to the . + + + + + Indicates whether to send the log messages to the standard error instead of the standard output. + + + + + Whether to enable batch writing using char[]-buffers, instead of using + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Obsolete - value will be ignored! The logging code always runs outside of transaction. Gets or sets a value indicating whether to use database transactions. Some data providers require this. + + + + + Indicates whether to keep the database connection open between the log events. + + + + + Name of the database provider. + + + + + Database password. If the ConnectionString is not provided this value will be used to construct the "Password=" part of the connection string. + + + + + Database host name. If the ConnectionString is not provided this value will be used to construct the "Server=" part of the connection string. + + + + + Database user name. If the ConnectionString is not provided this value will be used to construct the "User ID=" part of the connection string. + + + + + Name of the connection string (as specified in <connectionStrings> configuration section. + + + + + Connection string. When provided, it overrides the values specified in DBHost, DBUserName, DBPassword, DBDatabase. + + + + + Database name. If the ConnectionString is not provided this value will be used to construct the "Database=" part of the connection string. + + + + + Connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used. + + + + + Configures isolated transaction batch writing. If supported by the database, then it will improve insert performance. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + Text of the SQL command to be run on each log level. + + + + + Type of the SQL command to be run on each log level. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Convert format of the property value + + + + + Culture used for parsing property string-value for type-conversion + + + + + Value to assign on the object-property + + + + + Name for the object-property + + + + + Type of the object-property + + + + + + + + + + + + + + Type of the command. + + + + + Connection string to run the command against. If not provided, connection string from the target is used. + + + + + Indicates whether to ignore failures. + + + + + Command text. + + + + + + + + + + + + + + + + + + Database parameter name. + + + + + Layout that should be use to calculate the value for the parameter. + + + + + Database parameter DbType. + + + + + Database parameter size. + + + + + Database parameter precision. + + + + + Database parameter scale. + + + + + Type of the parameter. + + + + + Convert format of the database parameter value. + + + + + Culture used for parsing parameter string-value for type-conversion + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Layout that renders event Category. + + + + + Optional entry type. When not set, or when not convertible to then determined by + + + + + Layout that renders event ID. + + + + + Name of the Event Log to write to. This can be System, Application or any user-defined name. + + + + + Name of the machine on which Event Log service is running. + + + + + Maximum Event log size in kilobytes. + + + + + Message length limit to write to the Event Log. + + + + + Value to be used as the event Source. + + + + + Action to take if the message is larger than the option. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Indicates whether to return to the first target after any successful write. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + File encoding. + + + + + Line ending mode. + + + + + Maximum days of archive files that should be kept. + + + + + Indicates whether to compress archive files into the zip archive format. + + + + + Way file archives are numbered. + + + + + Name of the file to be used for an archive. + + + + + Is the an absolute or relative path? + + + + + Indicates whether to automatically archive log files every time the specified time passes. + + + + + Size in bytes above which log files will be automatically archived. Warning: combining this with isn't supported. We cannot create multiple archive files, if they should have the same name. Choose: + + + + + Maximum number of archive files that should be kept. + + + + + Indicates whether the footer should be written only when the file is archived. + + + + + Maximum number of log file names that should be stored as existing. + + + + + Indicates whether to delete old log file on startup. + + + + + File attributes (Windows only). + + + + + Indicates whether to create directories if they do not exist. + + + + + Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. If set to false, nothing gets written when the filename is wrong. + + + + + Value of the file size threshold to archive old log file on startup. + + + + + Indicates whether to archive old log file on startup. + + + + + Value specifying the date format to use when archiving files. + + + + + Indicates whether to enable log file(s) to be deleted. + + + + + Indicates whether to write BOM (byte order mark) in created files + + + + + Indicates whether to replace file contents on each write instead of appending log message at the end. + + + + + Indicates whether file creation calls should be synchronized by a system global mutex. + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + Is the an absolute or relative path? + + + + + Name of the file to write to. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + Indicates whether concurrent writes to the log file by multiple processes on different network hosts. + + + + + Maximum number of seconds that files are kept open. If this number is negative the files are not automatically closed after a period of inactivity. + + + + + Number of files to be kept open. Setting this to a higher value may improve performance in a situation where a single File target is writing to many files (such as splitting by level or by logger). + + + + + Indicates whether to keep log file open instead of opening and closing it on each logging event. + + + + + Whether or not this target should just discard all data that its asked to write. Mostly used for when testing NLog Stack except final write + + + + + Indicates whether concurrent writes to the log file by multiple processes on the same host. + + + + + Number of times the write is appended on the file before NLog discards the log message. + + + + + Delay in milliseconds to wait before attempting to write to the file again. + + + + + Log file buffer size in bytes. + + + + + Maximum number of seconds before open files are flushed. If this number is negative or zero the files are not flushed by timer. + + + + + Indicates whether to automatically flush the file buffers after each log message. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Condition expression. Log events who meet this condition will be forwarded to the wrapped target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Windows domain name to change context to. + + + + + Required impersonation level. + + + + + Type of the logon provider. + + + + + Logon Type. + + + + + User account password. + + + + + Indicates whether to revert to the credentials of the process instead of impersonating another user. + + + + + Username to change context to. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Interval in which messages will be written up to the number of messages. + + + + + Maximum allowed number of messages written per . + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Endpoint address. + + + + + Name of the endpoint configuration in WCF configuration file. + + + + + Indicates whether to use a WCF service contract that is one way (fire and forget) or two way (request-reply) + + + + + Client ID. + + + + + Indicates whether to include per-event properties in the payload sent to the server. + + + + + Indicates whether to use binary message encoding. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + Layout that should be use to calculate the value for the parameter. + + + + + Name of the parameter. + + + + + Type of the parameter. + + + + + Type of the parameter. Obsolete alias for + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + Indicates whether NewLine characters in the body should be replaced with tags. + + + + + Priority used for sending mails. + + + + + Encoding to be used for sending e-mail. + + + + + BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + Indicates whether to add new lines between log entries. + + + + + Indicates whether to send message as HTML instead of plain text. + + + + + Sender's email address (e.g. joe@domain.com). + + + + + Mail message body (repeated for each log message send in one mail). + + + + + Mail subject. + + + + + Recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + Indicates the SMTP client timeout. + + + + + SMTP Server to be used for sending. + + + + + SMTP Authentication mode. + + + + + Username used to connect to SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + Password used to authenticate against SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + Indicates whether SSL (secure sockets layer) should be used when communicating with SMTP server. + + + + + Port number that SMTP Server is listening on. + + + + + Indicates whether the default Settings from System.Net.MailSettings should be used. + + + + + Folder where applications save mail messages to be processed by the local SMTP server. + + + + + Specifies how outgoing email messages will be handled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Max number of items to have in memory + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Class name. + + + + + Method name. The method must be public and static. Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx e.g. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Encoding to be used. + + + + + End of line value if a newline is appended at the end of log message . + + + + + Maximum message size in bytes. + + + + + Indicates whether to append newline at the end of log message. + + + + + Network address. + + + + + Size of the connection cache (number of connections which are kept alive). + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + Indicates whether to keep connection open whenever possible. + + + + + Maximum current connections. 0 = no maximum. + + + + + Maximum queue size. + + + + + Action that should be taken if the will be more connections than . + + + + + Action that should be taken if the message is larger than maxMessageSize. + + + + + Get or set the SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Encoding to be used. + + + + + Instance of that is used to format log messages. + + + + + End of line value if a newline is appended at the end of log message . + + + + + Maximum message size in bytes. + + + + + Indicates whether to append newline at the end of log message. + + + + + Get or set the SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + Network address. + + + + + Size of the connection cache (number of connections which are kept alive). + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + Maximum queue size. + + + + + Maximum current connections. 0 = no maximum. + + + + + Action that should be taken if the will be more connections than . + + + + + Action that should be taken if the message is larger than maxMessageSize. + + + + + Indicates whether to keep connection open whenever possible. + + + + + NDLC item separator. + + + + + Indicates whether to include source info (file name and line number) in the information sent over the network. + + + + + Renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + Indicates whether to include NLog-specific extensions to log4j schema. + + + + + Indicates whether to include contents of the stack. + + + + + Indicates whether to include stack contents. + + + + + Indicates whether to include dictionary contents. + + + + + Indicates whether to include dictionary contents. + + + + + Indicates whether to include call site (class and method name) in the information sent over the network. + + + + + Option to include all properties from the log events + + + + + AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + NDC item separator. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Indicates whether to perform layout calculation. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Indicates whether performance counter should be automatically created. + + + + + Name of the performance counter category. + + + + + Counter help text. + + + + + Name of the performance counter. + + + + + Performance counter type. + + + + + The value by which to increment the counter. + + + + + Performance counter instance name. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Default filter to be applied when no specific rule matches. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + Condition to be tested. + + + + + Resulting filter to be applied when the condition matches. + + + + + + + + + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + Number of times to repeat each log message. + + + + + + + + + + + + + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + Number of retries that should be attempted on the wrapped target in case of a failure. + + + + + Time to wait between retries in milliseconds. + + + + + + + + + + + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Forward to (Instead of ) + + + + + Always use independent of + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + Should we include the BOM (Byte-order-mark) for UTF? Influences the property. This will only work for UTF-8. + + + + + Web service method name. Only used with Soap. + + + + + Web service namespace. Only used with Soap. + + + + + Protocol to be used when calling web service. + + + + + Custom proxy address, include port separated by a colon + + + + + Encoding. + + + + + Web service URL. + + + + + Value whether escaping be done according to the old NLog style (Very non-standard) + + + + + Value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + + + + Indicates whether to pre-authenticate the HttpWebRequest (Requires 'Authorization' in parameters) + + + + + Name of the root XML element, if POST of XML document chosen. If so, this property must not be null. (see and ). + + + + + (optional) root namespace of the XML document, if POST of XML document chosen. (see and ). + + + + + Proxy configuration when calling web service + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Footer layout. + + + + + Header layout. + + + + + Body layout (can be repeated multiple times). + + + + + Custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). + + + + + Column delimiter. + + + + + Quote Character. + + + + + Quoting mode. + + + + + Indicates whether CVS should include header. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Layout of the column. + + + + + Name of the column. + + + + + Override of Quoting mode + + + + + + + + + + + + + + + + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + Option to render the empty object value {} + + + + + Option to suppress the extra spaces in the output json + + + + + List of property names to exclude when is true + + + + + Option to include all properties from the log event (as JSON) + + + + + Indicates whether to include contents of the dictionary. + + + + + Indicates whether to include contents of the dictionary. + + + + + Indicates whether to include contents of the dictionary. + + + + + How far should the JSON serializer follow object references before backing off + + + + + + + + + + + + + + + + + Layout that will be rendered as the attribute's value. + + + + + Name of the attribute. + + + + + Determines whether or not this attribute will be Json encoded. + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + Indicates whether to escape non-ascii characters + + + + + Whether an attribute with empty value should be included in the output + + + + + + + + + + + + + + Footer layout. + + + + + Header layout. + + + + + Body layout (can be repeated multiple times). + + + + + + + + + + + + + + + + + + + + + Option to include all properties from the log events + + + + + Indicates whether to include call site (class and method name) in the information sent over the network. + + + + + Indicates whether to include contents of the dictionary. + + + + + Indicates whether to include contents of the dictionary. + + + + + Indicates whether to include contents of the stack. + + + + + Indicates whether to include contents of the stack. + + + + + Indicates whether to include source info (file name and line number) in the information sent over the network. + + + + + + + + + + + + + + Layout text. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + List of property names to exclude when is true + + + + + Option to include all properties from the log event (as XML) + + + + + Indicates whether to include contents of the dictionary. + + + + + Indicates whether to include contents of the dictionary. + + + + + How far should the XML serializer follow object references before backing off + + + + + XML element name to use for rendering IList-collections items + + + + + XML attribute name to use when rendering property-key When null (or empty) then key-attribute is not included + + + + + XML element name to use when rendering properties + + + + + XML attribute name to use when rendering property-value When null (or empty) then value-attribute is not included and value is formatted as XML-element-value + + + + + Name of the root XML element + + + + + Value inside the root XML element + + + + + Whether a ElementValue with empty value should be included in the output + + + + + Auto indent and create new lines + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + + + + + + + + + + Layout that will be rendered as the attribute's value. + + + + + Name of the attribute. + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + Whether an attribute with empty value should be included in the output + + + + + + + + + + + + + + + + + + + + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + Name of the element + + + + + Value inside the element + + + + + Whether a ElementValue with empty value should be included in the output + + + + + Auto indent and create new lines + + + + + List of property names to exclude when is true + + + + + Option to include all properties from the log event (as XML) + + + + + Indicates whether to include contents of the dictionary. + + + + + Indicates whether to include contents of the dictionary. + + + + + How far should the XML serializer follow object references before backing off + + + + + XML element name to use for rendering IList-collections items + + + + + XML attribute name to use when rendering property-key When null (or empty) then key-attribute is not included + + + + + XML element name to use when rendering properties + + + + + XML attribute name to use when rendering property-value When null (or empty) then value-attribute is not included and value is formatted as XML-element-value + + + + + + + + + + + + + Action to be taken when filter matches. + + + + + Condition expression. + + + + + + + + + + + + + + + + + + + + + + + + + + Action to be taken when filter matches. + + + + + Indicates whether to ignore case when comparing strings. + + + + + Layout to be used to filter log messages. + + + + + Substring to be matched. + + + + + + + + + + + + + + + + + Action to be taken when filter matches. + + + + + String to compare the layout to. + + + + + Indicates whether to ignore case when comparing strings. + + + + + Layout to be used to filter log messages. + + + + + + + + + + + + + + + + + Action to be taken when filter matches. + + + + + Indicates whether to ignore case when comparing strings. + + + + + Layout to be used to filter log messages. + + + + + Substring to be matched. + + + + + + + + + + + + + + + + + Action to be taken when filter matches. + + + + + String to compare the layout to. + + + + + Indicates whether to ignore case when comparing strings. + + + + + Layout to be used to filter log messages. + + + + + + + + + + + + + + + + + + + + + + + + Action to be taken when filter matches. + + + + + Default number of unique filter values to expect, will automatically increase if needed + + + + + Applies the configured action to the initial logevent that starts the timeout period. Used to configure that it should ignore all events until timeout. + + + + + Layout to be used to filter log messages. + + + + + Max number of unique filter values to expect simultaneously + + + + + Max length of filter values, will truncate if above limit + + + + + How long before a filter expires, and logging is accepted again + + + + + Default buffer size for the internal buffers + + + + + Reuse internal buffers, and doesn't have to constantly allocate new buffers + + + + + Append FilterCount to the when an event is no longer filtered + + + + + Insert FilterCount value into when an event is no longer filtered + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/PingTool.csproj b/PingTool.csproj new file mode 100644 index 0000000..7562eaf --- /dev/null +++ b/PingTool.csproj @@ -0,0 +1,100 @@ + + + + + Debug + AnyCPU + {15F8C9B5-6A48-4946-A85E-4C7701BC8EEA} + WinExe + PingTool + PingTool + v4.6 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + packages\NLog.4.7.2\lib\net45\NLog.dll + + + + + + + + + + + + + + + + + + + + + + Form + + + PingToolForm.cs + + + + + + PingToolForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + PreserveNewest + + + Designer + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + \ No newline at end of file diff --git a/PingTool.sln b/PingTool.sln new file mode 100644 index 0000000..97c24e2 --- /dev/null +++ b/PingTool.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30104.148 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PingTool", "PingTool.csproj", "{15F8C9B5-6A48-4946-A85E-4C7701BC8EEA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {15F8C9B5-6A48-4946-A85E-4C7701BC8EEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {15F8C9B5-6A48-4946-A85E-4C7701BC8EEA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {15F8C9B5-6A48-4946-A85E-4C7701BC8EEA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {15F8C9B5-6A48-4946-A85E-4C7701BC8EEA}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {3E47813A-9112-45D1-ACF3-6E1A2908E141} + EndGlobalSection +EndGlobal diff --git a/PingToolForm.Designer.cs b/PingToolForm.Designer.cs new file mode 100644 index 0000000..82b6d60 --- /dev/null +++ b/PingToolForm.Designer.cs @@ -0,0 +1,84 @@ +namespace PingTool +{ + partial class PingToolForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.lblThisPcIP = new System.Windows.Forms.Label(); + this.timerPing = new System.Windows.Forms.Timer(this.components); + this.lblDestinationPcIPs = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // lblThisPcIP + // + this.lblThisPcIP.AutoSize = true; + this.lblThisPcIP.Location = new System.Drawing.Point(13, 13); + this.lblThisPcIP.Name = "lblThisPcIP"; + this.lblThisPcIP.Size = new System.Drawing.Size(79, 13); + this.lblThisPcIP.TabIndex = 0; + this.lblThisPcIP.Text = "IP máy hiện tại:"; + // + // timerPing + // + this.timerPing.Enabled = true; + this.timerPing.Interval = 500; + // + // lblDestinationPcIPs + // + this.lblDestinationPcIPs.AutoSize = true; + this.lblDestinationPcIPs.Location = new System.Drawing.Point(13, 50); + this.lblDestinationPcIPs.Name = "lblDestinationPcIPs"; + this.lblDestinationPcIPs.Size = new System.Drawing.Size(95, 13); + this.lblDestinationPcIPs.TabIndex = 1; + this.lblDestinationPcIPs.Text = "DestinationPC IPs:"; + // + // PingToolForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.lblDestinationPcIPs); + this.Controls.Add(this.lblThisPcIP); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.Name = "PingToolForm"; + this.Text = "Ping Tool"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.PingToolForm_FormClosing); + this.Resize += new System.EventHandler(this.PingToolForm_Resize); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label lblThisPcIP; + private System.Windows.Forms.Timer timerPing; + private System.Windows.Forms.Label lblDestinationPcIPs; + } +} + diff --git a/PingToolForm.cs b/PingToolForm.cs new file mode 100644 index 0000000..6a28705 --- /dev/null +++ b/PingToolForm.cs @@ -0,0 +1,64 @@ +using NLog; +using System.Collections.Generic; +using System.Configuration; +using System.Windows.Forms; + +namespace PingTool +{ + public partial class PingToolForm : Form + { + private List destinationIPList; + private string thisPcIP; + public PingToolForm() + { + InitializeComponent(); + + Logger pingLogger = LogManager.GetLogger(Constant.PING_LOGGER_FILE_NAME); + pingLogger.Log(LogLevel.Info, $"-------------------------------Chạy ứng dụng {System.DateTime.Now.ToString(Constant.DATETIME_FORMAT)} --------------------------------------"); + destinationIPList = new List(); + timerPing.Tick += TimerPingTickEvent; + Init(); + } + + private void Init() + { + var listIP = ConfigurationManager.AppSettings[Constant.PING_TO_CONFIGURATION_KEY].Replace(" ", "").Split(','); + foreach (string ip in listIP) + { + destinationIPList.Add(ip); + } + thisPcIP = Util.GetLocalIPAddress(); + lblThisPcIP.Text = $"IP máy hiện tại: {thisPcIP}"; + lblDestinationPcIPs.Text = $"Ping đến các máy:\t{string.Join(", ", listIP)}"; + } + + private void TimerPingTickEvent(object sender, System.EventArgs e) + { + foreach (string ip in destinationIPList) + { + Util.IsPingable(thisPcIP, ip); + } + } + + private void PingToolForm_FormClosing(object sender, FormClosingEventArgs e) + { + HideForm(); + e.Cancel = true; + } + + private void PingToolForm_Resize(object sender, System.EventArgs e) + { + if (WindowState == FormWindowState.Minimized) + { + HideForm(); + } + } + + private void HideForm() + { + this.WindowState = FormWindowState.Minimized; + this.ShowInTaskbar = false; + this.Hide(); + } + } +} diff --git a/PingToolForm.resx b/PingToolForm.resx new file mode 100644 index 0000000..d506fea --- /dev/null +++ b/PingToolForm.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..43b53f3 --- /dev/null +++ b/Program.cs @@ -0,0 +1,97 @@ +using System; +using System.Diagnostics; +using System.Windows.Forms; +using System.Runtime.InteropServices; +using System.Threading; + +namespace PingTool +{ + static class Program + { + private const int WH_KEYBOARD_LL = 13; + private const int WM_KEYDOWN = 0x0100; + private static LowLevelKeyboardProc _proc = HookCallback; + private static IntPtr _hookID = IntPtr.Zero; + private static PingToolForm pingToolForm; + + [STAThread] + public static void Main() + { + _hookID = SetHook(_proc); + bool createdNew; + using (Mutex mutex = new Mutex(true, "PingTool", out createdNew)) + { + if (createdNew) + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + pingToolForm = new PingToolForm(); + Application.Run(pingToolForm); + } + else + { + Process current = Process.GetCurrentProcess(); + foreach (Process process in Process.GetProcessesByName(current.ProcessName)) + { + if (process.Id != current.Id) + { + MessageBox.Show("PingTool: Ứng dụng đã chạy"); + break; + } + } + } + } + UnhookWindowsHookEx(_hookID); + } + + private static IntPtr SetHook(LowLevelKeyboardProc proc) + { + using (Process curProcess = Process.GetCurrentProcess()) + using (ProcessModule curModule = curProcess.MainModule) + { + return SetWindowsHookEx(WH_KEYBOARD_LL, proc, GetModuleHandle(curModule.ModuleName), 0); + } + } + + private delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam); + + private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam) + { + if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN) + { + int vkCode = Marshal.ReadInt32(lParam); + if (Keys.Control == Control.ModifierKeys && Keys.F11 == (Keys)vkCode) + { + pingToolForm.Show(); + pingToolForm.ShowInTaskbar = true; + pingToolForm.WindowState = FormWindowState.Normal; + } + + if (Keys.Control == Control.ModifierKeys && Keys.F9 == (Keys)vkCode) + { + if (pingToolForm.ShowInTaskbar == true) + { + pingToolForm.Hide(); + pingToolForm.ShowInTaskbar = false; + pingToolForm.WindowState = FormWindowState.Minimized; + } + } + } + + return CallNextHookEx(_hookID, nCode, wParam, lParam); + } + + [DllImport(Constant.USER_32_DLL, CharSet = CharSet.Auto, SetLastError = true)] + private static extern IntPtr SetWindowsHookEx(int idHook, LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId); + + [DllImport(Constant.USER_32_DLL, CharSet = CharSet.Auto, SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool UnhookWindowsHookEx(IntPtr hhk); + + [DllImport(Constant.USER_32_DLL, CharSet = CharSet.Auto, SetLastError = true)] + private static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam); + + [DllImport(Constant.KERNEL_32_DLL, CharSet = CharSet.Auto, SetLastError = true)] + private static extern IntPtr GetModuleHandle(string lpModuleName); + } +} diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..3588f92 --- /dev/null +++ b/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("PingTool")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("PingTool")] +[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("15f8c9b5-6a48-4946-a85e-4c7701bc8eea")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs new file mode 100644 index 0000000..9359477 --- /dev/null +++ b/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace PingTool.Properties +{ + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PingTool.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/Properties/Resources.resx b/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Properties/Settings.Designer.cs b/Properties/Settings.Designer.cs new file mode 100644 index 0000000..1d96a1f --- /dev/null +++ b/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace PingTool.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Properties/Settings.settings b/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Util.cs b/Util.cs new file mode 100644 index 0000000..e4f3c4b --- /dev/null +++ b/Util.cs @@ -0,0 +1,65 @@ +using NLog; +using System; +using System.Configuration; +using System.Linq; +using System.Net; +using System.Net.NetworkInformation; +using System.Threading.Tasks; + +namespace PingTool +{ + public static class Util + { + public static bool IsPingable(string thisPcIP, string address, int timeOut = Constant.PING_TIMEOUT_MS) + { + var pingTask = Task.Factory.StartNew(async () => + { + bool isPingable = false; + Ping pinger = new Ping(); + Logger pingLogger = LogManager.GetLogger(Constant.PING_LOGGER_FILE_NAME); + try + { + PingReply reply = await pinger.SendPingAsync(address, timeOut); + isPingable = reply.Status == IPStatus.Success; + if (!isPingable) + { + pingLogger.Log(LogLevel.Info, $"{DateTime.Now.ToString(Constant.DATETIME_FORMAT)}\tPing from {thisPcIP} to {address} status: {reply.Status}. Respone Time: {reply.RoundtripTime}"); + } + } + catch (Exception ex) + { + isPingable = false; + pingLogger.Log(LogLevel.Error, $"{DateTime.Now.ToString(Constant.DATETIME_FORMAT)}\tPing from {thisPcIP} to {address} exception: ", ex.Message); + } + finally + { + pinger.Dispose(); + } + return isPingable; + }); + + return pingTask.Result.Result; + } + + public static string GetLocalIPAddress() + { + Logger pingLogger = LogManager.GetLogger(Constant.PING_LOGGER_FILE_NAME); + try + { + string prefixIP = ConfigurationManager.AppSettings[Constant.PREFIX_IP_CONFIGURATION_KEY]; + string hostName = Dns.GetHostName(); + var localIPAddress = Dns.GetHostEntry(hostName) + .AddressList.Where(x => x.ToString().Contains(prefixIP)) + .FirstOrDefault() + .ToString(); + pingLogger.Log(LogLevel.Info, $"{DateTime.Now.ToString(Constant.DATETIME_FORMAT)}\tLocal IP Address: {localIPAddress}"); + return localIPAddress; + } + catch (Exception ex) + { + pingLogger.Log(LogLevel.Error, $"{DateTime.Now.ToString(Constant.DATETIME_FORMAT)}\tException message: {ex.Message}"); + return string.Empty; + } + } + } +} diff --git a/packages.config b/packages.config new file mode 100644 index 0000000..93e25c6 --- /dev/null +++ b/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/packages/NLog.4.7.2/.signature.p7s b/packages/NLog.4.7.2/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..500900771a86395207d32408651a902146a6ee3d GIT binary patch literal 9471 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

%y%Tih0;ykN#VhVriND6d2fR7h(;CFdUw8pK!{ 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

&6QkKEBuNJqiPQ|{`W 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�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 + + + NLog + + + + + Indicates that the value of the marked element could be null sometimes, + so the check for null is necessary before its usage. + + + [CanBeNull] object Test() => null; + + void UseTest() { + var p = Test(); + var s = p.ToString(); // Warning: Possible 'System.NullReferenceException' + } + + + + + Indicates that the value of the marked element could never be null. + + + [NotNull] object Foo() { + return null; // Warning: Possible 'null' assignment + } + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can never be null. + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can be null. + + + + + Indicates that the marked method builds string by format pattern and (optional) arguments. + Parameter, which contains format string, should be given in constructor. The format string + should be in -like form. + + + [StringFormatMethod("message")] + void ShowError(string message, params object[] args) { /* do something */ } + + void Foo() { + ShowError("Failed: {0}"); // Warning: Non-existing argument in format string + } + + + + + Specifies which parameter of an annotated method should be treated as format-string + + + + + For a parameter that is expected to be one of the limited set of values. + Specify fields of which type should be used as values for this parameter. + + + + + Indicates that the function argument should be string literal and match one + of the parameters of the caller function. For example, ReSharper annotates + the parameter of . + + + void Foo(string param) { + if (param == null) + throw new ArgumentNullException("par"); // Warning: Cannot resolve symbol + } + + + + + Indicates that the method is contained in a type that implements + System.ComponentModel.INotifyPropertyChanged interface and this method + is used to notify that some property value changed. + + + The method should be non-static and conform to one of the supported signatures: + + NotifyChanged(string) + NotifyChanged(params string[]) + NotifyChanged{T}(Expression{Func{T}}) + NotifyChanged{T,U}(Expression{Func{T,U}}) + SetProperty{T}(ref T, T, string) + + + + public class Foo : INotifyPropertyChanged { + public event PropertyChangedEventHandler PropertyChanged; + + [NotifyPropertyChangedInvocator] + protected virtual void NotifyChanged(string propertyName) { ... } + + string _name; + + public string Name { + get { return _name; } + set { _name = value; NotifyChanged("LastName"); /* Warning */ } + } + } + + Examples of generated notifications: + + NotifyChanged("Property") + NotifyChanged(() => Property) + NotifyChanged((VM x) => x.Property) + SetProperty(ref myField, value, "Property") + + + + + + Describes dependency between method input and output. + + +

Function Definition Table syntax:

+ + FDT ::= FDTRow [;FDTRow]* + FDTRow ::= Input => Output | Output <= Input + Input ::= ParameterName: Value [, Input]* + Output ::= [ParameterName: Value]* {halt|stop|void|nothing|Value} + Value ::= true | false | null | notnull | canbenull + + If method has single input parameter, it's name could be omitted.
+ Using halt (or void/nothing, which is the same) for method output + means that the methods doesn't return normally (throws or terminates the process).
+ Value canbenull is only applicable for output parameters.
+ You can use multiple [ContractAnnotation] for each FDT row, or use single attribute + with rows separated by semicolon. There is no notion of order rows, all rows are checked + for applicability and applied per each program state tracked by R# analysis.
+
+ + + [ContractAnnotation("=> halt")] + public void TerminationMethod() + + + [ContractAnnotation("halt <= condition: false")] + public void Assert(bool condition, string text) // regular assertion method + + + [ContractAnnotation("s:null => true")] + public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty() + + + // A method that returns null if the parameter is null, + // and not null if the parameter is not null + [ContractAnnotation("null => null; notnull => notnull")] + public object Transform(object data) + + + [ContractAnnotation("=> true, result: notnull; => false, result: null")] + public bool TryParse(string s, out Person result) + + +
+ + + Indicates that marked element should be localized or not. + + + [LocalizationRequiredAttribute(true)] + class Foo { + string str = "my string"; // Warning: Localizable string + } + + + + + Indicates that the value of the marked type (or its derivatives) + cannot be compared using '==' or '!=' operators and Equals() + should be used instead. However, using '==' or '!=' for comparison + with null is always permitted. + + + [CannotApplyEqualityOperator] + class NoEquality { } + + class UsesNoEquality { + void Test() { + var ca1 = new NoEquality(); + var ca2 = new NoEquality(); + if (ca1 != null) { // OK + bool condition = ca1 == ca2; // Warning + } + } + } + + + + + When applied to a target attribute, specifies a requirement for any type marked + with the target attribute to implement or inherit specific type or types. + + + [BaseTypeRequired(typeof(IComponent)] // Specify requirement + class ComponentAttribute : Attribute { } + + [Component] // ComponentAttribute requires implementing IComponent interface + class MyComponent : IComponent { } + + + + + Indicates that the marked symbol is used implicitly (e.g. via reflection, in external library), + so this symbol will not be marked as unused (as well as by other usage inspections). + + + + + Should be used on attributes and causes ReSharper to not mark symbols marked with such attributes + as unused (as well as by other usage inspections) + + + + Only entity marked with attribute considered used. + + + Indicates implicit assignment to a member. + + + + Indicates implicit instantiation of a type with fixed constructor signature. + That means any unused constructor parameters won't be reported as such. + + + + Indicates implicit instantiation of a type. + + + + Specify what is considered used implicitly when marked + with or . + + + + Members of entity marked with attribute are considered used. + + + Entity marked with attribute and all its members considered used. + + + + This attribute is intended to mark publicly available API + which should not be removed and so is treated as used. + + + + + Tells code analysis engine if the parameter is completely handled when the invoked method is on stack. + If the parameter is a delegate, indicates that delegate is executed while the method is executed. + If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + + + + + Indicates that a method does not make any observable state changes. + The same as System.Diagnostics.Contracts.PureAttribute. + + + [Pure] int Multiply(int x, int y) => x * y; + + void M() { + Multiply(123, 42); // Waring: Return value of pure method is not used + } + + + + + Indicates that the return value of method invocation must be used. + + + + + Indicates the type member or parameter of some type, that should be used instead of all other ways + to get the value that type. This annotation is useful when you have some "context" value evaluated + and stored somewhere, meaning that all other ways to get this value must be consolidated with existing one. + + + class Foo { + [ProvidesContext] IBarService _barService = ...; + + void ProcessNode(INode node) { + DoSomething(node, node.GetGlobalServices().Bar); + // ^ Warning: use value of '_barService' field + } + } + + + + + Indicates that a parameter is a path to a file or a folder within a web project. + Path can be relative or absolute, starting from web root (~). + + + + + An extension method marked with this attribute is processed by ReSharper code completion + as a 'Source Template'. When extension method is completed over some expression, it's source code + is automatically expanded like a template at call site. + + + Template method body can contain valid source code and/or special comments starting with '$'. + Text inside these comments is added as source code when the template is applied. Template parameters + can be used either as additional method parameters or as identifiers wrapped in two '$' signs. + Use the attribute to specify macros for parameters. + + + In this example, the 'forEach' method is a source template available over all values + of enumerable types, producing ordinary C# 'foreach' statement and placing caret inside block: + + [SourceTemplate] + public static void forEach<T>(this IEnumerable<T> xs) { + foreach (var x in xs) { + //$ $END$ + } + } + + + + + + Allows specifying a macro for a parameter of a source template. + + + You can apply the attribute on the whole method or on any of its additional parameters. The macro expression + is defined in the property. When applied on a method, the target + template parameter is defined in the property. To apply the macro silently + for the parameter, set the property value = -1. + + + Applying the attribute on a source template method: + + [SourceTemplate, Macro(Target = "item", Expression = "suggestVariableName()")] + public static void forEach<T>(this IEnumerable<T> collection) { + foreach (var item in collection) { + //$ $END$ + } + } + + Applying the attribute on a template method parameter: + + [SourceTemplate] + public static void something(this Entity x, [Macro(Expression = "guid()", Editable = -1)] string newguid) { + /*$ var $x$Id = "$newguid$" + x.ToString(); + x.DoSomething($x$Id); */ + } + + + + + + Allows specifying a macro that will be executed for a source template + parameter when the template is expanded. + + + + + Allows specifying which occurrence of the target parameter becomes editable when the template is deployed. + + + If the target parameter is used several times in the template, only one occurrence becomes editable; + other occurrences are changed synchronously. To specify the zero-based index of the editable occurrence, + use values >= 0. To make the parameter non-editable when the template is expanded, use -1. + > + + + + Identifies the target parameter of a source template if the + is applied on a template method. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC action. If applied to a method, the MVC action name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC area. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is + an MVC controller. If applied to a method, the MVC controller name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC Master. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC model type. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is an MVC + partial view. If applied to a method, the MVC partial view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Allows disabling inspections for MVC views within a class or a method. + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC display template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.DisplayExtensions.DisplayForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC editor template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.EditorExtensions.EditorForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC template. + Use this attribute for custom wrappers similar to + System.ComponentModel.DataAnnotations.UIHintAttribute(System.String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component. If applied to a method, the MVC view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Controller.View(Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component name. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component view. If applied to a method, the MVC view component view name is default. + + + + + ASP.NET MVC attribute. When applied to a parameter of an attribute, + indicates that this parameter is an MVC action name. + + + [ActionName("Foo")] + public ActionResult Login(string returnUrl) { + ViewBag.ReturnUrl = Url.Action("Foo"); // OK + return RedirectToAction("Bar"); // Error: Cannot resolve action + } + + + + + Razor attribute. Indicates that a parameter or a method is a Razor section. + Use this attribute for custom wrappers similar to + System.Web.WebPages.WebPageBase.RenderSection(String). + + + + + Indicates how method, constructor invocation or property access + over collection type affects content of the collection. + + + + Method does not use or modify content of the collection. + + + Method only reads content of the collection but does not modify it. + + + Method can change content of the collection but does not add new elements. + + + Method can add new elements to the collection. + + + + Indicates that the marked method is assertion method, i.e. it halts control flow if + one of the conditions is satisfied. To set the condition, mark one of the parameters with + attribute. + + + + + Indicates the condition parameter of the assertion method. The method itself should be + marked by attribute. The mandatory argument of + the attribute is the assertion type. + + + + + Specifies assertion type. If the assertion method argument satisfies the condition, + then the execution continues. Otherwise, execution is assumed to be halted. + + + + Marked parameter should be evaluated to true. + + + Marked parameter should be evaluated to false. + + + Marked parameter should be evaluated to null value. + + + Marked parameter should be evaluated to not null value. + + + + Indicates that the marked method unconditionally terminates control flow execution. + For example, it could unconditionally throw exception. + + + + + Indicates that method is pure LINQ method, with postponed enumeration (like Enumerable.Select, + .Where). This annotation allows inference of [InstantHandle] annotation for parameters + of delegate type by analyzing LINQ method chains. + + + + + Indicates that IEnumerable, passed as parameter, is not enumerated. + + + + + Indicates that parameter is regular expression pattern. + + + + + Prevents the Member Reordering feature from tossing members of the marked class. + + + The attribute must be mentioned in your member reordering patterns + + + + + XAML attribute. Indicates the type that has ItemsSource property and should be treated + as ItemsControl-derived type, to enable inner items DataContext type resolve. + + + + + XAML attribute. Indicates the property of some BindingBase-derived type, that + is used to bind some item of ItemsControl-derived type. This annotation will + enable the DataContext type resolve for XAML bindings for such properties. + + + Property should have the tree ancestor of the ItemsControl type or + marked with the attribute. + + + + + Support implementation of + + + + + + + + + + + + + + + + + Asynchronous continuation delegate - function invoked at the end of asynchronous + processing. + + Exception during asynchronous processing or null if no exception + was thrown. + + + + Helpers for asynchronous operations. + + + + + Iterates over all items in the given collection and runs the specified action + in sequence (each action executes only after the preceding one has completed without an error). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Repeats the specified asynchronous action multiple times and invokes asynchronous continuation at the end. + + The repeat count. + The asynchronous continuation to invoke at the end. + The action to invoke. + + + + Modifies the continuation by pre-pending given action to execute just before it. + + The async continuation. + The action to pre-pend. + Continuation which will execute the given action before forwarding to the actual continuation. + + + + Attaches a timeout to a continuation which will invoke the continuation when the specified + timeout has elapsed. + + The asynchronous continuation. + The timeout. + Wrapped continuation. + + + + Iterates over all items in the given collection and runs the specified action + in parallel (each action executes on a thread from thread pool). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Runs the specified asynchronous action synchronously (blocks until the continuation has + been invoked). + + The action. + + Using this method is not recommended because it will block the calling thread. + + + + + Wraps the continuation with a guard which will only make sure that the continuation function + is invoked only once. + + The asynchronous continuation. + Wrapped asynchronous continuation. + + + + Gets the combined exception from all exceptions in the list. + + The exceptions. + Combined exception or null if no exception was thrown. + + + + Disposes the Timer, and waits for it to leave the Timer-callback-method + + The Timer object to dispose + Timeout to wait (TimeSpan.Zero means dispose without waiting) + Timer disposed within timeout (true/false) + + + + Asynchronous action. + + Continuation to be invoked at the end of action. + + + + Asynchronous action with one argument. + + Type of the argument. + Argument to the action. + Continuation to be invoked at the end of action. + + + + Represents the logging event with asynchronous continuation. + + + + + Initializes a new instance of the struct. + + The log event. + The continuation. + + + + Gets the log event. + + + + + Gets the continuation. + + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + A value of true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + String Conversion Helpers + + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + Output value + Default value + Returns false if the input value could not be parsed + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + The type of the enum + Output value. Null if parse failed + + + + Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. A parameter specifies whether the operation is case-sensitive. The return value indicates whether the conversion succeeded. + + The enumeration type to which to convert value. + The string representation of the enumeration name or underlying value to convert. + true to ignore case; false to consider case. + When this method returns, result contains an object of type TEnum whose value is represented by value if the parse operation succeeds. If the parse operation fails, result contains the default value of the underlying type of TEnum. Note that this value need not be a member of the TEnum enumeration. This parameter is passed uninitialized. + true if the value parameter was converted successfully; otherwise, false. + Wrapper because Enum.TryParse is not present in .net 3.5 + + + + Enum.TryParse implementation for .net 3.5 + + + + Don't uses reflection + + + + Enables to extract extra context details for + + + + + Name of context + + + + + The current LogFactory next to LogManager + + + + + NLog internal logger. + + Writes to file, console or custom text writer (see ) + + + Don't use as that can lead to recursive calls - stackoverflow + + + + + Gets a value indicating whether internal log includes Trace messages. + + + + + Gets a value indicating whether internal log includes Debug messages. + + + + + Gets a value indicating whether internal log includes Info messages. + + + + + Gets a value indicating whether internal log includes Warn messages. + + + + + Gets a value indicating whether internal log includes Error messages. + + + + + Gets a value indicating whether internal log includes Fatal messages. + + + + + Logs the specified message without an at the Trace level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + Log message. + + + + Logs the specified message without an at the Trace level. + will be only called when logging is enabled for level Trace. + + Function that returns the log message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Trace level. + will be only called when logging is enabled for level Trace. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Debug level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Debug level. + + Log message. + + + + Logs the specified message without an at the Debug level. + will be only called when logging is enabled for level Debug. + + Function that returns the log message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Debug level. + will be only called when logging is enabled for level Debug. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Info level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Info level. + + Log message. + + + + Logs the specified message without an at the Info level. + will be only called when logging is enabled for level Info. + + Function that returns the log message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Info level. + will be only called when logging is enabled for level Info. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Warn level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Warn level. + + Log message. + + + + Logs the specified message without an at the Warn level. + will be only called when logging is enabled for level Warn. + + Function that returns the log message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Warn level. + will be only called when logging is enabled for level Warn. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Error level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Error level. + + Log message. + + + + Logs the specified message without an at the Error level. + will be only called when logging is enabled for level Error. + + Function that returns the log message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Error level. + will be only called when logging is enabled for level Error. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Fatal level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Fatal level. + + Log message. + + + + Logs the specified message without an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Function that returns the log message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Exception to be logged. + Function that returns the log message. + + + + Initializes static members of the InternalLogger class. + + + + + Set the config of the InternalLogger with defaults and config. + + + + + Gets or sets the minimal internal log level. + + If set to , then messages of the levels , and will be written. + + + + Gets or sets a value indicating whether internal messages should be written to the console output stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the console error stream. + + Your application must be a console application. + + + + Gets or sets the file path of the internal log file. + + A value of value disables internal logging to a file. + + + + Gets or sets the text writer that will receive internal logs. + + + + + Event written to the internal log. + Please note that the event is not triggered when then event hasn't the minimal log level set by + + + + + Gets or sets a value indicating whether timestamp should be included in internal log output. + + + + + Is there an thrown when writing the message? + + + + + Logs the specified message without an at the specified level. + + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the specified level. + + Log level. + Log message. + + + + Logs the specified message without an at the specified level. + will be only called when logging is enabled for level . + + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + will be only called when logging is enabled for level . + + Exception to be logged. + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Log message. + + + + Write to internallogger. + + optional exception to be logged. + level + message + optional args for + + + + Create log line with timestamp, exception message etc (if configured) + + + + + Determine if logging should be avoided because of exception type. + + The exception to check. + true if logging should be avoided; otherwise, false. + + + + Determine if logging is enabled for given LogLevel + + The for the log event. + true if logging is enabled; otherwise, false. + + + + Determine if logging is enabled. + + true if logging is enabled; otherwise, false. + + + + Write internal messages to the log file defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged only when the property is true, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged when the property is true, otherwise the + method has no effect. + + + + + Logs the assembly version and file version of the given Assembly. + + The assembly to log. + + + + A message has been written to the internal logger + + + + + The rendered message + + + + + The log level + + + + + The exception. Could be null. + + + + + The type that triggered this internal log event, for example the FileTarget. + This property is not always populated. + + + + + The context name that triggered this internal log event, for example the name of the Target. + This property is not always populated. + + + + + + + + A cyclic buffer of object. + + + + + Initializes a new instance of the class. + + Buffer size. + Whether buffer should grow as it becomes full. + The maximum number of items that the buffer can grow to. + + + + Gets the capacity of the buffer + + + + + Gets the number of items in the buffer + + + + + Adds the specified log event to the buffer. + + Log event. + The number of items in the buffer. + + + + Gets the array of events accumulated in the buffer and clears the buffer as one atomic operation. + + Events in the buffer. + + + + Condition and expression. + + + + + Initializes a new instance of the class. + + Left hand side of the AND expression. + Right hand side of the AND expression. + + + + Gets the left hand side of the AND expression. + + + + + Gets the right hand side of the AND expression. + + + + + Returns a string representation of this expression. + + A concatenated '(Left) and (Right)' string. + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the conjunction operator. + + + + Exception during evaluation of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Base class for representing nodes in condition expression trees. + + + + + Converts condition text to a condition expression tree. + + Condition text to be converted. + Condition expression tree. + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition layout expression (represented by a string literal + with embedded ${}). + + + + + Initializes a new instance of the class. + + The layout. + + + + Gets the layout. + + The layout. + + + + Returns a string representation of this expression. + + String literal in single quotes. + + + + Evaluates the expression by calculating the value + of the layout in the specified evaluation context. + + Evaluation context. + The value of the layout. + + + + Condition level expression (represented by the level keyword). + + + + + Returns a string representation of the expression. + + The 'level' string. + + + + Evaluates to the current log level. + + Evaluation context. Ignored. + The object representing current log level. + + + + Condition literal expression (numeric, LogLevel.XXX, true or false). + + + + + Initializes a new instance of the class. + + Literal value. + + + + Gets the literal value. + + The literal value. + + + + Returns a string representation of the expression. + + The literal value. + + + + Evaluates the expression. + + Evaluation context. + The literal value as passed in the constructor. + + + + Condition logger name expression (represented by the logger keyword). + + + + + Returns a string representation of this expression. + + A logger string. + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + Returns a string representation of this expression. + + The 'message' string. + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Initializes a new instance of the class. + + Condition method name. + + + + Condition method invocation expression (represented by method(p1,p2,p3) syntax). + + + + + Initializes a new instance of the class. + + Name of the condition method. + of the condition method. + Precompiled delegate of the condition method. + The method parameters. + + + + Gets the method info. + + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + A bunch of utility methods (mostly predicates) which can be used in + condition expressions. Partially inspired by XPath 1.0. + + + + + Compares two values for equality. + + The first value. + The second value. + true when two objects are equal, false otherwise. + + + + Compares two strings for equality. + + The first string. + The second string. + Optional. If true, case is ignored; if false (default), case is significant. + true when two strings are equal, false otherwise. + + + + Gets or sets a value indicating whether the second string is a substring of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a substring of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a prefix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a suffix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Returns the length of a string. + + A string whose lengths is to be evaluated. + The length of the string. + + + + Indicates whether the specified regular expression finds a match in the specified input string. + + The string to search for a match. + The regular expression pattern to match. + A string consisting of the desired options for the test. The possible values are those of the separated by commas. + true if the regular expression finds a match; otherwise, false. + + + + + + + + + + + Marks the class as containing condition methods. + + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Gets the expression to be negated. + + The expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition or expression. + + + + + Initializes a new instance of the class. + + Left hand side of the OR expression. + Right hand side of the OR expression. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + Exception during parsing of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Condition parser. Turns a string representation of condition expression + into an expression tree. + + + + + Initializes a new instance of the class. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + Instance of used to resolve references to condition methods and layout renderers. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + + Try stringed keyword to + + + + success? + + + + Parse number + + negative number? minus should be parsed first. + + + + + Condition relational (==, !=, <, <=, + > or >=) expression. + + + + + Initializes a new instance of the class. + + The left expression. + The right expression. + The relational operator. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Gets the relational operator. + + The operator. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Compares the specified values using specified relational operator. + + The first value. + The second value. + The relational operator. + Result of the given relational operator. + + + + Promote values to the type needed for the comparision, e.g. parse a string to int. + + + + + + + Promotes to type + + + + success? + + + + Try to promote both values. First try to promote to , + when failed, try to . + + + + + + Get the order for the type for comparision. + + + index, 0 to max int. Lower is first + + + + Dictionary from type to index. Lower index should be tested first. + + + + + Build the dictionary needed for the order of the types. + + + + + + Get the string representing the current + + + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + Hand-written tokenizer for conditions. + + + + + Initializes a new instance of the class. + + The string reader. + + + + Gets the type of the token. + + The type of the token. + + + + Gets the token value. + + The token value. + + + + Gets the value of a string token. + + The string token value. + + + + Asserts current token type and advances to the next token. + + Expected token type. + If token type doesn't match, an exception is thrown. + + + + Asserts that current token is a keyword and returns its value and advances to the next token. + + Keyword value. + + + + Gets or sets a value indicating whether current keyword is equal to the specified value. + + The keyword. + + A value of true if current keyword is equal to the specified value; otherwise, false. + + + + + Gets or sets a value indicating whether the tokenizer has reached the end of the token stream. + + + A value of true if the tokenizer has reached the end of the token stream; otherwise, false. + + + + + Gets or sets a value indicating whether current token is a number. + + + A value of true if current token is a number; otherwise, false. + + + + + Gets or sets a value indicating whether the specified token is of specified type. + + The token type. + + A value of true if current token is of specified type; otherwise, false. + + + + + Gets the next token and sets and properties. + + + + + Try the comparison tokens (greater, smaller, greater-equals, smaller-equals) + + current char + is match + + + + Try the logical tokens (and, or, not, equals) + + current char + is match + + + + Mapping between characters and token types for punctuations. + + + + + Initializes a new instance of the CharToTokenType struct. + + The character. + Type of the token. + + + + Token types for condition expressions. + + + + + Marks the class or a member as advanced. Advanced classes and members are hidden by + default in generated documentation. + + + + + Initializes a new instance of the class. + + + + + Identifies that the output of layout or layout render does not change for the lifetime of the current appdomain. + + + A layout(renderer) could be converted to a literal when: + - The layout and all layout properties are SimpleLayout or [AppDomainFixedOutput] + + Recommendation: Apply this attribute to a layout or layout-renderer which have the result only changes by properties of type Layout. + + + + + Used to mark configurable parameters which are arrays. + Specifies the mapping between XML elements and .NET types. + + + + + Initializes a new instance of the class. + + The type of the array item. + The XML element name that represents the item. + + + + Gets the .NET type of the array item. + + + + + Gets the XML element name. + + + + + An assembly is trying to load. + + + + + New event args + + + + + + The assembly that is trying to load. + + + + + Constructs a new instance the configuration item (target, layout, layout renderer, etc.) given its type. + + Type of the item. + Created object of the specified type. + + + + Provides registration information for named items (targets, layouts, layout renderers, etc.) managed by NLog. + + Everything of an assembly could be loaded by + + + + + Called before the assembly will be loaded. + + + + + Initializes a new instance of the class. + + The assemblies to scan for named items. + + + + Gets or sets default singleton instance of . + + + This property implements lazy instantiation so that the is not built before + the internal logger is configured. + + + + + Gets or sets the creator delegate used to instantiate configuration objects. + + + By overriding this property, one can enable dependency injection or interception for created objects. + + + + + Gets the factory. + + The target factory. + + + + Gets the factory. + + The filter factory. + + + + gets the factory + + not using due to backwards-compatibility. + + + + + Gets the factory. + + The layout renderer factory. + + + + Gets the factory. + + The layout factory. + + + + Gets the ambient property factory. + + The ambient property factory. + + + + Legacy interface, no longer used by the NLog engine + + + + + Gets or sets the JSON serializer to use with or + + + + + Gets or sets the string serializer to use with + + + + + Gets or sets the custom object-type transformation for use in , or + + + + + Gets or sets the parameter converter to use with , or + + + + + Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) + + + - Null (Auto Detect) : NLog-parser checks for positional parameters, and will then fallback to string.Format-rendering. + - True: Always performs the parsing of and rendering of using the NLog-parser (Allows custom formatting with ) + - False: Always performs parsing and rendering using string.Format (Fastest if not using structured logging) + + + + + Gets the time source factory. + + The time source factory. + + + + Gets the condition method factory. + + The condition method factory. + + + + Gets the condition method factory (precompiled) + + The condition method factory. + + + + Registers named items from the assembly. + + The assembly. + + + + Registers named items from the assembly. + + The assembly. + Item name prefix. + + + + Call Preload for NLogPackageLoader + + + Every package could implement a class "NLogPackageLoader" (namespace not important) with the public static method "Preload" (no arguments) + This method will be called just before registering all items in the assembly. + + + + + + Call the Preload method for . The Preload method must be static. + + + + + + Clears the contents of all factories. + + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Builds the default configuration item factory. + + Default factory. + + + + Registers items in NLog.Extended.dll using late-bound types, so that we don't need a reference to NLog.Extended.dll. + + + + + Attribute used to mark the default parameters for layout renderers. + + + + + Initializes a new instance of the class. + + + + + Dynamic filtering with a positive list of enabled levels + + + + + Dynamic filtering with a minlevel and maxlevel range + + + + + Format of the exception output to the specific target. + + + + + Appends the Message of an Exception to the specified target. + + + + + Appends the type of an Exception to the specified target. + + + + + Appends the short type of an Exception to the specified target. + + + + + Appends the result of calling ToString() on an Exception to the specified target. + + + + + Appends the method name from Exception's stack trace to the specified target. + + + + + Appends the stack trace from an Exception to the specified target. + + + + + Appends the contents of an Exception's Data property to the specified target. + + + + + Destructure the exception (usually into JSON) + + + + + Appends the from the application or the object that caused the error. + + + + + Appends the from the application or the object that caused the error. + + + + + Appends any additional properties that specific type of Exception might have. + + + + + Factory for class-based items. + + The base type of each item. + The type of the attribute used to annotate items. + + + + Scans the assembly. + + The types to scan. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the item based on a type name. + + Name of the item. + Name of the type. + + + + Clears the contents of the factory. + + + + + Registers a single type definition. + + The item name. + The type of the item. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Creates an item instance. + + The name of the item. + Created item. + + + + Factory specialized for s. + + + + + Clear all func layouts + + + + + Register a layout renderer with a callback function. + + Name of the layoutrenderer, without ${}. + the renderer that renders the value. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides means to populate factories of named items (such as targets, layouts, layout renderers, etc.). + + + + + Implemented by objects which support installation and uninstallation. + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Interface for accessing configuration details + + + + + Name of the config section + + + + + Configuration Key/Value Pairs + + + + + Child config sections + + + + + Interface for loading NLog + + + + + Finds and loads the NLog configuration + + LogFactory that owns the NLog configuration + Name of NLog.config file (optional) + NLog configuration (or null if none found) + + + + Notifies when LoggingConfiguration has been successfully applied + + LogFactory that owns the NLog configuration + NLog Config + + + + Get file paths (including filename) for the possible NLog config files. + + Name of NLog.config file (optional) + The file paths to the possible config file + + + + Level enabled flags for each LogLevel ordinal + + + + + Converts the filter into a simple + + + + + Represents a factory of named items (such as targets, layouts, layout renderers, etc.). + + Base type for each item instance. + Item definition type (typically or ). + + + + Registers new item definition. + + Name of the item. + Item definition. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Creates item instance. + + Name of the item. + Newly created item instance. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides context for install/uninstall operations. + + + + + Mapping between log levels and console output colors. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log output. + + + + Gets or sets the installation log level. + + + + + Gets or sets a value indicating whether to ignore failures during installation. + + + + + Whether installation exceptions should be rethrown. If IgnoreFailures is set to true, + this property has no effect (there are no exceptions to rethrow). + + + + + Gets the installation parameters. + + + + + Gets or sets the log output. + + + + + Logs the specified trace message. + + The message. + The arguments. + + + + Logs the specified debug message. + + The message. + The arguments. + + + + Logs the specified informational message. + + The message. + The arguments. + + + + Logs the specified warning message. + + The message. + The arguments. + + + + Logs the specified error message. + + The message. + The arguments. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Creates the log event which can be used to render layouts during installation/uninstallations. + + Log event info object. + + + + Convert object-value into specified type + + + + + Parses the input value and converts into the wanted type + + Input Value + Wanted Type + Format to use when parsing + Culture to use when parsing + Output value with wanted type + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for extension loading + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for enabling NLog + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + LoggingConfiguration being built + + + + + Interface for fluent setup of LogFactory options for logevent serialization + + + + + LogFactory under configuration + + + + + Encapsulates and the logic to match the actual logger name + All subclasses defines immutable objects. + Concrete subclasses defines various matching rules through + + + + + Creates a concrete based on . + + + Rules used to select the concrete implementation returned: + + if is null => returns (never matches) + if doesn't contains any '*' nor '?' => returns (matches only on case sensitive equals) + if == '*' => returns (always matches) + if doesn't contain '?' + + if contains exactly 2 '*' one at the beginning and one at the end (i.e. "*foobar*) => returns + if contains exactly 1 '*' at the beginning (i.e. "*foobar") => returns + if contains exactly 1 '*' at the end (i.e. "foobar*") => returns + + + returns + + + + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + A concrete + + + + Returns the argument passed to + + + + + Checks whether given name matches the logger name pattern. + + String to be matched. + A value of when the name matches, otherwise. + + + + Defines a that never matches. + Used when pattern is null + + + + + Defines a that always matches. + Used when pattern is '*' + + + + + Defines a that matches with a case-sensitive Equals + Used when pattern is a string without wildcards '?' '*' + + + + + Defines a that matches with a case-sensitive StartsWith + Used when pattern is a string like "*foobar" + + + + + Defines a that matches with a case-sensitive EndsWith + Used when pattern is a string like "foobar*" + + + + + Defines a that matches with a case-sensitive Contains + Used when pattern is a string like "*foobar*" + + + + + Defines a that matches with a complex wildcards combinations: + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + used when pattern is a string containing any number of '?' or '*' in any position + i.e. "*Server[*].Connection[?]" + + + + + Keeps logging configuration and provides simple API to modify it. + + This class is thread-safe..ToList() is used for that purpose. + + + + Variables defined in xml or in API. name is case case insensitive. + + + + + Gets the factory that will be configured + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete on NLog 4.1 and it may be removed in a future release. + + + + Gets the variables defined in the configuration. + + + + + Gets a collection of named targets specified in the configuration. + + + A list of named targets. + + + Unnamed targets (such as those wrapped by other targets) are not returned. + + + + + Gets the collection of file names which should be watched for changes by NLog. + + + + + Gets the collection of logging rules. + + + + + Gets or sets the default culture info to use as . + + + Specific culture info or null to use + + + + + Gets all targets. + + + + + Compare objects based on their name. + + This property is use to cache the comparer object. + + + + Defines methods to support the comparison of objects for equality based on their name. + + + + + Registers the specified target object. The name of the target is read from . + + + The target object with a non + + when is + + + + Registers the specified target object under a given name. + + Name of the target. + The target object. + when is + when is + + + + Finds the target with the specified name. + + + The name of the target to be found. + + + Found target or when the target is not found. + + + + + Finds the target with the specified name and specified type. + + + The name of the target to be found. + + Type of the target + + Found target or when the target is not found of not of type + + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for all loglevels. + + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Finds the logging rule with the specified name. + + The name of the logging rule to be found. + Found logging rule or when not found. + + + + Removes the specified named logging rule. + + The name of the logging rule to be removed. + Found one or more logging rule to remove, or when not found. + + + + Called by LogManager when one of the log configuration files changes. + + + A new instance of that represents the updated configuration. + + + + + Removes the specified named target. + + Name of the target. + + + + Installs target-specific objects on current system. + + The installation context. + + Installation typically runs with administrative permissions. + + + + + Uninstalls target-specific objects from current system. + + The installation context. + + Uninstallation typically runs with administrative permissions. + + + + + Closes all targets and releases any unmanaged resources. + + + + + Log to the internal (NLog) logger the information about the and associated with this instance. + + + The information are only recorded in the internal logger if Debug level is enabled, otherwise nothing is + recorded. + + + + + Validates the configuration. + + + + + Copies all variables from provided dictionary into current configuration variables. + + Master variables dictionary + + + + Replace a simple variable with a value. The original value is removed and thus we cannot redo this in a later stage. + + + + + + + Checks whether unused targets exist. If found any, just write an internal log at Warn level. + If initializing not started or failed, then checking process will be canceled + + + + + + + + Arguments for events. + + + + + Initializes a new instance of the class. + + The new configuration. + The old configuration. + + + + Gets the old configuration. + + The old configuration. + + + + Gets the new configuration. + + The new configuration. + + + + Gets the new configuration + + The new configuration. + + + + Gets the old configuration + + The old configuration. + + + + Gets the optional boolean attribute value. + + + Name of the attribute. + Default value to return if the attribute is not found or if there is a parse error + Boolean attribute value or default. + + + + Remove the namespace (before :) + + + x:a, will be a + + + + + + + Enables loading of NLog configuration from a file + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Loads NLog configuration from + + + + + Constructor + + + + + + Loads NLog configuration from provided config section + + + + + + + Builds list with unique keys, using last value of duplicates. High priority keys placed first. + + + + + + + Parse loglevel, but don't throw if exception throwing is disabled + + Name of attribute for logging. + Value of parse. + Used if there is an exception + + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Parse {Rules} xml element + + + Rules are added to this parameter. + + + + Parse {Logger} xml element + + + + + + Parse boolean + + Name of the property for logging. + value to parse + Default value to return if the parse failed + Boolean attribute value or default. + + + + Represents a logging rule. An equivalent of <logger /> configuration element. + + + + + Create an empty . + + + + + Create an empty . + + + + + Create a new with a and which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a new with a which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a (disabled) . You should call or see cref="EnableLoggingForLevels"/> to enable logging. + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Target to be written to when the rule matches. + + + + Rule identifier to allow rule lookup + + + + + Gets a collection of targets that should be written to when this rule matches. + + + + + Gets a collection of child rules to be evaluated when this rule matches. + + + + + Gets a collection of filters to be checked before writing to targets. + + + + + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + + Gets or sets logger name pattern. + + + Logger name pattern used by to check if a logger name matches this rule. + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + + + + Gets the collection of log levels enabled by this rule. + + + + + Default action if none of the filters match + + + + + Enables logging for a particular level. + + Level to be enabled. + + + + Enables logging for a particular levels between (included) and . + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Disables logging for a particular level. + + Level to be disabled. + + + + Disables logging for particular levels between (included) and . + + Minimum log level to be disables. + Maximum log level to de disabled. + + + + Enables logging the levels between (included) and . All the other levels will be disabled. + + >Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Returns a string representation of . Used for debugging. + + + A that represents the current . + + + + + Checks whether te particular log level is enabled for this rule. + + Level to be checked. + A value of when the log level is enabled, otherwise. + + + + Checks whether given name matches the . + + String to be matched. + A value of when the name matches, otherwise. + + + + Default filtering with static level config + + + + + Factory for locating methods. + + + + + Initializes a new instance of the class. + + Helper method to extract relevant methods from type + + + + Scans the assembly for classes marked with expected class + and methods marked with expected and adds them + to the factory. + + The types to scan. + The prefix to use for names. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Scans a type for relevant methods with their symbolic names + + Include types that are marked with this attribute + Include methods that are marked with this attribute + Class Type to scan + Collection of methods with their symbolic names + + + + Clears contents of the factory. + + + + + Registers the definition of a single method. + + The method name. + The method info. + + + + Registers the definition of a single method. + + The method name. + The method info. + The precompiled method delegate. + + + + Tries to retrieve method by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Tries to retrieve method-delegate by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Retrieves method by name. + + Method name. + MethodInfo object. + + + + Retrieves method by name. + + Method name. + Method delegate object. + + + + Tries to get method definition. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Marks the layout or layout renderer depends on mutable objects from the LogEvent + + This can be or + + + + + Attaches a simple name to an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The name of the item. + + + + Gets the name of the item. + + The name of the item. + + + + Indicates NLog should not scan this property during configuration. + + + + + Initializes a new instance of the class. + + + + + Marks the object as configuration item for NLog. + + + + + Initializes a new instance of the class. + + + + + Represents simple XML element with case-insensitive attribute semantics. + + + + + Initializes a new instance of the class. + + The reader to initialize element from. + + + + Prevents a default instance of the class from being created. + + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + Last error occured during configuration read + + + + + Returns children elements with the specified element name. + + Name of the element. + Children elements with the specified element name. + + + + Asserts that the name of the element is among specified element names. + + The allowed names. + + + + Returns all parsing errors from current and all child elements. + + + + + Special attribute we could ignore + + + + + Default implementation of + + + + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Provides simple programmatic configuration API used for trivial logging cases. + + Warning, these methods will overwrite the current config. + + + + + Configures NLog for console logging so that all messages above and including + the level are output to the console. + + + + + Configures NLog for console logging so that all messages above and including + the specified level are output to the console. + + The minimal logging level. + + + + Configures NLog for to log to the specified target so that all messages + above and including the level are output. + + The target to log all messages to. + + + + Configures NLog for to log to the specified target so that all messages + above and including the specified level are output. + + The target to log all messages to. + The minimal logging level. + + + + Configures NLog for file logging so that all messages above and including + the level are written to the specified file. + + Log file name. + + + + Configures NLog for file logging so that all messages above and including + the specified level are written to the specified file. + + Log file name. + The minimal logging level. + + + + Value indicating how stack trace should be captured when processing the log event. + + + + + Stack trace should not be captured. + + + + + Stack trace should be captured without source-level information. + + + + + Stack trace should be captured including source-level information such as line numbers. + + + + + Capture maximum amount of the stack trace information supported on the platform. + + + + + Marks the layout or layout renderer as thread independent - it producing correct results + regardless of the thread it's running on. + + Without this attribute everything is rendered on the main thread. + + + If this attribute is set on a layout, it could be rendered on the another thread. + This could be more efficient as it's skipped when not needed. + + If context like HttpContext.Current is needed, which is only available on the main thread, this attribute should not be applied. + + See the AsyncTargetWrapper and BufferTargetWrapper with the , using + + Apply this attribute when: + - The result can we rendered in another thread. Delaying this could be more efficient. And/Or, + - The result should not be precalculated, for example the target sends some extra context information. + + + + + Marks the layout or layout renderer as thread safe - it producing correct results + regardless of the number of threads it's running on. + + Without this attribute then the target concurrency will be reduced + + + + + A class for configuring NLog through an XML configuration file + (App.config style or App.nlog style). + + Parsing of the XML file is also implemented in this class. + + + - This class is thread-safe..ToList() is used for that purpose. + - Update TemplateXSD.xml for changes outside targets + + + + + Prefix for assets in Xamarin Android + + + + + Initializes a new instance of the class. + + Configuration file to be read. + + + + Initializes a new instance of the class. + + Configuration file to be read. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + XML reader to read from. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + The XML contents. + Name of the XML file. + The to which to apply any applicable configuration values. + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + NLog LogFactory + + + + Did the Succeeded? true= success, false= error, null = initialize not started yet. + + + + + Gets or sets a value indicating whether all of the configuration files + should be watched for changes and reloaded automatically when changed. + + + + + Gets the collection of file names which should be watched for changes by NLog. + This is the list of configuration files processed. + If the autoReload attribute is not set it returns empty collection. + + + + + Re-reads the original configuration file and returns the new object. + + The new object. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Create XML reader for (xml config) file. + + filepath + reader or null if filename is empty. + + + + Initializes the configuration. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Checks whether any error during XML configuration parsing has occured. + If there are any and ThrowConfigExceptions or ThrowExceptions + setting is enabled - throws NLogConfigurationException, otherwise + just write an internal log at Warn level. + + Root NLog configuration xml element + + + + Add a file with configuration. Check if not already included. + + + + + + + Parse the root + + + path to config file. + The default value for the autoReload option. + + + + Parse {configuration} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parse {NLog} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Include (multiple) files by filemask, e.g. *.nlog + + base directory in case if is relative + relative or absolute fileMask + + + + + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language + described
here. + + + + + Gets or sets the condition expression. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + An abstract filter class. Provides a way to eliminate log messages + based on properties other than logger name and log level. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the action to be taken when filter matches. + + + + + + Gets the result of evaluating filter against given log event. + + The log event. + Filter result. + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Marks class as a layout renderer and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the filter. + + + + Filter result. + + + + + The filter doesn't want to decide whether to log or discard the message. + + + + + The message should be logged. + + + + + The message should not be logged. + + + + + The message should be logged and processing should be finished. + + + + + The message should not be logged and processing should be finished. + + + + + A base class for filters that are based on comparing a value to a layout. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout to be used to filter log messages. + + The layout. + + + + + Matches when the calculated layout contains the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets the substring to be matched. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets a string to compare the layout to. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches the provided filter-method + + + + + Initializes a new instance of the class. + + + + + + + + Matches when the calculated layout does NOT contain the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets the substring to be matched. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is NOT equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a string to compare the layout to. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the result of the calculated layout has been repeated a moment ago + + + + + How long before a filter expires, and logging is accepted again + + + + + + Max length of filter values, will truncate if above limit + + + + + + Applies the configured action to the initial logevent that starts the timeout period. + Used to configure that it should ignore all events until timeout. + + + + + + Max number of unique filter values to expect simultaneously + + + + + + Default number of unique filter values to expect, will automatically increase if needed + + + + + + Insert FilterCount value into when an event is no longer filtered + + + + + + Append FilterCount to the when an event is no longer filtered + + + + + + Reuse internal buffers, and doesn't have to constantly allocate new buffers + + + + + + Default buffer size for the internal buffers + + + + + + Can be used if has been enabled. + + + + + Initializes a new instance of the class. + + + + + Checks whether log event should be logged or not. In case the LogEvent has just been repeated. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Uses object pooling, and prunes stale filter items when the pool runs dry + + + + + Remove stale filter-value from the cache, and fill them into the pool for reuse + + + + + Renders the Log Event into a filter value, that is used for checking if just repeated + + + + + Repeated LogEvent detected. Checks if it should activate filter-action + + + + + Filter Value State (mutable) + + + + + Filter Lookup Key (immutable) + + + + + A fluent class to build log events for NLog. + + + + + Initializes a new instance of the class. + + The to send the log event. + + + + Initializes a new instance of the class. + + The to send the log event. + The for the log event. + + + + Gets the created by the builder. + + + + + Sets the information of the logging event. + + The exception information of the logging event. + current for chaining calls. + + + + Sets the level of the logging event. + + The level of the logging event. + current for chaining calls. + + + + Sets the logger name of the logging event. + + The logger name of the logging event. + current for chaining calls. + + + + Sets the log message on the logging event. + + The log message for the logging event. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + The fourth object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + An object that supplies culture-specific formatting information. + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets a per-event context property on the logging event. + + The name of the context property. + The value of the context property. + current for chaining calls. + + + + Sets multiple per-event context properties on the logging event. + + The properties to set. + current for chaining calls. + + + + Sets the timestamp of the logging event. + + The timestamp of the logging event. + current for chaining calls. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + current for chaining calls. + + + + Writes the log event to the underlying logger. + + + + + Writes the log event to the underlying logger. + + If condition is true, write log event; otherwise ignore event. + + + + Writes the log event to the underlying logger. + + If condition is true, write log event; otherwise ignore event. + + + + Extension methods for NLog . + + + + + Starts building a log event with the specified . + + The logger to write the log event to. + The log level. + current for chaining calls. + + + + Starts building a log event at the Trace level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Debug level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Info level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Warn level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Error level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Fatal level. + + The logger to write the log event to. + current for chaining calls. + + + + Global Diagnostics Context + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Global Diagnostics Context - a dictionary structure to hold per-application-instance values. + + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The item value, if defined; otherwise null. + + + + Returns all item names + + A collection of the names of all items in the Global Diagnostics Context. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Include context properties + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Interface for serialization of object values into JSON format + + + + + Serialization of an object into JSON format. + + The object to serialize to JSON. + Output destination. + Serialize succeeded (true/false) + + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format.s + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Logger with only generic methods (passing 'LogLevel' to methods) and core properties. + + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Extensions for NLog . + + + + + Writes the diagnostic message and exception at the specified level. + + A logger implementation that will handle the message. + The log level. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Allocates new builder and appends to the provided target builder on dispose + + + + + Access the new builder allocated + + + + + Helpers for . + + + + + Load from url + + file or path, including .dll + basepath, optional + + + + + Load from url + + name without .dll + + + + + Forward declare of system delegate type for use by other classes + + + + + Keeps track of pending operation count, and can notify when pending operation count reaches zero + + + + + Mark operation has started + + + + + Mark operation has completed + + Exception coming from the completed operation [optional] + + + + Registers an AsyncContinuation to be called when all pending operations have completed + + Invoked on completion + AsyncContinuation operation + + + + Clear o + + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Legacy attempt to skip async MoveNext, but caused source file line number to be lost + + + + + Gets the entire stack trace. + + + + + Finds first user stack frame in a stack trace + + The stack trace of the logging method invocation + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + Index of the first user stack frame or 0 if all stack frames are non-user + + + + This is only done for legacy reason, as the correct method-name and line-number should be extracted from the MoveNext-StackFrame + + The stack trace of the logging method invocation + Starting point for skipping async MoveNext-frames + + + + Assembly to skip? + + Find assembly via this frame. + true, we should skip. + + + + Is this the type of the logger? + + get type of this logger in this frame. + Type of the logger. + + + + + Memory optimized filtering + + Passing state too avoid delegate capture and memory-allocations. + + + + Provides untyped IDictionary interface on top of generic IDictionary. + + The type of the key. + The type of the value. + + + + Initializes a new instance of the DictionaryAdapter class. + + The implementation. + + + + Gets an object containing the values in the object. + + + + An object containing the values in the object. + + + + + Gets the number of elements contained in the . + + + + The number of elements contained in the . + + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + + + Gets an object that can be used to synchronize access to the . + + + + An object that can be used to synchronize access to the . + + + + + Gets a value indicating whether the object has a fixed size. + + + true if the object has a fixed size; otherwise, false. + + + + + Gets a value indicating whether the object is read-only. + + + true if the object is read-only; otherwise, false. + + + + + Gets an object containing the keys of the object. + + + + An object containing the keys of the object. + + + + + Gets or sets the with the specified key. + + Dictionary key. + Value corresponding to key or null if not found + + + + Adds an element with the provided key and value to the object. + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + + Removes all elements from the object. + + + + + Determines whether the object contains an element with the specified key. + + The key to locate in the object. + + True if the contains an element with the key; otherwise, false. + + + + + Returns an object for the object. + + + An object for the object. + + + + + Removes the element with the specified key from the object. + + The key of the element to remove. + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Wrapper IDictionaryEnumerator. + + + + + Initializes a new instance of the class. + + The wrapped. + + + + Gets both the key and the value of the current dictionary entry. + + + + A containing both the key and the value of the current dictionary entry. + + + + + Gets the key of the current dictionary entry. + + + + The key of the current element of the enumeration. + + + + + Gets the value of the current dictionary entry. + + + + The value of the current element of the enumeration. + + + + + Gets the current element in the collection. + + + + The current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + + True if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Ensures that IDictionary.GetEnumerator returns DictionaryEntry values + + + + + UTF-8 BOM 239, 187, 191 + + + + + Safe way to get environment variables. + + + + + Helper class for dealing with exceptions. + + + + + Mark this exception as logged to the . + + + + + + + Is this exception logged to the ? + + + trueif the has been logged to the . + + + + Determines whether the exception must be rethrown and logs the error to the if is false. + + Advised to log first the error to the before calling this method. + + The exception to check. + Target context of the exception. + trueif the must be rethrown, false otherwise. + + + + Determines whether the exception must be rethrown immediately, without logging the error to the . + + Only used this method in special cases. + + The exception to check. + trueif the must be rethrown, false otherwise. + + + + Object construction helper. + + + + + Adapter for to + + + + + Initializes a new instance of the class. + + The to wrap. + + + + Creates an AppDomainWrapper for the current + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Interface for fakeable the current . Not fully implemented, please methods/properties as necessary. + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + Abstract calls for the application environment + + + + + Gets current process name (excluding filename extension, if any). + + + + + Abstract calls to FileSystem + + + + Determines whether the specified file exists. + The file to check. + + + Returns the content of the specified file + The file to load. + + + + Base class for optimized file appenders. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Gets the path of the file, including file extension. + + The name of the file. + + + + Gets or sets the creation time for a file associated with the appender. The time returned is in Coordinated + Universal Time [UTC] standard. + + The creation time of the file. + + + + Gets or sets the creation time for a file associated with the appender. Synchronized by + The time format is based on + + + + + Gets the last time the file associated with the appender is opened. The time returned is in Coordinated + Universal Time [UTC] standard. + + The time the file was last opened. + + + + Gets the file creation parameters. + + The file creation parameters. + + + + Writes the specified bytes. + + The bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Creates the file stream. + + If set to true sets the file stream to allow shared writing. + If larger than 0 then it will be used instead of the default BufferSize for the FileStream. + A object which can be used to write to the file. + + + + Base class for optimized file appenders which require the usage of a mutex. + + It is possible to use this class as replacement of BaseFileAppender and the mutex functionality + is not enforced to the implementing subclasses. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Implementation of which caches + file information. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Closes this instance of the appender. + + + + + Flushes this current appender. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Writes the specified bytes to a file. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Factory class which creates objects. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Maintains a collection of file appenders usually associated with file targets. + + + + + An "empty" instance of the class with zero size and empty list of appenders. + + + + + Initializes a new "empty" instance of the class with zero size and empty + list of appenders. + + + + + Initializes a new instance of the class. + + + The size of the list should be positive. No validations are performed during initialization as it is an + internal class. + + Total number of appenders allowed in list. + Factory used to create each appender. + Parameters used for creating a file. + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + Interface that provides parameters for create file function. + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + Gets or sets the log file buffer size in bytes. + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + Should archive mutex be created? + + + + + Should manual simple detection of file deletion be enabled? + + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + Interface implemented by all factories capable of creating file appenders. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + Instance of which can be used to write to the file. + + + + Appender used to discard data for the FileTarget. + Used mostly for testing entire stack except the actual writing to disk. + Throws away all data. + + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Multi-process and multi-host file appender which attempts + to get exclusive write access and retries if it's not available. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Optimized single-process file appender which keeps the file open for exclusive write. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + A layout that represents a filePath. + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Cached invalid file names char array to avoid memory allocation every time Path.GetInvalidFileNameChars() is called. + + + + + not null when == false + + + + + non null is fixed, + + + + + is the cache-key, and when newly rendered filename matches the cache-key, + then it reuses the cleaned cache-value . + + + + + is the cache-value that is reused, when the newly rendered filename + matches the cache-key + + + + Initializes a new instance of the class. + + + + Render the raw filename from Layout + + The log event. + StringBuilder to minimize allocations [optional]. + String representation of a layout. + + + + Convert the raw filename to a correct filename + + The filename generated by Layout. + String representation of a correct filename. + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Convert object to string + + value + format for conversion. + + + If is null and isn't a already, then the will get a locked by + + + + + Interface for the wrapper around System.Configuration.ConfigurationManager. + + + + + Gets the wrapper around ConfigurationManager.AppSettings. + + + + + Format a log message + + + + + Format the message and return + + LogEvent with message to be formatted + formatted message + + + + Has the logevent properties? + + LogEvent with message to be formatted + False when logevent has no properties to be extracted + + + + Appends the logevent message to the provided StringBuilder + + LogEvent with message to be formatted + The to append the formatted message. + + + + Get the Raw, unformatted and unstrinyfied, value + + + + + Get the raw value + + + The value + RawValue supported? + + + + Interface implemented by layouts and layout renderers. + + + + + Renders the the value of layout or layout renderer in the context of the specified log event. + + The log event. + String representation of a layout. + + + + Supports mocking of SMTP Client code. + + + + + Specifies how outgoing email messages will be handled. + + + + + Gets or sets the name or IP address of the host used for SMTP transactions. + + + + + Gets or sets the port used for SMTP transactions. + + + + + Gets or sets a value that specifies the amount of time after which a synchronous Send call times out. + + + + + Gets or sets the credentials used to authenticate the sender. + + + + + Sends an e-mail message to an SMTP server for delivery. These methods block while the message is being transmitted. + + + System.Net.Mail.MailMessage + MailMessage + A MailMessage that contains the message to send. + + + + Gets or sets the folder where applications save mail messages to be processed by the local SMTP server. + + + + + Supports rendering as string value with limited or no allocations (preferred) + + + + + Renders the value of layout renderer in the context of the specified log event + + + null if not possible or unknown + + + + Supports object initialization and termination. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Render the event info as parse as short + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as int + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as bool + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Logger configuration. + + + + + Initializes a new instance of the class. + + The targets by level. + Use the old exception log handling of NLog 3.0? + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete before NLog 4.3.11 and it will be removed in NLog 5. + + + + Gets targets for the specified level. + + The level. + Chain of targets with attached filters. + + + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + New formatter + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + The MessageFormatter delegate + + + + + + + + Most-Recently-Used-Cache, that discards less frequently used items on overflow + + + + + Constructor + + Maximum number of items the cache will hold before discarding. + + + + Attempt to insert item into cache. + + Key of the item to be inserted in the cache. + Value of the item to be inserted in the cache. + true when the key does not already exist in the cache, false otherwise. + + + + Lookup existing item in cache. + + Key of the item to be searched in the cache. + Output value of the item found in the cache. + True when the key is found in the cache, false otherwise. + + + + Supports mocking of SMTP Client code. + + + Disabled Error CS0618 'SmtpClient' is obsolete: 'SmtpClient and its network of types are poorly designed, + we strongly recommend you use https://github.com/jstedfast/MailKit and https://github.com/jstedfast/MimeKit instead' + + + + + Network sender which uses HTTP or HTTPS POST. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Creates instances of objects for given URLs. + + + + + Creates a new instance of the network sender based on a network URL. + + URL that determines the network sender to be created. + The maximum queue size. + SSL protocols for TCP + KeepAliveTime for TCP + + A newly created network sender. + + + + + Interface for mocking socket calls. + + + + + A base class for all network senders. Supports one-way sending of messages + over various protocols. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Gets the address of the network endpoint. + + + + + Gets the last send time. + + + + + Initializes this network sender. + + + + + Closes the sender and releases any unmanaged resources. + + The continuation. + + + + Flushes any pending messages and invokes a continuation. + + The continuation. + + + + Send the given text over the specified protocol. + + Bytes to be sent. + Offset in buffer. + Number of bytes to send. + The asynchronous continuation. + + + + Closes the sender and releases any unmanaged resources. + + + + + Performs sender-specific initialization. + + + + + Performs sender-specific close operation. + + The continuation. + + + + Performs sender-specific flush. + + The continuation. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Parses the URI into an endpoint address. + + The URI to parse. + The address family. + Parsed endpoint. + + + + Default implementation of . + + + + + + + + A base class for network senders that can block or send out-of-order + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Performs sender-specific flush. + + The continuation. + + + + Socket proxy for mocking Socket code. + + + + + Initializes a new instance of the class. + + The address family. + Type of the socket. + Type of the protocol. + + + + Gets underlying socket instance. + + + + + Closes the wrapped socket. + + + + + Invokes ConnectAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendToAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Sends messages over a TCP network connection. + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + The address family. + + + + Creates the socket with given parameters. + + The host address. + The address family. + Type of the socket. + Type of the protocol. + Instance of which represents the socket. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Facilitates mocking of class. + + + + + Raises the Completed event. + + + + + Sends messages over the network as UDP datagrams. + + + + + Initializes a new instance of the class. + + URL. Must start with udp://. + The address family. + + + + Creates the socket. + + The address family. + Type of the socket. + Type of the protocol. + Implementation of to use. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Sends the specified text as a UDP datagram. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Scans (breadth-first) the object graph following all the edges whose are + instances have attached and returns + all objects implementing a specified interfaces. + + + + + Finds the objects which have attached which are reachable + from any of the given root objects when traversing the object graph over public properties. + + Type of the objects to return. + Also search the properties of the wanted objects. + The root objects. + Ordered list of objects implementing T. + + + ISet is not there in .net35, so using HashSet + + + + Helper for extracting propertyPath + + + + + Object Path to check + + + + + Try get value from , using , and set into + + + + + + + + Converts object into a List of property-names and -values using reflection + + + + + Scans properties for name (Skips string-compare and value-lookup until finding match) + + + + + Scans properties for name (Skips property value lookup until finding match) + + + + + Scans properties for name + + + + + Combine paths + + basepath, not null + optional dir + optional file + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Trims directory separators from the path + + path, could be null + never null + + + + Detects the platform the NLog is running on. + + + + + Gets the current runtime OS. + + + + + Gets a value indicating whether current OS is Win32-based (desktop or mobile). + + + + + Gets a value indicating whether current OS is Unix-based. + + + + + Gets a value indicating whether current runtime is Mono-based + + + + + Gets a value indicating whether current runtime supports use of mutex + + + + + Will creating a mutex succeed runtime? + "Cached" detection + + + + + Will creating a mutex succeed runtime? + + + + + Dictionary that combines the standard with the + MessageTemplate-properties extracted from the . + + The are returned as the first items + in the collection, and in positional order. + + + + + Value of the property + + + + + Is this a property of the message? + + + + + + + Value of the property + Is this a property of the message? + + + + The properties of the logEvent + + + + + The properties extracted from the message + + + + + Injects the list of message-template-parameter into the IDictionary-interface + + Message-template-parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check if the message-template-parameters can be used directly without allocating a dictionary + + Message-template-parameters + Are all parameter names unique (true / false) + + + + Attempt to insert the message-template-parameters into an empty dictionary + + Message-template-parameters + The initially empty dictionary + Message-template-parameters was inserted into dictionary without trouble (true/false) + + + + Attempt to override the existing dictionary values using the message-template-parameters + + Message-template-parameters + The already filled dictionary + List of unique message-template-parameters + + + + + + + + + + + + + + + + + + + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + + + + + + + + + + + + + + + + + Reflection helpers for accessing properties. + + + + + Set value parsed from string. + + object instance to set with property + name of the property on + The value to be parsed. + + + + + Get property info + + object which could have property + property name on + result when success. + success. + + + + Try parse of string to (Generic) list, comma separated. + + + If there is a comma in the value, then (single) quote the value. For single quotes, use the backslash as escape + + + + + Attempt to reuse the HashSet.Comparer from the original HashSet-object (Ex. StringComparer.OrdinalIgnoreCase) + + + + + Try get the property + + + + + Reflection helpers. + + + + + Gets all usable exported types from the given assembly. + + Assembly to scan. + Usable types from the given assembly. + Types which cannot be loaded are skipped. + + + + Is this a static class? + + + + This is a work around, as Type doesn't have this property. + From: https://stackoverflow.com/questions/1175888/determine-if-a-type-is-static + + + + + Optimized delegate for calling MethodInfo + + Object instance, use null for static methods. + Complete list of parameters that matches the method, including optional/default parameters. + + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Controls a single allocated AsyncLogEventInfo-List for reuse (only one active user) + + + + + Controls a single allocated char[]-buffer for reuse (only one active user) + + + + + Controls a single allocated StringBuilder for reuse (only one active user) + + + + + Controls a single allocated object for reuse (only one active user) + + + + Empty handle when is disabled + + + + Creates handle to the reusable char[]-buffer for active usage + + Handle to the reusable item, that can release it again + + + + Access the acquired reusable object + + + + + Controls a single allocated MemoryStream for reuse (only one active user) + + + + + Supported operating systems. + + + If you add anything here, make sure to add the appropriate detection + code to + + + + + Unknown operating system. + + + + + Unix/Linux operating systems. + + + + + Desktop versions of Windows (95,98,ME). + + + + + Windows NT, 2000, 2003 and future versions based on NT technology. + + + + + Macintosh Mac OSX + + + + + Simple character tokenizer. + + + + + Initializes a new instance of the class. + + The text to be tokenized. + + + + Current position in + + + + + Full text to be parsed + + + + + Check current char while not changing the position. + + + + + + Read the current char and change position + + + + + + Get the substring of the + + + + + + + + Implements a single-call guard around given continuation function. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + + + + Continuation function which implements the single-call guard. + + The exception. + + + + HashSet optimized for single item + + + + + + Insert single item on scope start, and remove on scope exit + + Item to insert in scope + Existing hashset to update + Force allocation of real hashset-container + HashSet EqualityComparer + + + + Add item to collection, if it not already exists + + Item to insert + + + + Clear hashset + + + + + Check if hashset contains item + + + Item exists in hashset (true/false) + + + + Remove item from hashset + + + Item removed from hashset (true/false) + + + + Copy items in hashset to array + + Destination array + Array offset + + + + Create hashset enumerator + + Enumerator + + + + Provides helpers to sort log events and associated continuations. + + + + + Key selector delegate. + + The type of the value. + The type of the key. + Value to extract key information from. + Key selected from log event. + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + The key comparer function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Single-Bucket optimized readonly dictionary. Uses normal internally Dictionary if multiple buckets are needed. + + Avoids allocating a new dictionary, when all items are using the same bucket + + The type of the key. + The type of the value. + + + + + + + + + + + + + + + + Allows direct lookup of existing keys. If trying to access non-existing key exception is thrown. + Consider to use instead for better safety. + + Key value for lookup + Mapped value found + + + + Non-Allocating struct-enumerator + + + + + + + + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + + + + Will always throw, as dictionary is readonly + + + + Utilities for dealing with values. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + StackFrame from the calling method + Fully qualified class name + + + + Returns the assembly from the provided StackFrame (If not internal assembly) + + Valid assembly, or null if assembly was internal + + + + Returns the classname from the provided StackFrame (If not from internal assembly) + + + Valid class name, or empty string if assembly was internal + + + + Stream helpers + + + + + Copy to output stream and skip BOM if encoding is UTF8 + + + + + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + .net35 doesn't have a .copyto + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + first bytes to skip (optional) + + + + Helpers for , which is used in e.g. layout renderers. + + + + + Renders the specified log event context item and appends it to the specified . + + append to this + value to be appended + format string. If @, then serialize the value with the Default JsonConverter. + provider, for example culture + + + + Appends int without using culture, and most importantly without garbage + + + value to append + + + + Appends uint without using culture, and most importantly without garbage + + Credits Gavin Pugh - https://www.gavpugh.com/2010/04/01/xnac-avoiding-garbage-when-working-with-stringbuilder/ + + + value to append + + + + Convert DateTime into UTC and format to yyyy-MM-ddTHH:mm:ss.fffffffZ - ISO 6801 date (Round-Trip-Time) + + + + + Clears the provider StringBuilder + + + + + + Copies the contents of the StringBuilder to the MemoryStream using the specified encoding (Without BOM/Preamble) + + StringBuilder source + MemoryStream destination + Encoding used for converter string into byte-stream + Helper char-buffer to minimize memory allocations + + + + Copies the contents of the StringBuilder to the destination StringBuilder + + StringBuilder source + StringBuilder destination + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle character to search for + + Index of the first occurrence (Else -1) + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle characters to search for + + Index of the first occurrence (Else -1) + + + + Compares the contents of two StringBuilders + + + Correct implementation of that also works when is not the same + + True when content is the same + + + + Compares the contents of a StringBuilder and a String + + True when content is the same + + + + Append a number and pad with 0 to 2 digits + + append to this + the number + + + + Append a number and pad with 0 to 4 digits + + append to this + the number + + + + Append a int type (byte, int) as string + + + + + Constructor + + Max number of items + Initial StringBuilder Size + Max StringBuilder Size + + + + Takes StringBuilder from pool + + Allow return to pool + + + + Releases StringBuilder back to pool at its right place + + + + + Keeps track of acquired pool item + + + + + Releases pool item back into pool + + + + + Helpers for . + + + + + IsNullOrWhiteSpace, including for .NET 3.5 + + + + + + + Split a string + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Represents target with a chain of filters which determine + whether logging should happen. + + + + + cached result as calculating is expensive. + + + + + Initializes a new instance of the class. + + The target. + The filter chain. + Default action if none of the filters match. + + + + Gets the target. + + The target. + + + + Gets the filter chain. + + The filter chain. + + + + Default action if none of the filters match. + + + + + Gets or sets the next item in the chain. + + The next item in the chain. + This is for example the 'target2' logger in writeTo='target1,target2' + + + + Gets the stack trace usage. + + A value that determines stack trace handling. + + + + Helper for dealing with thread-local storage. + + + + + Allocates the data slot for storing thread-local information. + + Allocated slot key. + + + + Gets the data for a slot in thread-local storage. + + Type of the data. + The slot to get data for. + Automatically create the object if it doesn't exist. + + Slot data (will create T if null). + + + + + Wraps with a timeout. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + The timeout. + + + + Continuation function which implements the timeout logic. + + The exception. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Transformation on a layout. Pre-calculated if the layout has a fixed value. + + + + + Create TransformedLayout. + + Layout + Transformation method + Optional renderer, otherwise is used + + + + + + + Create TransformedLayout. If is null, then the returns null + + Layout + Transformation method + Optional renderer, otherwise is used + null if is null + + + + + + + + + + URL Encoding helper. + + + + Allow UnreservedMarks instead of ReservedMarks, as specified by chosen RFC + + + Use RFC2396 standard (instead of RFC3986) + + + Should use lowercase when doing HEX escaping of special characters + + + Replace space ' ' with '+' instead of '%20' + + + Skip UTF8 encoding, and prefix special characters with '%u' + + + + Escape unicode string data for use in http-requests + + unicode string-data to be encoded + target for the encoded result + s for how to perform the encoding + + + + Convert the wide-char into utf8-bytes, and then escape + + + + + + + + + Is allowed? + + + + + + + + Is a-z / A-Z / 0-9 + + + + + + + Prevents the Xamarin linker from linking the target. + + + By applying this attribute all of the members of the target will be kept as if they had been referenced by the code. + + + + + Ensures that all members of this type are preserved + + + + + Flags the method as a method to preserve during linking if the container class is pulled in. + + + + + Helper class for XML + + + + + removes any unusual unicode characters that can't be encoded into XML + + + + + Cleans string of any invalid XML chars found + + unclean string + string with only valid XML chars + + + + Pretest, small text and not escape needed + + + + + + + + Converts object value to invariant format, and strips any invalid xml-characters + + Object value + Object value converted to string + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object value converted to string + + + + XML elements must follow these naming rules: + - Element names are case-sensitive + - Element names must start with a letter or underscore + - Element names can contain letters, digits, hyphens, underscores, and periods + - Element names cannot contain spaces + + + + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object TypeCode + Check and remove unusual unicode characters from the result string. + Object value converted to string + + + + Safe version of WriteAttributeString + + + + + + + + + + Safe version of WriteAttributeString + + + + + + + + Safe version of WriteElementSafeString + + + + + + + + + + Safe version of WriteCData + + + + + + + Interface for handling object transformation + + + + + Takes a dangerous (or massive) object and converts into a safe (or reduced) object + + + Null if unknown object, or object cannot be handled + + + + + Provides an interface to execute System.Actions without surfacing any exceptions raised for that action. + + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Render a message template property to a string + + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Log event context data. + + + + + Initializes a new instance of the class. + + + + + Gets or sets string that will be used to separate key/value pairs. + + + + + + Get or set if empty values should be included. + + A value is empty when null or in case of a string, null or empty string. + + + + + + Gets or sets the keys to exclude from the output. If omitted, none are excluded. + + + + + + Gets or sets how key/value pairs will be formatted. + + + + + + Renders all log event's properties and appends them to the specified . + + The to append the rendered data to. + Logging event. + + + + Designates a property of the class as an ambient property. + + + non-ambient: ${uppercase:${level}} + ambient : ${level:uppercase} + + + + + Initializes a new instance of the class. + + Ambient property name. + + + + Used to render the application domain name. + + + + + Create a new renderer + + + + + Create a new renderer + + + + + Format string. Possible values: "Short", "Long" or custom like {0} {1}. Default "Long" + The first parameter is the , the second the second the + This string is used in + + + + + + + + + + + + + + + Renders the assembly version information for the entry assembly or a named assembly. + + + As this layout renderer uses reflection and version information is unlikely to change during application execution, + it is recommended to use it in conjunction with the . + + + The entry assembly can't be found in some cases e.g. ASP.NET, unit tests, etc. + + + + + Initializes a new instance of the class. + + + + + The (full) name of the assembly. If null, using the entry assembly. + + + + + + Gets or sets the type of assembly version to retrieve. + + + Some version type and platform combinations are not fully supported. + - UWP earlier than .NET Standard 1.5: Value for is always returned unless the parameter is specified. + - Silverlight: Value for is always returned. + + + + + + Gets or sets the custom format of the assembly version output. + + + Supported placeholders are 'major', 'minor', 'build' and 'revision'. + The default .NET template for version numbers is 'major.minor.build.revision'. See + https://docs.microsoft.com/en-gb/dotnet/api/system.version?view=netframework-4.7.2#remarks + for details. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders an assembly version and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets the assembly specified by , or entry assembly otherwise + + Found assembly + + + + Type of assembly version to retrieve. + + + + + Gets the assembly version. + + + + + Gets the file version. + + + + + Gets additional version information. + + + + + The current application domain's base directory. + + + + + cached + + + + + Use base dir of current process. Alternative one can just use ${processdir} + + + + + + Fallback to the base dir of current process, when AppDomain.BaseDirectory is Temp-Path (.NET Core 3 - Single File Publish) + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the base directory. + + + + + + Renders the application base directory and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site source file name. Full callsite + + + + + Gets or sets a value indicating whether to include source file path. + + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + + + + + + The call site (class name, method name and source information). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to render the class name. + + + + + + Gets or sets a value indicating whether to render the include the namespace with . + + + + + + Gets or sets a value indicating whether to render the method name. + + + + + + Gets or sets a value indicating whether the method name will be cleaned up if it is detected as an anonymous delegate. + + + + + + Gets or sets a value indicating whether the method and class names will be cleaned up if it is detected as an async continuation + (everything after an await-statement inside of an async method). + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets a value indicating whether to render the source file name and line number. + + + + + + Gets or sets a value indicating whether to include source file path. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site source line number. Full callsite + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + + + + + + A counter value (increases on each layout rendering). + + + + + Gets or sets the initial value of the counter. + + + + + + Gets or sets the value to be added to the counter after each layout rendering. + + + + + + Gets or sets the name of the sequence. Different named sequences can have individual values. + + + + + + + + + The current working directory of the application. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the current directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the current directory. + + + + + + + + + + + + Current date and time. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the date format. Can be any argument accepted by DateTime.ToString(format). + + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + + + + + + + + + + DB null for a database + + + + + + + + + + + The OS dependent directory separator + + + + + + + + + + + The environment variable. + + + + + Gets or sets the name of the environment variable. + + + + + + Gets or sets the default value to be used when the environment variable is not set. + + + + + + + + + + + + Thread identity information (username). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether username should be included. + + + + + + Gets or sets a value indicating whether domain name should be included. + + + + + + Gets or sets the default value to be used when the User is not set. + + + + + + Gets or sets the default value to be used when the Domain is not set. + + + + + + + + + + + + Log event context data. + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the name of the item. + + + + + + Renders the specified log event context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Log event context data. See . + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + + + + + + + + + + Exception information provided through + a call to one of the Logger.*Exception() methods. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the format of the output. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + + + Gets or sets the format of the output of inner exceptions. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + Gets or sets the separator used to concatenate parts specified in the Format. + + + + + + Gets or sets the separator used to concatenate exception data specified in the Format. + + + + + + Gets or sets the maximum number of inner exceptions to include in the output. + By default inner exceptions are not enabled for compatibility with NLog 1.0. + + + + + + Gets or sets the separator between inner exceptions. + + + + + + Gets or sets whether to render innermost Exception from + + + + + Gets the formats of the output of inner exceptions to be rendered in target. + + + + + + + Gets the formats of the output to be rendered in target. + + + + + + + + + + + + + Appends the Message of an Exception to the specified . + + The to append the rendered data to. + The exception containing the Message to append. + + + + Appends the method name from Exception's stack trace to the specified . + + The to append the rendered data to. + The Exception whose method name should be appended. + + + + Appends the stack trace from an Exception to the specified . + + The to append the rendered data to. + The Exception whose stack trace should be appended. + + + + Appends the result of calling ToString() on an Exception to the specified . + + The to append the rendered data to. + The Exception whose call to ToString() should be appended. + + + + Appends the type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose type should be appended. + + + + Appends the short type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose short type should be appended. + + + + Appends the application source of an Exception to the specified . + + The to append the rendered data to. + The Exception whose source should be appended. + + + + Appends the HResult of an Exception to the specified . + + The to append the rendered data to. + The Exception whose HResult should be appended. + + + + Appends the contents of an Exception's Data property to the specified . + + The to append the rendered data to. + The Exception whose Data property elements should be appended. + + + + Appends all the serialized properties of an Exception into the specified . + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Appends all the additional properties of an Exception like Data key-value-pairs + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Split the string and then compile into list of Rendering formats. + + + + + Renders contents of the specified file. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file. + + + + + + Gets or sets the encoding used in the file. + + The encoding. + + + + + Renders the contents of the specified file and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + Name used in config without ${}. E.g. "test" could be used as "${test}". + + + + + Method that renders the layout. + + + + + Format string for conversion from object to string. + + + + + + + + + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + The information about the garbage collector. + + + + + Gets or sets the property to retrieve. + + + + + + + + + Gets or sets the property of System.GC to retrieve. + + + + + Total memory allocated. + + + + + Total memory allocated (perform full garbage collection first). + + + + + Gets the number of Gen0 collections. + + + + + Gets the number of Gen1 collections. + + + + + Gets the number of Gen2 collections. + + + + + Maximum generation number supported by GC. + + + + + Render a Global Diagnostics Context item. See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + + + + Globally-unique identifier (GUID). + + + + + Gets or sets the GUID format as accepted by Guid.ToString() method. + + + + + + Generate the Guid from the NLog LogEvent (Will be the same for all targets) + + + + + + + + + + + + + + + The host name that the process is running on. + + + + + + + + Gets the host name and falls back to computer name if not available + + + + + Tries the lookup value. + + The lookup function. + Type of the lookup. + + + + + + + + Thread identity information (name and authentication information). + + + + + Gets or sets the separator to be used when concatenating + parts of identity information. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.Name. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.AuthenticationType. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.IsAuthenticated. + + + + + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Gets or sets the name of the parameter. + + + + + + Renders the specified installation parameter and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render environmental information related to logging events. + + + + + Gets the logging configuration this target is part of. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Renders the the value of layout renderer in the context of the specified log event. + + The log event. + String representation of a layout renderer. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Renders the value of layout renderer in the context of the specified log event. + + The log event. + The layout render output is appended to builder + + + + Renders the value of layout renderer in the context of the specified log event into . + + The to append the rendered data to. + Logging event. + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Get the for rendering the messages to a + + LogEvent with culture + Culture in on Layout level + + + + + Get the for rendering the messages to a , needed for date and number formats + + LogEvent with culture + Culture in on Layout level + + + is preferred + + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Marks class as a layout renderer and assigns a name to it. + + This attribute is not required when registering the layout in the API. + + + + Initializes a new instance of the class. + + Name of the layout renderer, without the `${ }` + + + + Format of the ${level} layout renderer output. + + + + + Render the LogLevel standard name. + + + + + Render the first character of the level. + + + + + Render the ordinal (aka number) for the level. + + + + + Render the LogLevel full name, expanding Warn / Info abbreviations + + + + + The log level. + + + + + Gets or sets a value indicating the output format of the level. + + + + + + + + + + + + + + + A string literal. + + + This is used to escape '${' sequence + as ;${literal:text=${}' + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The literal text value. + This is used by the layout compiler. + + + + Gets or sets the literal text. + + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes the layout renderer. + + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets a value indicating whether the XML should use spaces for indentation. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDLC item separator. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the XML logging event and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The logger name. + + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + + + + + + + The date and time in a long, sortable format yyyy-MM-dd HH:mm:ss.ffff. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the date in the long format (yyyy-MM-dd HH:mm:ss.ffff) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The machine name that the process is running on. + + + + + + + + + + + Render a Mapped Diagnostic Context item, See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + Render a Mapped Diagnostic Logical Context item (based on CallContext). + See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + The formatted log message. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to log exception along with message. + + + + + + Gets or sets the string that separates message from the exception. + + + + + + Gets or sets whether it should render the raw message without formatting parameters + + + + + + + + + + + + Render a Nested Diagnostic Context item. + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested diagnostics context output. + + + + + + Renders the specified Nested Diagnostics Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render a Nested Diagnostic Logical Context item (Async scope) + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested logical context output. + + + + + + Renders the specified Nested Logical Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Timing Renderer (Async scope) + + + + + Gets or sets whether to only include the duration of the last scope created + + + + + + Gets or sets whether to just display the scope creation time, and not the duration + + + + + + Gets or sets the TimeSpan format. Can be any argument accepted by TimeSpan.ToString(format). + + + + + + Renders the timing details of the Nested Logical Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A newline literal. + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The directory where NLog.dll is located. + + + + + Initializes static members of the NLogDirLayoutRenderer class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The executable directory from the FileName, + using the current process + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the process directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the process directory. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + The identifier of the current process. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + + + + The information about the running process. + + + + + Gets or sets the property to retrieve. + + + + + + Gets or sets the format-string to use if the property supports it (Ex. DateTime / TimeSpan / Enum) + + + + + + + + + + + + + + + Property of System.Diagnostics.Process to retrieve. + + + + + Base Priority. + + + + + Exit Code. + + + + + Exit Time. + + + + + Process Handle. + + + + + Handle Count. + + + + + Whether process has exited. + + + + + Process ID. + + + + + Machine name. + + + + + Handle of the main window. + + + + + Title of the main window. + + + + + Maximum Working Set. + + + + + Minimum Working Set. + + + + + Non-paged System Memory Size. + + + + + Non-paged System Memory Size (64-bit). + + + + + Paged Memory Size. + + + + + Paged Memory Size (64-bit).. + + + + + Paged System Memory Size. + + + + + Paged System Memory Size (64-bit). + + + + + Peak Paged Memory Size. + + + + + Peak Paged Memory Size (64-bit). + + + + + Peak Virtual Memory Size. + + + + + Peak Virtual Memory Size (64-bit).. + + + + + Peak Working Set Size. + + + + + Peak Working Set Size (64-bit). + + + + + Whether priority boost is enabled. + + + + + Priority Class. + + + + + Private Memory Size. + + + + + Private Memory Size (64-bit). + + + + + Privileged Processor Time. + + + + + Process Name. + + + + + Whether process is responding. + + + + + Session ID. + + + + + Process Start Time. + + + + + Total Processor Time. + + + + + User Processor Time. + + + + + Virtual Memory Size. + + + + + Virtual Memory Size (64-bit). + + + + + Working Set Size. + + + + + Working Set Size (64-bit). + + + + + The name of the current process. + + + + + Gets or sets a value indicating whether to write the full path to the process executable. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Renders the current process name (optionally with a full path). + + The to append the rendered data to. + Logging event. + + + + The process time in format HH:mm:ss.mmm. + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + Write timestamp to builder with format hh:mm:ss:fff + + + + + The sequence ID + + + + + + + + + + + The short date in a sortable format yyyy-MM-dd. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the current short date string (yyyy-MM-dd) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + System special folder path (includes My Documents, My Music, Program Files, Desktop, and more). + + + + + Gets or sets the system special folder to use. + + + Full list of options is available at MSDN. + The most common ones are: +
    +
  • ApplicationData - roaming application data for current user.
  • +
  • CommonApplicationData - application data for all users.
  • +
  • MyDocuments - My Documents
  • +
  • DesktopDirectory - Desktop directory
  • +
  • LocalApplicationData - non roaming application data
  • +
  • Personal - user profile directory
  • +
  • System - System directory
  • +
+
+ +
+ + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Format of the ${stacktrace} layout renderer output. + + + + + Raw format (multiline - as returned by StackFrame.ToString() method). + + + + + Flat format (class and method names displayed in a single line). + + + + + Detailed flat format (method signatures displayed in a single line). + + + + + Stack trace renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the output format of the stack trace. + + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets the stack frame separator string. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A temporary directory. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The identifier of the current thread. + + + + + + + + The name of the current thread. + + + + + + + + The Ticks value of current date and time. + + + + + + + + + + + The time in a 24-hour, sortable format HH:mm:ss.mmmm. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + A renderer that puts into log a System.Diagnostics trace correlation id. + + + + + + + + + + + Render a NLog variable (xml or config) + + + + + Gets or sets the name of the NLog variable. + + + + + + Gets or sets the default value to be used when the variable is not set. + + Not used if Name is null + + + + + Initializes the layout renderer. + + + + + Try get the + + + + + + + Renders the specified variable and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Thread Windows identity information (username). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether domain name should be included. + + + + + + Gets or sets a value indicating whether username should be included. + + + + + + Renders the current thread windows identity information and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Applies caching to another layout output. + + + The value of the inner layout will be rendered only once and reused subsequently. + + + + + A value indicating when the cache is cleared. + + + + Never clear the cache. + + + Clear the cache whenever the is initialized. + + + Clear the cache whenever the is closed. + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether this is enabled. + + + + + + Gets or sets a value indicating when the cache is cleared. + + + + + + Cachekey. If the cachekey changes, resets the value. For example, the cachekey would be the current day.s + + + + + + Gets or sets a value indicating how many seconds the value should stay cached until it expires + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + + + + Filters characters not allowed in the file names by replacing them with safe character. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to modify the output of this renderer so it can be used as a part of file path + (illegal characters are replaced with '_'). + + + + + + + + + + + + Escapes output of another layout using JSON rules. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply JSON encoding. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + + + + + + + Left part of a text + + + + + Gets or sets the length in characters. + + + + + + Same as -property, so it can be used as ambient property. + + + ${message:truncate=80} + + + + + + + + + + + + Converts the result of another layout output to lower case. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Render the non-raw value of an object. + + For performance and/or full (formatted) control of the output. + + + + Gets or sets a value indicating whether to disable the IRawValue-interface + + A value of true if IRawValue-interface should be ignored; otherwise, false. + + + + + + + + + + + Render a single property of a object + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + Shortcut for + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + Only outputs the inner layout when exception has been defined for log message. + + + + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + ${onhasproperties:, Properties\: ${all-event-properties}} + + + + + + + + + + + Horizontal alignment for padding layout renderers. + + + + + When layout text is too long, align it to the left + (remove characters from the right). + + + + + When layout text is too long, align it to the right + (remove characters from the left). + + + + + Applies padding to another layout output. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of characters to pad the output to. + + + Positive padding values cause left padding, negative values + cause right padding to the desired width. + + + + + + Gets or sets the padding character. + + + + + + Gets or sets a value indicating whether to trim the + rendered text to the absolute value of the padding length. + + + + + + Gets or sets a value indicating whether a value that has + been truncated (when is true) + will be left-aligned (characters removed from the right) + or right-aligned (characters removed from the left). The + default is left alignment. + + RegistryLayoutRenderer + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Replaces a string in the output of another layout with another string. + + + ${replace:searchFor=\\n+:replaceWith=-:regex=true:inner=${message}} + + + + + Gets or sets the text to search for. + + The text search for. + + + + + Gets or sets a value indicating whether regular expressions should be used. + + A value of true if regular expressions should be used otherwise, false. + + + + + Gets or sets the replacement string. + + The replacement string. + + + + + Gets or sets the group name to replace when using regular expressions. + Leave null or empty to replace without using group name. + + The group name. + + + + + Gets or sets a value indicating whether to ignore case. + + A value of true if case should be ignored when searching; otherwise, false. + + + + + Gets or sets a value indicating whether to search for whole words. + + A value of true if whole words should be searched for; otherwise, false. + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Initializes the layout renderer. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + This class was created instead of simply using a lambda expression so that the "ThreadAgnosticAttributeTest" will pass + + + + + A match evaluator for Regular Expression based replacing + + Input string. + Group name in the regex. + Replace value. + Match from regex. + Groups replaced with . + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating the string that should be used for separating lines. + + + + + + + + + + + + Right part of a text + + + + + Gets or sets the length in characters. + + + + + + + + + + + + Decodes text "encrypted" with ROT-13. + + + See https://en.wikipedia.org/wiki/ROT13. + + + + + Gets or sets the layout to be wrapped. + + The layout to be wrapped. + This variable is for backwards compatibility + + + + + Encodes/Decodes ROT-13-encoded string. + + The string to be encoded/decoded. + Encoded/Decoded text. + + + + + + + + + + Encodes/Decodes ROT-13-encoded string. + + + + + Substring the result + + + ${substring:${level}:start=2:length=2} + ${substring:${level}:start=-2:length=2} + ${substring:Inner=${level}:start=2:length=2} + + + + + Initializes a new instance of the class. + + + + + Gets or sets the start index. + + Index + + + + + Gets or sets the length in characters. If null, then the whole string + + Index + + + + + + + + + + + Calculate start position + + 0 or positive number + + + + Calculate needed length + + 0 or positive number + + + + Trims the whitespace from the result of another layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + + + + + + + Converts the result of another layout output to upper case. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + ${level:uppercase} // [AmbientProperty] + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether upper case conversion should be applied. + + A value of true if upper case conversion should be applied otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Encodes the result of another layout output for use with URLs. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether spaces should be translated to '+' or '%20'. + + A value of true if space should be translated to '+'; otherwise, false. + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + + + Gets or sets the layout to be rendered when original layout produced empty result. + + + + + + + + + + + + + + + Only outputs the inner layout when the specified condition has been met. + + + + + Gets or sets the condition that must be met for the layout to be printed. + + + + + + If is not met, print this layout. + + + + + + + + + + + + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the line length for wrapping. + + + Only positive values are allowed + + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + Base class for s which wrapping other s. + + This has the property (which is default) and can be used to wrap. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + + + + + Gets or sets the wrapped layout. + + [DefaultParameter] so Inner: is not required if it's the first + + + + + + + + + Renders the inner message, processes it and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Appends the rendered output from -layout and transforms the added output (when necessary) + + Logging event. + The to append the rendered data to. + Start position for any necessary transformation of . + + + + Transforms the output of another layout. + + Logging event. + Output to be transform. + Transformed text. + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + Base class for s which wrapping other s. + + This expects the transformation to work on a + + + + + + + + Transforms the output of another layout. + + + Output to be transform. + + + + Transforms the output of another layout. + + Output to be transform. + + + + Renders the inner layout contents. + + + for the result + + + + + + + + + + + + + + + + + + Converts the result of another layout output to be XML-compliant. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply XML encoding. + + Ensures always valid XML, but gives a performance hit + + + + + Gets or sets a value indicating whether to transform newlines (\r\n) into ( ) + + + + + + + + + + + + A layout containing one or more nested layouts. + + + + + Initializes a new instance of the class. + + + + + Gets the inner layouts. + + + + + + Initializes the layout. + + + + + Formats the log event relying on inner layouts. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event relying on inner layouts. + + The logging event. + for the result + + + + Closes the layout. + + + + + Generate description of Compound Layout + + Compound Layout String Description + + + + A column in the CSV. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the column. + The layout of the column. + + + + Gets or sets the name of the column. + + + + + + Gets or sets the layout of the column. + + + + + + Gets or sets the override of Quoting mode + + + and are faster than the default + + + + + + Specifies allowed column delimiters. + + + + + Automatically detect from regional settings. + + + + + Comma (ASCII 44). + + + + + Semicolon (ASCII 59). + + + + + Tab character (ASCII 9). + + + + + Pipe character (ASCII 124). + + + + + Space character (ASCII 32). + + + + + Custom string, specified by the CustomDelimiter. + + + + + A specialized layout that renders CSV-formatted events. + + If is set, then the header generation with column names will be disabled. + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + Gets or sets a value indicating whether CVS should include header. + + A value of true if CVS should include header; otherwise, false. + + + + + Gets or sets the column delimiter. + + + + + + Gets or sets the quoting mode. + + + + + + Gets or sets the quote Character. + + + + + + Gets or sets the custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). + + + + + + Initializes the layout. + + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event for write. + + The logging event. + for the result + + + + Get the headers with the column names. + + + + + + Header with column names for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Generate description of CSV Layout + + CSV Layout String Description + + + + Specifies CSV quoting modes. + + + + + Quote all column (Fast) + + + + + Quote nothing (Very fast) + + + + + Quote only whose values contain the quote symbol or the separator (Slow) + + + + + JSON attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with json-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Json encoded. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A specialized layout that renders JSON-formatted events. + + + + + Initializes a new instance of the class. + + + + + Gets the array of attributes' configurations. + + + + + + Gets or sets the option to suppress the extra spaces in the output json + + + + + + Gets or sets the option to render the empty object value {} + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as JSON) + + + + + + List of property names to exclude when is true + + + + + + How far should the JSON serializer follow object references before backing off + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Formats the log event as a JSON document for writing. + + The logging event. + for the result + + + + Formats the log event as a JSON document for writing. + + The log event to be formatted. + A JSON string representation of the log event. + + + + Generate description of JSON Layout + + JSON Layout String Description + + + + Abstract interface that layouts must implement. + + + + + Is this layout initialized? See + + + + + Gets a value indicating whether this layout is thread-agnostic (can be rendered on any thread). + + + Layout is thread-agnostic if it has been marked with [ThreadAgnostic] attribute and all its children are + like that as well. + + Thread-agnostic layouts only use contents of for its output. + + + + + Gets the level of stack trace information required for rendering. + + + + + Gets the logging configuration this target is part of. + + + + + Converts a given text to a . + + Text to be converted. + object represented by the text. + + + + Implicitly converts the specified string to a . + + The layout string. + Instance of .' + + + + Implicitly converts the specified string to a . + + The layout string. + The NLog factories to use when resolving layout renderers. + Instance of . + + + + Implicitly converts the specified string to a . + + The layout string. + Whether should be thrown on parse errors (false = replace unrecognized tokens with a space). + Instance of . + + + + Create a from a lambda method. + + Method that renders the layout. + Tell if method is safe for concurrent threading. + Instance of . + + + + Precalculates the layout for the specified log event and stores the result + in per-log event cache. + + Only if the layout doesn't have [ThreadAgnostic] and doesn't contain layouts with [ThreadAgnostic]. + + The log event. + + Calling this method enables you to store the log event in a buffer + and/or potentially evaluate it in another thread even though the + layout may contain thread-dependent renderer. + + + + + Renders the event info in layout. + + The event info. + String representing log event. + + + + Optimized version of for internal Layouts. Works best + when override of is available. + + The event info. + Appends the string representing log event to target + Should rendering result be cached on LogEventInfo + + + + Valid default implementation of , when having implemented the optimized + + The logging event. + StringBuilder to help minimize allocations [optional]. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Optimized version of for internal Layouts, when + override of is available. + + + + + Try get value + + + rawValue if return result is true + false if we could not determine the rawValue + + + + Marks class as a layout renderer and assigns a format string to it. + + + + + Initializes a new instance of the class. + + Layout name. + + + + Parses layout strings. + + + + + Add to + + + + + + + Options available for + + + + + Default options + + + + + Layout renderer method can handle concurrent threads + + + + + Layout renderer method is agnostic to current thread context. This means it will render the same result indepdent of thread-context. + + + + + A specialized layout that supports header and footer. + + + + + Gets or sets the body layout (can be repeated multiple times). + + + + + + Gets or sets the header layout. + + + + + + Gets or sets the footer layout. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result. + + + + A specialized layout that renders Log4j-compatible XML events. + + + This layout is not meant to be used explicitly. Instead you can use ${log4jxmlevent} layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets the instance that renders log events. + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Represents a string with embedded placeholders that can render contextual information. + + + This layout is not meant to be used explicitly. Instead you can just use a string containing layout + renderers everywhere the layout is required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout string to parse. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + Whether should be thrown on parse errors. + + + + Original text before compile to Layout renderes + + + + + Gets or sets the layout text. + + + + + + Is the message fixed? (no Layout renderers used) + + + + + Get the fixed text. Only set when is true + + + + + Is the message a simple formatted string? (Can skip StringBuilder) + + + + + Gets a collection of objects that make up this layout. + + + + + Gets the level of stack trace information required for rendering. + + + + + Converts a text to a simple layout. + + Text to be converted. + A object. + + + + Escapes the passed text so that it can + be used literally in all places where + layout is normally expected without being + treated as layout. + + The text to be escaped. + The escaped text. + + Escaping is done by replacing all occurrences of + '${' with '${literal:text=${}' + + + + + Evaluates the specified text by expanding all layout renderers. + + The text to be evaluated. + Log event to be used for evaluation. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Evaluates the specified text by expanding all layout renderers + in new context. + + The text to be evaluated. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Returns a that represents the current object. + + + A that represents the current object. + + + + + + + + + + + + + + + + + + + + XML attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with xml-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A XML Element + + + + + + + + + + + Name of the element + + + + + + Value inside the element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + The name of the top XML node + The value of the top XML node + + + + Name of the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Value inside the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Auto indent and create new lines + + + + + + Gets the array of xml 'elements' configurations. + + + + + + Gets the array of 'attributes' configurations for the element + + + + + + Gets or sets whether a ElementValue with empty value should be included in the output + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as XML) + + + + + + List of property names to exclude when is true + + + + + + XML element name to use when rendering properties + + + Support string-format where {0} means property-key-name + + Skips closing element tag when having configured + + + + + + XML attribute name to use when rendering property-key + + When null (or empty) then key-attribute is not included + + + Will replace newlines in attribute-value with + + + + + + XML attribute name to use when rendering property-value + + When null (or empty) then value-attribute is not included and + value is formatted as XML-element-value + + + Skips closing element tag when using attribute for value + + Will replace newlines in attribute-value with + + + + + + XML element name to use for rendering IList-collections items + + + + + + How far should the XML serializer follow object references before backing off + + + + + + Initializes the layout. + + + + + Formats the log event as a XML document for writing. + + The logging event. + for the result + + + + Formats the log event as a XML document for writing. + + The log event to be formatted. + A XML string representation of the log event. + + + + write attribute, only if is not empty + + + + + rendered + + + + Generate description of XML Layout + + XML Layout String Description + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + + + + + + + Name of the root XML element + + + + + + Value inside the root XML element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Represents the logging event. + + + + + Gets the date of the first log event created. + + + + + The formatted log message. + + + + + The log message including any parameter placeholders + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + Exception information. + + + + Gets the unique identifier of log event which is automatically generated + and monotonously increasing. + + + + + Gets or sets the timestamp of the logging event. + + + + + Gets or sets the level of the logging event. + + + + + Gets a value indicating whether stack trace has been set for this event. + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Gets the entire stack trace. + + + + + Gets the callsite class name + + + + + Gets the callsite member function name + + + + + Gets the callsite source file path + + + + + Gets the callsite source file line number + + + + + Gets or sets the exception information. + + + + + Gets or sets the logger name. + + + + + Gets the logger short name. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the log message including any parameter placeholders. + + + + + Gets or sets the parameter values or null if no parameters have been specified. + + + + + Gets or sets the format provider that was provided while logging or + when no formatProvider was specified. + + + + + Gets or sets the message formatter for generating + Uses string.Format(...) when nothing else has been configured. + + + + + Gets the formatted message. + + + + + Checks if any per-event properties (Without allocation) + + + + + Gets the dictionary of per-event context properties. + + + + + Gets the dictionary of per-event context properties. + Internal helper for the PropertiesDictionary type. + + Create the event-properties dictionary, even if no initial template parameters + Provided when having parsed the message template and capture template parameters (else null) + + + + + Gets the named parameters extracted from parsing as MessageTemplate + + + + + Gets the dictionary of per-event context properties. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + The exception. + Instance of . + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates from this by attaching the specified asynchronous continuation. + + The asynchronous continuation. + Instance of with attached continuation. + + + + Returns a string representation of this log event. + + String representation of the log event. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace (Negative means NLog should skip stackframes from System-assemblies). + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Set the + + true = Always, false = Never, null = Auto Detect + + + + Specialized LogFactory that can return instances of custom logger types. + + Use this only when a custom Logger type is defined. + The type of the logger to be returned. Must inherit from . + + + + Gets the logger with type . + + The logger name. + An instance of . + + + + Gets a custom logger with the full name of the current class (so namespace and class name) and type . + + An instance of . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Overwrite possible file paths (including filename) for possible NLog config files. + When this property is null, the default file paths ( are used. + + + + + Occurs when logging changes. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The config. + + + + Initializes a new instance of the class. + + The config loader + The custom AppEnvironmnet override + + + + Gets the current . + + + + + Gets or sets a value indicating whether exceptions should be thrown. See also . + + A value of true if exception should be thrown; otherwise, false. + By default exceptions are not thrown under any circumstances. + + + + Gets or sets a value indicating whether should be thrown. + + If null then is used. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. After setting this property all + existing loggers will be re-configured, so there is no need to call + manually. + + + + + Gets or sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets the default culture info to use as . + + + Specific culture info or null to use + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting + unmanaged resources. + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Creates a logger that discards all log messages. + + Null logger instance. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets the logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + The logger with type . + Type of the logger + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The type of the logger to create. The type must inherit from + The logger of type . + This is a slow-running method. Make sure you are not calling this method in a + loop. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + Name of the logger. + Type of the logger + The logger reference with type . Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The type of the logger to create. The type must inherit from . + The logger of type . Multiple calls to GetLogger with the + same argument aren't guaranteed to return the same logger reference. + + + + Loops through all loggers previously returned by GetLogger and recalculates their + target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time + will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flushes any pending log messages on all appenders. + + Config containing Targets to Flush + Flush completed notification (success / timeout) + Optional timeout that guarantees that completed notication is called. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Returns if logging is currently enabled. + + A value of if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Raises the event when the configuration is reloaded. + + Event arguments. + + + + Currently this is disposing? + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Logger cache key. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Determines if two objects are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Determines if two objects of the same type are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Logger cache. + + + + + Inserts or updates. + + + + + + + Internal for unit tests + + + + + Enables logging in implementation. + + + + + Initializes a new instance of the class. + + The factory. + + + + Enables logging. + + + + + Logging methods which only are executed when the DEBUG conditional compilation symbol is set. + + Remarks: + The DEBUG conditional compilation symbol is default enabled (only) in a debug build. + + If the DEBUG conditional compilation symbol isn't set in the calling library, the compiler will remove all the invocations to these methods. + This could lead to better performance. + + See: https://msdn.microsoft.com/en-us/library/4xssyw96%28v=vs.90%29.aspx + + + Provides logging interface and utility functions. + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Initializes a new instance of the class. + + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Collection of context properties for the Logger. The logger will append it for all log events + + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Creates new logger that automatically appends the specified property to all log events (without changing current logger) + + Property Name + Property Value + New Logger object that automatically appends specified property + + + + Updates the specified context property for the current logger. The logger will append it for all log events. + + It could be rendered with ${event-properties:YOURNAME} + + With property, all properties could be changed. + + + Will affect all locations/contexts that makes use of the same named logger object. + + Property Name + Property Value + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Raises the event when the logger is reconfigured. + + Event arguments + + + + Implementation of logging engine. + + + + + Gets the filter result. + + The filter chain. + The log event. + default result if there are no filters, or none of the filters decides. + The result of the filter. + + + + Defines available log levels. + + + + + Trace log level. + + + + + Debug log level. + + + + + Info log level. + + + + + Warn log level. + + + + + Error log level. + + + + + Fatal log level. + + + + + Off log level. + + + + + Gets all the available log levels (Trace, Debug, Info, Warn, Error, Fatal, Off). + + + + + Gets all the log levels that can be used to log events (Trace, Debug, Info, Warn, Error, Fatal) + i.e LogLevel.Off is excluded. + + + + + Initializes a new instance of . + + The log level name. + The log level ordinal number. + + + + Gets the name of the log level. + + + + + Gets the ordinal of the log level. + + + + + Compares two objects + and returns a value indicating whether + the first one is equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal == level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is not equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal != level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than the second one. + + The first level. + The second level. + The value of level1.Ordinal > level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal >= level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than the second one. + + The first level. + The second level. + The value of level1.Ordinal < level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal <= level2.Ordinal. + + + + Gets the that corresponds to the specified ordinal. + + The ordinal. + The instance. For 0 it returns , 1 gives and so on. + + + + Returns the that corresponds to the supplied . + + The textual representation of the log level. + The enumeration value. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Determines whether the specified instance is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Compares the level to the other object. + + + The object object. + + + A value less than zero when this logger's is + less than the other logger's ordinal, 0 when they are equal and + greater than zero when this ordinal is greater than the + other ordinal. + + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Delegate used to set/get the culture in use. + + This delegate marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the instance used in the . + + Could be used to pass the to other methods + + + + Occurs when logging changes. + + + + + Gets or sets a value indicating whether NLog should throw exceptions. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether should be thrown. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Gets or sets the global log threshold. Log events below this threshold are not logged. + + + + + Gets or sets the default culture to use. + + This property was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Adds the given assembly which will be skipped + when NLog is trying to find the calling method on stack trace. + + The assembly to skip. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The logger class. This class must inherit from . + The logger of type . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates a logger that discards all log messages. + + Null logger which discards all log messages. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + + + + Gets the specified named custom logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The logger class. This class must inherit from . + The logger of type . Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + The generic way for this method is + + + + Loops through all loggers previously returned by GetLogger. + and recalculates their target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Checks if logging is currently enabled. + + if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Dispose all targets, and shutdown logging. + + + + + Generates a formatted message from the log event + + Log event. + Formatted message + + + + Returns a log message. Used to defer calculation of + the log message until it's actually needed. + + Log message. + + + + Service contract for Log Receiver client. + + This class marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Internal configuration of Log Receiver Service contracts. + + + + + Wire format for NLog Event. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the client-generated identifier of the event. + + + + + Gets or sets the ordinal of the log level. + + + + + Gets or sets the logger ordinal (index into . + + The logger ordinal. + + + + Gets or sets the time delta (in ticks) between the time of the event and base time. + + + + + Gets or sets the message string index. + + + + + Gets or sets the collection of layout values. + + + + + Gets the collection of indexes into array for each layout value. + + + + + Converts the to . + + The object this is part of.. + The logger name prefix to prepend in front of the logger name. + Converted . + + + + Wire format for NLog event package. + + + + + Gets or sets the name of the client. + + The name of the client. + + + + Gets or sets the base time (UTC ticks) for all events in the package. + + The base time UTC. + + + + Gets or sets the collection of layout names which are shared among all events. + + The layout names. + + + + Gets or sets the collection of logger names. + + The logger names. + + + + Gets or sets the list of events. + + The events. + + + + Converts the events to sequence of objects suitable for routing through NLog. + + The logger name prefix to prepend in front of each logger name. + + Sequence of objects. + + + + + Converts the events to sequence of objects suitable for routing through NLog. + + + Sequence of objects. + + + + + List of strings annotated for more terse serialization. + + + + + Initializes a new instance of the class. + + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + + + + + Gets the thread-local dictionary + + Must be true for any subsequent dictionary modification operation + + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The to use when converting a value to a . + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Returns all item names + + A set of the names of all items in current thread-MDC. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified exists in current thread MDC. + + + + Removes the specified from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Async version of Mapped Diagnostics Context - a logical context structure that keeps a dictionary + of strings and provides methods to output them in layouts. Allows for maintaining state across + asynchronous tasks and call contexts. + + + Ideally, these changes should be incorporated as a new version of the MappedDiagnosticsContext class in the original + NLog library so that state can be maintained for multiple threads in asynchronous situations. + + + + + Simulate ImmutableDictionary behavior (which is not yet part of all .NET frameworks). + In future the real ImmutableDictionary could be used here to minimize memory usage and copying time. + + Must be true for any subsequent dictionary modification operation + Prepare dictionary for additional inserts + + + + + Gets the current logical context named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current logical context named item, as . + + Item name. + The to use when converting a value to a string. + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current logical context named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Updates the current logical context with multiple items in single operation + + . + >An that can be used to remove the item from the current logical context (null if no items). + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Returns all item names + + A collection of the names of all items in current logical context. + + + + Checks whether the specified exists in current logical context. + + Item name. + A boolean indicating whether the specified exists in current logical context. + + + + Removes the specified from current logical context. + + Item name. + + + + Clears the content of current logical context. + + + + + Clears the content of current logical context. + + Free the full slot. + + + + Mapped Diagnostics Context + + This class marked as obsolete before NLog 2.0 and it may be removed in a future release. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified item exists in current thread MDC. + + + + Removes the specified item from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Mark a parameter of a method for message templating + + + + + Specifies which parameter of an annotated method should be treated as message-template-string + + + + + The name of the parameter that should be as treated as message-template-string + + + + + The type of the captured hole + + + + + Not decided + + + + + normal {x} + + + + + Serialize operator {@x} (aka destructure) + + + + + stringification operator {$x} + + + + + A hole that will be replaced with a value + + + + + Constructor + + + + Parameter name sent to structured loggers. + This is everything between "{" and the first of ",:}". + Including surrounding spaces and names that are numbers. + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + Type + + + + When the template is positional, this is the parsed name of this parameter. + For named templates, the value of Index is undefined. + + + Alignment to render the parameter, by default 0. + This is the parsed value between "," and the first of ":}" + + + + A fixed value + + + + Number of characters from the original template to copy at the current position. + This can be 0 when the template starts with a hole or when there are multiple consecutive holes. + + + Number of characters to skip in the original template at the current position. + 0 is a special value that mean: 1 escaped char, no hole. It can also happen last when the template ends with a literal. + + + + Combines Literal and Hole + + + + Literal + + + Hole + Uninitialized when = 0. + + + + Description of a single parameter extracted from a MessageTemplate + + + + + Parameter Name extracted from + This is everything between "{" and the first of ",:}". + + + + + Parameter Value extracted from the -array + + + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + + Parameter method that should be used to render the parameter + See also + + + + + Returns index for , when + + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + Parameter CaptureType + + + + Parameters extracted from parsing as MessageTemplate + + + + + + + + + + + Gets the parameters at the given index + + + + + Number of parameters + + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Indicates whether the template was parsed successful, and there are no unmatched parameters + + + + + Constructor for parsing the message template with parameters + + including any parameter placeholders + All + + + + Constructor for named parameters that already has been parsed + + + + + Create MessageTemplateParameter from + + + + + A message template + + + + The original template string. + This is the key passed to structured targets. + + + The list of literal parts, useful for string rendering. + It indicates the number of characters from the original string to print, + then there's a hole with how many chars to skip. + + "Hello {firstName} {lastName}!" + ------------------------------------- + ║P |S ║P|S ║P|S║ + ║6 |11 ║1|10 ║1|0║ + ║Hello |{firstName}║ |{lastName}║!║ + + "{x} * 2 = {2x}" + -------------------- + ║P|S ║P |S ║ + ║0|3 ║7 |4 ║ + ║{x}║ * 2 = |{2x}║ + + The tricky part is escaped braces. They are represented by a skip = 0, + which is interpreted as "move one char forward, no hole". + + "Escaped }} is fun." + ---------------------- + ║P |S║P |S║ + ║9 |0║8 |0║ + ║Escaped }|}║ is fun.|║ + + + + This list of holes. It's used both to fill the string rendering + and to send values along the template to structured targets. + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Create a template, which is already parsed + + + + + + + + + Create a template, which is already parsed + + + + + + + + This is for testing only: recreates from the parsed data. + + + + This is for testing only: rebuilds the hole + + Add to this string builder + ref for performance + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Gets the current literal/hole in the template + + + + + Clears the enumerator + + + + + Restarts the enumerator of the template + + + + + Moves to the next literal/hole in the template + + Found new element [true/false] + + + + Parse format after hole name/index. Handle the escaped { and } in the format. Don't read the last } + + + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Error when parsing a template. + + + + + Current index when the error occurred. + + + + + The template we were parsing + + + + + New exception + + The message to be shown. + Current index when the error occurred. + + + + + Render templates + + + + + Render a template to a string. + + The template. + Culture. + Parameters for the holes. + Do not fallback to StringBuilder.Format for positional templates. + The String Builder destination. + Parameters for the holes. + + + + Render a template to a string. + + The template. + The String Builder destination. + Culture. + Parameters for the holes. + Rendered template, never null. + + + + Convert Render or serialize a value, with optionally backwards-compatible with + + + + Singleton + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Format an object to a readable string, or if it's an object, serialize + + The value to convert + + + + + + + + Try serializing a scalar (string, int, NULL) or simple type (IFormattable) + + + + + Serialize Dictionary as JSON like structure, without { and } + + + "FirstOrder"=true, "Previous login"=20-12-2017 14:55:32, "number of tries"=1 + + + formatstring of an item + + + + + + + + + Convert a value to a string with format and append to . + + The value to convert. + Format sting for the value. + Format provider for the value. + Append to this + + + + Nested Diagnostics Context + + This class marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top object off the NDC stack. The object is removed from the stack. + + The top object from the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all objects on the NDC stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Nested Diagnostics Context - a thread-local structure that keeps a stack + of strings and provides methods to output them in layouts + + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object at the top of the NDC stack if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified object on current thread NDC. + + The object to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top message from the NDC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top object off the NDC stack. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Peeks the first object on the NDC stack + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. + + Array of objects on the stack. + + + + Resets the stack to the original count during . + + + + + Initializes a new instance of the class. + + The stack. + The previous count. + + + + Reverts the stack to original item count. + + + + + Async version of - a logical context structure that keeps a stack + Allows for maintaining scope across asynchronous tasks and call contexts. + + + + + Pushes the specified value on current stack + + The value to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified value on current stack + + The value to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDLC stack. + + The top message which is no longer on the stack. + this methods returns a object instead of string, this because of backwards-compatibility + + + + Pops the top message from the NDLC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top message off the current NDLC stack + + The object from the top of the NDLC stack, if defined; otherwise null. + + + + Peeks the top object on the current NDLC stack + + The object from the top of the NDLC stack, if defined; otherwise null. + + + + Peeks the current scope, and returns its start time + + Scope Creation Time + + + + Peeks the first scope, and returns its start time + + Scope Creation Time + + + + Clears current stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Exception thrown during NLog configuration. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The inner exception. + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Exception thrown during log event processing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + It works as a normal but it discards all messages which an application requests + to be logged. + + It effectively implements the "Null Object" pattern for objects. + + + + + Initializes a new instance of . + + The factory class to be used for the creation of this logger. + + + + Extension methods to setup LogFactory options + + + + + Gets the logger with the full name of the current class, so namespace and class name. + + + + + Gets the specified named logger. + + + + + Configures loading of NLog extensions for Targets and LayoutRenderers + + + + + Configures the output of NLog for diagnostics / troubleshooting + + + + + Configures serialization and transformation of LogEvents + + + + + Loads NLog config created by the method + + + + + Loads NLog config provided in + + + + + Loads NLog config from filename if provided, else fallback to scanning for NLog.config + + + + + Loads NLog config from XML in + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Enable/disables autoloading of NLog extensions by scanning and loading available assemblies + + + Enabled by default, and gives a huge performance hit during startup. Recommended to disable this when running in the cloud. + + + + + Registers NLog extensions from the assembly. + + + + + Registers NLog extensions from the assembly type name + + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + MethodInfo extracted by reflection - typeof(MyClass).GetMethod("MyFunc", BindingFlags.Static). + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + Lambda method. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + Lambda method. + + + + Extension methods to setup NLog options + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Overrides the active with a new custom implementation + + + + + Overrides the active with a new custom implementation + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Specifies the way archive numbering is performed. + + + + + Sequence style numbering. The most recent archive has the highest number. + + + + + Rolling style numbering (the most recent is always #0 then #1, ..., #N. + + + + + Date style numbering. Archives will be stamped with the prior period + (Year, Month, Day, Hour, Minute) datetime. + + + + + Date and sequence style numbering. + Archives will be stamped with the prior period (Year, Month, Day) datetime. + The most recent archive has the highest number (in combination with the date). + + + + + Abstract Target with async Task support + + + + + How many milliseconds to delay the actual write operation to optimize for batching + + + + + How many seconds a Task is allowed to run before it is cancelled. + + + + + How many attempts to retry the same Task, before it is aborted + + + + + How many milliseconds to wait before next retry (will double with each retry) + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Task Scheduler used for processing async Tasks + + + + + Constructor + + + + + Initializes the internal queue for pending logevents + + + + + Override this to create the actual logging task + + Example of how to override this method, and call custom async method + + protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) + { + return CustomWriteAsync(logEvent, token); + } + + private async Task CustomWriteAsync(LogEventInfo logEvent, CancellationToken token) + { + await MyLogMethodAsync(logEvent, token).ConfigureAwait(false); + } + + + The log event. + The cancellation token + + + + + Override this to create the actual logging task for handling batch of logevents + + A batch of logevents. + The cancellation token + + + + + Handle cleanup after failed write operation + + Exception from previous failed Task + The cancellation token + Number of retries remaining + Time to sleep before retrying + Should attempt retry + + + + Schedules the LogEventInfo for async writing + + The log event. + + + + Write to queue without locking + + + + + + Schedules notification of when all messages has been written + + + + + + Closes Target by updating CancellationToken + + + + + Releases any managed resources + + + + + + Checks the internal queue for the next to create a new task for + + Used for race-condition validation between task-completion and timeout + Signals whether previousTask completed an almost full BatchSize + + + + Generates recursive task-chain to perform retry of writing logevents with increasing retry-delay + + + + + Creates new task to handle the writing of the input + + LogEvents to write + New Task created [true / false] + + + + Handles that scheduled task has completed (successfully or failed), and starts the next pending task + + Task just completed + AsyncContinuation to notify of success or failure + + + + Timer method, that is fired when pending task fails to complete within timeout + + + + + + Sends log messages to the remote instance of Chainsaw application from log4j. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a name. + + Name of the target. + + + + Color formatting for using ANSI Color Codes + + + + + Not using bold to get light colors, as it has to be cleared + + + + + Not using bold to get light colors, as it has to be cleared (And because it only works for text, and not background) + + + + + Resets both foreground and background color. + + + + + ANSI have 8 color-codes (30-37) by default. The "bright" (or "intense") color-codes (90-97) are extended values not supported by all terminals + + + + + Writes log messages to the console with customizable coloring. + + Documentation on NLog Wiki + + + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default.In multithreaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether the error stream (stderr) should be used instead of the output stream (stdout). + + + + + + Gets or sets a value indicating whether to use default row highlighting rules. + + + The default rules are: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConditionForeground ColorBackground Color
level == LogLevel.FatalRedNoChange
level == LogLevel.ErrorYellowNoChange
level == LogLevel.WarnMagentaNoChange
level == LogLevel.InfoWhiteNoChange
level == LogLevel.DebugGrayNoChange
level == LogLevel.TraceDarkGrayNoChange
+
+ +
+ + + Gets or sets a value indicating whether to auto-check if the console is available. + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-check if the console has been redirected to file + - Disables coloring logic when System.Console.IsOutputRedirected = true + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + + Enables output using ANSI Color Codes + + + + + + Gets the row highlighting rules. + + + + + + Gets the word highlighting rules. + + + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified log event to the console highlighting entries + and words based on a set of defined rules. + + Log event. + + + + Colored console output color. + + + Note that this enumeration is defined to be binary compatible with + .NET 2.0 System.ConsoleColor + some additions + + + + + Black Color (#000000). + + + + + Dark blue Color (#000080). + + + + + Dark green Color (#008000). + + + + + Dark Cyan Color (#008080). + + + + + Dark Red Color (#800000). + + + + + Dark Magenta Color (#800080). + + + + + Dark Yellow Color (#808000). + + + + + Gray Color (#C0C0C0). + + + + + Dark Gray Color (#808080). + + + + + Blue Color (#0000FF). + + + + + Green Color (#00FF00). + + + + + Cyan Color (#00FFFF). + + + + + Red Color (#FF0000). + + + + + Magenta Color (#FF00FF). + + + + + Yellow Color (#FFFF00). + + + + + White Color (#FFFFFF). + + + + + Don't change the color. + + + + + The row-highlighting condition. + + + + + Initializes static members of the ConsoleRowHighlightingRule class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The condition. + Color of the foreground. + Color of the background. + + + + Gets the default highlighting rule. Doesn't change the color. + + + + + Gets or sets the condition that must be met in order to set the specified foreground and background color. + + + + + + Gets or sets the foreground color. + + + + + + Gets or sets the background color. + + + + + + Checks whether the specified log event matches the condition (if any). + + + Log event. + + + A value of if the condition is not defined or + if it matches, otherwise. + + + + + Writes log messages to the console. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default. In multi threaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Gets or sets a value indicating whether to send the log messages to the standard error instead of the standard output. + + + + + + Gets or sets a value indicating whether to auto-check if the console is available + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + + Gets or sets whether to enable batch writing using char[]-buffers, instead of using + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified logging event to the Console.Out or + Console.Error depending on the value of the Error flag. + + The logging event. + + Note that the Error option is not supported on .NET Compact Framework. + + + + + + + + Write to output + + + + + Highlighting rule for Win32 colorful console. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The text to be matched.. + Color of the foreground. + Color of the background. + + + + Gets or sets the regular expression to be matched. You must specify either text or regex. + + + + + + Gets or sets the condition that must be met before scanning the row for highlight of words + + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets the text to be matched. You must specify either text or regex. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Gets or sets the foreground color. + + + + + + Gets or sets the background color. + + + + + + Gets the compiled regular expression that matches either Text or Regex property. Only used when is true. + + + + + A descriptor for an archive created with the DateAndSequence numbering mode. + + + + + The full name of the archive file. + + + + + The parsed date contained in the file name. + + + + + The parsed sequence number contained in the file name. + + + + + Determines whether produces the same string as the current instance's date once formatted with the current instance's date format. + + The date to compare the current object's date to. + True if the formatted dates are equal, otherwise False. + + + + Initializes a new instance of the class. + + + + + Writes log messages to the attached managed debugger. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the attached debugger. + + The logging event. + + + + Mock target - useful for testing. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + Increases the number of messages. + + The logging event. + + + + Default class for serialization of values to JSON format. + + + + + Singleton instance of the serializer. + + + + + Private. Use + + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + Serialized value. + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + serialisation options + Serialized value. + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + The objects in path (Avoid cyclic reference loop). + The current depth (level) of recursion. + Object serialized successfully (true/false). + + + + No quotes needed for this type? + + + + + Checks the object if it is numeric + + TypeCode for the object + Accept fractional types as numeric type. + + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + all options + JSON escaped string + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + Should non-ascii characters be encoded + + JSON escaped string + + + + Action that should be taken if the message is greater than + the max message size allowed by the Event Log. + + + + + Truncate the message before writing to the Event Log. + + + + + Split the message and write multiple entries to the Event Log. + + + + + Discard of the message. It will not be written to the Event Log. + + + + + Check if cleanup should be performed on initialize new file + + Skip cleanup when initializing new file, just after having performed archive operation + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Characters determining the start of the . + + + + + Characters determining the end of the . + + + + + File name which is used as template for matching and replacements. + It is expected to contain a pattern to match. + + + + + The begging position of the + within the . -1 is returned + when no pattern can be found. + + + + + The ending position of the + within the . -1 is returned + when no pattern can be found. + + + + + Replace the pattern with the specified String. + + + + + + + Archives the log-files using a date style numbering. Archives will be stamped with the + prior period (Year, Month, Day, Hour, Minute) datetime. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Archives the log-files using a date and sequence style numbering. Archives will be stamped + with the prior period (Year, Month, Day) datetime. The most recent archive has the highest number (in + combination with the date). + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Parse filename with date and sequence pattern + + + dateformat for archive + + the found pattern. When failed, then default + the found pattern. When failed, then default + + + + + Archives the log-files using the provided base-archive-filename. If the base-archive-filename causes + duplicate archive filenames, then sequence-style is automatically enforced. + + Example: + Base Filename trace.log + Next Filename trace.0.log + + The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Dynamically converts a non-template archiveFilePath into a correct archiveFilePattern. + Before called the original IFileArchiveMode, that has been wrapped by this + + + + + Determines if the file name as contains a numeric pattern i.e. {#} in it. + + Example: + trace{#}.log Contains the numeric pattern. + trace{###}.log Contains the numeric pattern. + trace{#X#}.log Contains the numeric pattern (See remarks). + trace.log Does not contain the pattern. + + Occasionally, this method can identify the existence of the {#} pattern incorrectly. + File name to be checked. + when the pattern is found; otherwise. + + + + Archives the log-files using a rolling style numbering (the most recent is always #0 then + #1, ..., #N. + + When the number of archive files exceed the obsolete archives + are deleted. + + + + + Replaces the numeric pattern i.e. {#} in a file name with the parameter value. + + File name which contains the numeric pattern. + Value which will replace the numeric pattern. + File name with the value of in the position of the numeric pattern. + + + + Archives the log-files using a sequence style numbering. The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Modes of archiving files based on time. + + + + + Don't archive based on time. + + + + + AddToArchive every year. + + + + + AddToArchive every month. + + + + + AddToArchive daily. + + + + + AddToArchive every hour. + + + + + AddToArchive every minute. + + + + + AddToArchive every Sunday. + + + + + AddToArchive every Monday. + + + + + AddToArchive every Tuesday. + + + + + AddToArchive every Wednesday. + + + + + AddToArchive every Thursday. + + + + + AddToArchive every Friday. + + + + + AddToArchive every Saturday. + + + + + Type of filepath + + + + + Detect of relative or absolute + + + + + Relative path + + + + + Absolute path + + Best for performance + + + + Writes log messages to one or more files. + + Documentation on NLog Wiki + + + + Default clean up period of the initialized files. When a file exceeds the clean up period is removed from the list. + + Clean up period is defined in days. + + + + The maximum number of initialized files before clean up procedures are initiated, + to keep the number of initialized files to a minimum. Chose 25 to cater for monthly rolling of log-files. + + + + + This value disables file archiving based on the size. + + + + + Holds the initialized files each given time by the instance. Against each file, the last write time is stored. + + Last write time is store in local time (no UTC). + + + + List of the associated file appenders with the instance. + + + + + The number of initialized files at any one time. + + + + + The maximum number of archive files that should be kept. + + + + + The maximum days of archive files that should be kept. + + + + + The filename as target + + + + + The archive file name as target + + + + + The date of the previous log event. + + + + + The file name of the previous log event. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the name of the file to write to. + + + This FileName string is a layout which may include instances of layout renderers. + This lets you use a single target to write to multiple files. + + + The following value makes NLog write logging events to files based on the log level in the directory where + the application runs. + ${basedir}/${level}.log + All Debug messages will go to Debug.log, all Info messages will go to Info.log and so on. + You can combine as many of the layout renderers as you want to produce an arbitrary log file name. + + + + + + Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. + If set to false, nothing gets written when the filename is wrong. + + + + + + Is the an absolute or relative path? + + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + + Gets or sets a value indicating whether to delete old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + + + + + + Gets or sets a value indicating whether to replace file contents on each write instead of appending log message at the end. + + + + + + Gets or sets a value indicating whether to keep log file open instead of opening and closing it on each logging event. + + + Setting this property to True helps improve performance. + + + + + + Gets or sets the maximum number of log file names that should be stored as existing. + + + The bigger this number is the longer it will take to write each log record. The smaller the number is + the higher the chance that the clean function will be run when no new files have been opened. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + + Gets or sets the line ending mode. + + + + + + Gets or sets a value indicating whether to automatically flush the file buffers after each log message. + + + + + + Gets or sets the number of files to be kept open. Setting this to a higher value may improve performance + in a situation where a single File target is writing to many files + (such as splitting by level or by logger). + + + The files are managed on a LRU (least recently used) basis, which flushes + the files that have not been used for the longest period of time should the + cache become full. As a rule of thumb, you shouldn't set this parameter to + a very high value. A number like 10-15 shouldn't be exceeded, because you'd + be keeping a large number of files open which consumes system resources. + + + + + + Gets or sets the maximum number of seconds that files are kept open. If this number is negative the files are + not automatically closed after a period of inactivity. + + + + + + Gets or sets the maximum number of seconds before open files are flushed. If this number is negative or zero + the files are not flushed by timer. + + + + + + Gets or sets the log file buffer size in bytes. + + + + + + Gets or sets the file encoding. + + + + + + Gets or sets whether or not this target should just discard all data that its asked to write. + Mostly used for when testing NLog Stack except final write + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on different network hosts. + + + This effectively prevents files from being kept open. + + + + + + Gets or sets a value indicating whether to write BOM (byte order mark) in created files + + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + The actual delay is a random value between 0 and the value specified + in this parameter. On each failed attempt the delay base is doubled + up to times. + + + Assuming that ConcurrentWriteAttemptDelay is 10 the time to wait will be:

+ a random value between 0 and 10 milliseconds - 1st attempt
+ a random value between 0 and 20 milliseconds - 2nd attempt
+ a random value between 0 and 40 milliseconds - 3rd attempt
+ a random value between 0 and 80 milliseconds - 4th attempt
+ ...

+ and so on. + + + + +

+ Gets or sets a value indicating whether to archive old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + After archiving the old file, the current log file will be empty. + + +
+ + + Gets or sets a value of the file size threshold to archive old log file on startup. + + + This option won't work if is set to false + Default value is 0 which means that the file is archived as soon as archival on + startup is enabled. + + + + + + Gets or sets a value specifying the date format to use when archiving files. + + + This option works only when the "ArchiveNumbering" parameter is set either to Date or DateAndSequence. + + + + + + Gets or sets the size in bytes above which log files will be automatically archived. + + Warning: combining this with isn't supported. We cannot create multiple archive files, if they should have the same name. + Choose: + + + Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. + + + + + + Gets or sets a value indicating whether to automatically archive log files every time the specified time passes. + + + Files are moved to the archive as part of the write operation if the current period of time changes. For example + if the current hour changes from 10 to 11, the first write that will occur + on or after 11:00 will trigger the archiving. +

+ Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. +

+
+ +
+ + + Is the an absolute or relative path? + + + + + + Gets or sets the name of the file to be used for an archive. + + + It may contain a special placeholder {#####} + that will be replaced with a sequence of numbers depending on + the archiving strategy. The number of hash characters used determines + the number of numerical digits to be used for numbering files. + + + + + + Gets or sets the maximum number of archive files that should be kept. + + + + + + Gets or sets the maximum days of archive files that should be kept. + + + + + + Gets or sets the way file archives are numbered. + + + + + + Used to compress log files during archiving. + This may be used to provide your own implementation of a zip file compressor, + on platforms other than .Net4.5. + Defaults to ZipArchiveFileCompressor on .Net4.5 and to null otherwise. + + + + + + Gets or sets a value indicating whether to compress archive files into the zip archive format. + + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + + Gets or sets a value indicating whether the footer should be written only when the file is archived. + + + + + + Gets the characters that are appended after each line. + + + + + Refresh the ArchiveFilePatternToWatch option of the . + The log file must be watched for archiving when multiple processes are writing to the same + open file. + + + + + Removes records of initialized files that have not been + accessed in the last two days. + + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Removes records of initialized files that have not been + accessed after the specified date. + + The cleanup threshold. + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Flushes all pending file operations. + + The asynchronous continuation. + + The timeout parameter is ignored, because file APIs don't provide + the needed functionality. + + + + + Returns the suitable appender factory ( ) to be used to generate the file + appenders associated with the instance. + + The type of the file appender factory returned depends on the values of various properties. + + suitable for this instance. + + + + Initializes file logging by creating data structures that + enable efficient multi-file logging. + + + + + Closes the file(s) opened for writing. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Get full filename (=absolute) and cleaned if needed. + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes the specified array of logging events to a file specified in the FileName + parameter. + + An array of objects. + + This function makes use of the fact that the events are batched by sorting + the requests by filename. This optimizes the number of open/close calls + and can help improve performance. + + + + + Returns estimated size for memory stream, based on events count and first event size in bytes. + + Count of events + Bytes count of first event + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Gets the bytes to be written to the file. + + Log event. + Array of bytes that are ready to be written. + + + + Modifies the specified byte array before it gets sent to a file. + + The byte array. + The modified byte array. The function can do the modification in-place. + + + + Gets the bytes to be written to the file. + + The log event to be formatted. + to help format log event. + Optional temporary char-array to help format log event. + Destination for the encoded result. + + + + Formats the log event for write. + + The log event to be formatted. + for the result. + + + + Modifies the specified byte array before it gets sent to a file. + + The LogEvent being written + The byte array. + + + + Archives fileName to archiveFileName. + + File name to be archived. + Name of the archive file. + + + + Gets the correct formatting to be used based on the value of for converting values which will be inserting into file + names during archiving. + + This value will be computed only when a empty value or is passed into + + Date format to used irrespectively of value. + Formatting for dates. + + + + Calculate the DateTime of the requested day of the week. + + The DateTime of the previous log event. + The next occuring day of the week to return a DateTime for. + The DateTime of the next occuring dayOfWeek. + For example: if previousLogEventTimestamp is Thursday 2017-03-02 and dayOfWeek is Sunday, this will return + Sunday 2017-03-05. If dayOfWeek is Thursday, this will return *next* Thursday 2017-03-09. + + + + Invokes the archiving process after determining when and which type of archiving is required. + + File name to be checked and archived. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + + + + Gets the pattern that archive files will match + + Filename of the log file + Log event that the instance is currently processing. + A string with a pattern that will match the archive file names + + + + Archives the file if it should be archived. + + The file name to check for. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + True when archive operation of the file was completed (by this target or a concurrent target) + + + + Closes any active file-appenders that matches the input filenames. + File-appender is requested to invalidate/close its filehandle, but keeping its archive-mutex alive + + + + + Indicates if the automatic archiving process should be executed. + + File name to be written. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the correct filename to archive + + + + + + Gets the file name for archiving, or null if archiving should not occur based on file size. + + File name to be written. + The size in bytes of the next chunk of data to be written in the file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the file name for archiving, or null if archiving should not occur based on date/time. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Truncates the input-time, so comparison of low resolution times (like dates) are not affected by ticks + + High resolution Time + Time Resolution Level + Truncated Low Resolution Time + + + + Evaluates which parts of a file should be written (header, content, footer) based on various properties of + instance and writes them. + + File name to be written. + Raw sequence of to be written into the content part of the file. + File has just been opened. + + + + Initialise a file to be used by the instance. Based on the number of initialized + files and the values of various instance properties clean up and/or archiving processes can be invoked. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file (DateTime.MinValue if just initialized). + + + + Writes the file footer and finalizes the file in instance internal structures. + + File name to close. + Indicates if the file is being finalized for archiving. + + + + Writes the footer information to a file. + + The file path to write to. + + + + Decision logic whether to archive logfile on startup. + and properties. + + File name to be written. + Decision whether to archive or not. + + + + Invokes the archiving and clean up of older archive file based on the values of + and + properties respectively. + + File name to be written. + Log event that the instance is currently processing. + + + + Creates the file specified in and writes the file content in each entirety i.e. + Header, Content and Footer. + + The name of the file to be written. + Sequence of to be written in the content section of the file. + First attempt to write? + This method is used when the content of the log file is re-written on every write. + + + + Writes the header information and byte order mark to a file. + + File appender associated with the file. + + + + The sequence of to be written in a file after applying any formatting and any + transformations required from the . + + The layout used to render output message. + Sequence of to be written. + Usually it is used to render the header and hooter of the files. + + + + Controls the text and color formatting for + + + + + Creates a TextWriter for the console to start building a colored text message + + Active console stream + Optional StringBuilder to optimize performance + TextWriter for the console + + + + Releases the TextWriter for the console after having built a colored text message (Restores console colors) + + Colored TextWriter + Active console stream + Original foreground color for console (If changed) + Original background color for console (If changed) + Flush TextWriter + + + + Changes foreground color for the Colored TextWriter + + Colored TextWriter + New foreground color for the console + Old previous backgroundColor color for the console + Old foreground color for the console + + + + Changes backgroundColor color for the Colored TextWriter + + Colored TextWriter + New backgroundColor color for the console + Old previous backgroundColor color for the console + Old backgroundColor color for the console + + + + Restores console colors back to their original state + + Colored TextWriter + Original foregroundColor color for the console + Original backgroundColor color for the console + + + + Writes multiple characters to console in one operation (faster) + + Colored TextWriter + Output Text + Start Index + End Index + + + + Writes single character to console + + Colored TextWriter + Output Text + + + + Writes whole string and completes with newline + + Colored TextWriter + Output Text + + + + Default row highlight rules for the console printer + + + + + Check if cleanup should be performed on initialize new file + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Create a wildcard file-mask that allows one to find all files belonging to the same archive. + + Base archive file pattern + Wildcard file-mask + + + + Search directory for all existing files that are part of the same archive. + + Base archive file pattern + + + + + Generate the next archive filename for the archive. + + Base archive file pattern + File date of archive + Existing files in the same archive + + + + + Return all files that should be removed from the provided archive. + + Base archive file pattern + Existing files in the same archive + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + + + + may be configured to compress archived files in a custom way + by setting before logging your first event. + + + + + Create archiveFileName by compressing fileName. + + Absolute path to the log file to compress. + Absolute path to the compressed archive file to create. + + + + Interface for serialization of values, maybe even objects to JSON format. + Useful for wrappers for existing serializers. + + + + + Returns a serialization of an object + into JSON format. + + The object to serialize to JSON. + Serialized value (null = Serialize failed). + + + + Options for JSON serialisation + + + + + Add quotes around object keys? + + + + + Format provider for value + + + + + Format string for value + + + + + Should non-ascii characters be encoded + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + Serialize enum as string value + + + + + Should dictionary keys be sanitized. All characters must either be letters, numbers or underscore character (_). + + Any other characters will be converted to underscore character (_) + + + + + How far down the rabbit hole should the Json Serializer go with object-reflection before stopping + + + + Initializes a new instance of the class. + + + + Line ending mode. + + + + + Insert platform-dependent end-of-line sequence after each line. + + + + + Insert CR LF sequence (ASCII 13, ASCII 10) after each line. + + + + + Insert CR character (ASCII 13) after each line. + + + + + Insert LF character (ASCII 10) after each line. + + + + + Insert null terminator (ASCII 0) after each line. + + + + + Do not insert any line ending. + + + + + Gets the name of the LineEndingMode instance. + + + + + Gets the new line characters (value) of the LineEndingMode instance. + + + + + Initializes a new instance of . + + The mode name. + The new line characters to be used. + + + + Returns the that corresponds to the supplied . + + + The textual representation of the line ending mode, such as CRLF, LF, Default etc. + Name is not case sensitive. + + The value, that corresponds to the . + There is no line ending mode with the specified name. + + + + Compares two objects and returns a + value indicating whether the first one is equal to the second one. + + The first level. + The second level. + The value of mode1.NewLineCharacters == mode2.NewLineCharacters. + + + + Compares two objects and returns a + value indicating whether the first one is not equal to the second one. + + The first mode + The second mode + The value of mode1.NewLineCharacters != mode2.NewLineCharacters. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms + and data structures like a hash table. + + + + + Determines whether the specified is + equal to this instance. + + The to compare with + this instance. + + Value of true if the specified + is equal to this instance; otherwise, false. + + + The parameter is null. + + + + Indicates whether the current object is equal to another object of the same type. + true if the current object is equal to the parameter; otherwise, false. + An object to compare with this object. + + + + Provides a type converter to convert objects to and from other representations. + + + + + Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. + + + true if this converter can perform the conversion; otherwise, false. + + An that provides a format context. A that represents the type you want to convert from. + + + + Converts the given object to the type of this converter, using the specified context and culture information. + + + An that represents the converted value. + + An that provides a format context. The to use as the current culture. The to convert. The conversion cannot be performed. + + + + Sends log messages by email using SMTP protocol. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ Mail target works best when used with BufferingWrapper target + which lets you send multiple log messages in single mail +

+

+ To set up the buffered mail target in the configuration file, + use the following syntax: +

+ +

+ To set up the buffered mail target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets sender's email address (e.g. joe@domain.com). + + + + + + Gets or sets recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets a value indicating whether to add new lines between log entries. + + A value of true if new lines should be added; otherwise, false. + + + + + Gets or sets the mail subject. + + + + + + Gets or sets mail message body (repeated for each log message send in one mail). + + Alias for the Layout property. + + + + + Gets or sets encoding to be used for sending e-mail. + + + + + + Gets or sets a value indicating whether to send message as HTML instead of plain text. + + + + + + Gets or sets SMTP Server to be used for sending. + + + + + + Gets or sets SMTP Authentication mode. + + + + + + Gets or sets the username used to connect to SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + + Gets or sets the password used to authenticate against SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + + Gets or sets a value indicating whether SSL (secure sockets layer) should be used when communicating with SMTP server. + + . + + + + Gets or sets the port number that SMTP Server is listening on. + + + + + + Gets or sets a value indicating whether the default Settings from System.Net.MailSettings should be used. + + + + + + Specifies how outgoing email messages will be handled. + + + + + + Gets or sets the folder where applications save mail messages to be processed by the local SMTP server. + + + + + + Gets or sets the priority used for sending mails. + + + + + + Gets or sets a value indicating whether NewLine characters in the body should be replaced with
tags. +
+ Only happens when is set to true. + +
+ + + Gets or sets a value indicating the SMTP client timeout. + + Warning: zero is not infinite waiting + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Renders an array logging events. + + Array of logging events. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Create mail and send with SMTP + + event printed in the body of the event + + + + Create buffer for body + + all events + first event for header + last event for footer + + + + + Set properties of + + last event for username/password + client to set properties on + Configure not at , as the properties could have layout renderers. + + + + Handle if it is a virtual directory. + + + + + + + Create key for grouping. Needed for multiple events in one mail message + + event for rendering layouts + string to group on + + + + Append rendered to + + append to this + event for rendering + append if not null + + + + Create the mail message with the addresses, properties and body. + + + + + Render and add the addresses to + + Addresses appended to this list + layout with addresses, ; separated + event for rendering the + added a address? + + + + Writes log messages to an ArrayList in memory for programmatic retrieval. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the list of logs gathered in the . + + + + + Gets or sets the max number of items to have in memory + + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + A parameter to MethodCall. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout to use for parameter value. + + + + Initializes a new instance of the class. + + Name of the parameter. + The layout. + + + + Initializes a new instance of the class. + + The name of the parameter. + The layout. + The type of the parameter. + + + + Gets or sets the name of the parameter. + + + + + + Gets or sets the type of the parameter. Obsolete alias for + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets the class name. + + + + + + Gets or sets the method name. The method must be public and static. + + Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx + e.g. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Initializes a new instance of the class. + + Name of the target. + Method to call on logevent. + + + + Initializes the target. + + + + + Calls the specified Method. + + Method parameters. + The logging event. + + + + Calls the specified Method. + + Method parameters. + + + + The base class for all targets which call methods (local or remote). + Manages parameters and type coercion. + + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + + + + Prepares an array of parameters to be passed based on the logging event and calls DoInvoke(). + + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Sends log messages over the network. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ To print the results, use any application that's able to receive messages over + TCP or UDP. NetCat is + a simple but very powerful command-line tool that can be used for that. This image + demonstrates the NetCat tool receiving log messages from Network target. +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will be very slow. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+

+ There are two specialized versions of the Network target: Chainsaw + and NLogViewer which write to instances of Chainsaw log4j viewer + or NLogViewer application respectively. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6) (not supported on Windows Phone 7.0)
  • +
  • tcp4://host:port - force TCP/IPv4 (not supported on Windows Phone 7.0)
  • +
  • tcp6://host:port - force TCP/IPv6 (not supported on Windows Phone 7.0)
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6, not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp4://host:port - force UDP/IPv4 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp6://host:port - force UDP/IPv6 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • http://host:port/pageName - HTTP using POST verb
  • +
  • https://host:port/pageName - HTTPS using POST verb
  • +
+ For SOAP-based webservice support over HTTP use WebService target. +
+ +
+ + + Gets or sets a value indicating whether to keep connection open whenever possible. + + + + + + Gets or sets a value indicating whether to append newline at the end of log message. + + + + + + Gets or sets the end of line value if a newline is appended at the end of log message . + + + + + + Gets or sets the maximum message size in bytes. + + + + + + Gets or sets the size of the connection cache (number of connections which are kept alive). + + + + + + Gets or sets the maximum current connections. 0 = no maximum. + + + + + + Gets or sets the action that should be taken if the will be more connections than . + + + + + + Gets or sets the maximum queue size. + + + + + + Gets or sets the action that should be taken if the message is larger than + maxMessageSize. + + + + + + Gets or sets the encoding to be used. + + + + + + Get or set the SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Sends the + rendered logging event over the network optionally concatenating it with a newline character. + + The logging event. + + + + Try to remove. + + + + + removed something? + + + + Gets the bytes to be written. + + Log event. + Byte array. + + + + The action to be taken when there are more connections then the max. + + + + + Just allow it. + + + + + Discard the connection item. + + + + + Block until there's more room in the queue. + + + + + Action that should be taken if the message overflows. + + + + + Report an error. + + + + + Split the message into smaller pieces. + + + + + Discard the entire message. + + + + + Represents a parameter to a NLogViewer target. + + + + + Initializes a new instance of the class. + + + + + Gets or sets viewer parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + Sends log messages to the remote instance of NLog Viewer. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include stack contents. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDLC item separator. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets the layout renderer which produces Log4j-compatible XML events. + + + + + Gets or sets the instance of that is used to format log messages. + + + + + + Discards log messages. Used mainly for debugging and benchmarking. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets a value indicating whether to perform layout calculation. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Does nothing. Optionally it calculates the layout text but + discards the results. + + The logging event. + + + + Outputs log messages through the OutputDebugString() Win32 API. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Outputs the rendered logging event through the OutputDebugString() Win32 API. + + The logging event. + + + + SMTP authentication modes. + + + + + No authentication. + + + + + Basic - username and password. + + + + + NTLM Authentication. + + + + + Represents logging target. + + + + Are all layouts in this target thread-agnostic, if so we don't precalculate the layouts + + + + The Max StackTraceUsage of all the in this Target + + + + + Gets or sets the name of the target. + + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers + Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + Gets the object which can be used to synchronize asynchronous operations that must rely on the . + + + + + Gets the logging configuration this target is part of. + + + + + Gets a value indicating whether the target has been initialized. + + + + + Can be used if has been enabled. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Closes the target. + + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Calls the on each volatile layout + used by this target. + This method won't prerender if all layouts in this target are thread-agnostic. + + + The log event. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Writes the log to the target. + + Log event to write. + + + + Writes the array of log events. + + The log events. + + + + Writes the array of log events. + + The log events. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Closes the target and releases any unmanaged resources. + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Writes async log event to the log target. + + Async Log event to be written out. + + + + Writes a log event to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Log event to be written out. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + NOTE! Obsolete, instead override WriteAsyncThreadSafe(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target, in a thread safe manner. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Writes an array of logging events to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Merges (copies) the event context properties from any event info object stored in + parameters of the given event info object. + + The event info object to perform the merge to. + + + + Renders the event info in layout. + + The layout. + The event info. + String representing log event. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Should the exception be rethrown? + + + Upgrade to private protected when using C# 7.2 + + + + Marks class as a logging target and assigns a name to it. + + This attribute is not required when registering the target in the API. + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets a value indicating whether to the target is a wrapper target (used to generate the target summary documentation page). + + + + + Gets or sets a value indicating whether to the target is a compound target (used to generate the target summary documentation page). + + + + + Attribute details for + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Gets or sets when an empty value should cause the property to be included + + + + + Gets or sets the type of the property. + + + + + Represents target that supports context capture using MDLC, MDC, NDLC and NDC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets or sets a value indicating whether to include contents of the dictionary + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the + + + + + + Gets the array of custom attributes to be passed into the logevent context + + + + + + Constructor + + + + + + + + Check if logevent has properties (or context properties) + + + True if properties should be included + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Dictionary with any context properties for the logEvent (Null if none found) + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Optional prefilled dictionary + Dictionary with any context properties for the logEvent (Null if none found) + + + + Creates combined dictionary of all configured properties for logEvent + + + Dictionary with all collected properties for logEvent + + + + Creates combined dictionary of all configured properties for logEvent + + + Optional prefilled dictionary + Dictionary with all collected properties for logEvent + + + + Generates a new unique name, when duplicate names are detected + + LogEvent that triggered the duplicate name + Duplicate item name + Item Value + Dictionary of context values + New (unique) value (or null to skip value). If the same value is used then the item will be overwritten + + + + Returns the captured snapshot of for the + + + Dictionary with MDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with MDLC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDLC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with GDC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDC key + MDC value + Snapshot of MDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDLC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDLC key + MDLC value + Snapshot of MDLC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDC value + Snapshot of NDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDLC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDLC value + Snapshot of NDLC value + Include object value in snapshot + + + + Take snapshot of a single object value + + Log event + Key Name (null when NDC / NDLC) + Object Value + Snapshot of value + Include object value in snapshot + + + Internal Layout that allows capture of MDC context + + + Internal Layout that allows capture of NDC context + + + Internal Layout that allows capture of MDLC context + + + Internal Layout that allows capture of NDLC context + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the layout used to format log messages. + + + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the text to be rendered. + + + + + + Gets or sets the footer. + + + + + + Gets or sets the header. + + + + + + Gets or sets the layout with header and footer. + + The layout with header and footer. + + + + Sends log messages through System.Diagnostics.Trace. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Always use independent of + + + + + + Forward to (Instead of ) + + + Trace.Fail can have special side-effects, and give fatal exceptions, message dialogs or Environment.FailFast + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Writes the specified logging event to the facility. + + Redirects the log message depending on and . + When is false: + - writes to + - writes to + - writes to + - writes to + - writes to + - writes to + + The logging event. + + + + Web service protocol. + + + + + Use SOAP 1.1 Protocol. + + + + + Use SOAP 1.2 Protocol. + + + + + Use HTTP POST Protocol. + + + + + Use HTTP GET Protocol. + + + + + Do an HTTP POST of a JSON document. + + + + + Do an HTTP POST of an XML document. + + + + + Web Service Proxy Configuration Type + + + + + Default proxy configuration from app.config (System.Net.WebRequest.DefaultWebProxy) + + + Example of how to configure default proxy using app.config + + <system.net> + <defaultProxy enabled = "true" useDefaultCredentials = "true" > + <proxy usesystemdefault = "True" /> + </defaultProxy> + </system.net> + + + + + + Automatic use of proxy with authentication (cached) + + + + + Disables use of proxy (fast) + + + + + Custom proxy address (cached) + + + + + Calls the specified web service on each log message. + + Documentation on NLog Wiki + + The web service must implement a method that accepts a number of string parameters. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

The example web service that works with this example is shown below

+ +
+
+ + + dictionary that maps a concrete implementation + to a specific -value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target + + + + Gets or sets the web service URL. + + + + + + Gets or sets the Web service method name. Only used with Soap. + + + + + + Gets or sets the Web service namespace. Only used with Soap. + + + + + + Gets or sets the protocol to be used when calling web service. + + + + + + Gets or sets the proxy configuration when calling web service + + + + + + Gets or sets the custom proxy address, include port separated by a colon + + + + + + Should we include the BOM (Byte-order-mark) for UTF? Influences the property. + + This will only work for UTF-8. + + + + + + Gets or sets the encoding. + + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Gets or sets the name of the root XML element, + if POST of XML document chosen. + If so, this property must not be null. + (see and ). + + + + + + Gets or sets the (optional) root namespace of the XML document, + if POST of XML document chosen. + (see and ). + + + + + + Gets the array of parameters to be passed. + + + + + + Indicates whether to pre-authenticate the HttpWebRequest (Requires 'Authorization' in parameters) + + + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Invokes the web service method. + + Parameters to be passed. + The logging event. + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Builds the URL to use when calling the web service for a message, depending on the WebServiceProtocol. + + + + + + + Write from input to output. Fix the UTF-8 bom + + + + + + + + + base class for POST formatters, that + implement former PrepareRequest() method, + that creates the content for + the requested kind of HTTP request + + + + + Asynchronous request queue. + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Gets the number of requests currently in the queue. + + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + Queue was empty before enqueue + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued (-1 means everything). + The array of log events. + + + + Dequeues into a preallocated array, instead of allocating a new one + + Maximum number of items to be dequeued + Preallocated list + + + + Clears the queue. + + + + + Gets or sets the request limit. + + + + + Gets or sets the action to be taken when there's no more room in + the queue and another request is enqueued. + + + + + Notifies about log event that was dropped when set to + + + + + Notifies when queue size is growing over + + + + + Raise event when queued element was dropped because of queue overflow + + Dropped queue item + + + + Raise event when RequestCount overflow + + current requests count + + + + Provides asynchronous, buffered execution of target writes. + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queueing + messages and processing them in a separate thread. You should wrap targets + that spend a non-trivial amount of time in their Write() method with asynchronous + target to speed up logging. +

+

+ Because asynchronous logging is quite a common scenario, NLog supports a + shorthand notation for wrapping all targets with AsyncWrapper. Just add async="true" to + the <targets/> element in the configuration file. +

+ + + ... your targets go here ... + + ]]> +
+ +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of requests in the queue. + The action to be taken when the queue overflows. + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Gets or sets the time in milliseconds to sleep between batches. (1 or less means trigger on new activity) + + + + + + Raise event when Target cannot store LogEvent. + Event arg contains lost LogEvents + + + + + Raises when event queue grow. + Queue can grow when was set to + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the limit of full s to write before yielding into + Performance is better when writing many small batches, than writing a single large batch + + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + + Gets the queue of lazy writer thread requests. + + + + + Schedules a flush of pending events in the queue (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target by starting the lazy writer timer. + + + + + Shuts down the lazy writer timer. + + + + + Starts the lazy writer thread which periodically writes + queued log messages. + + + + + Attempts to start an instant timer-worker-thread which can write + queued log messages. + + Returns true when scheduled a timer-worker-thread + + + + Stops the lazy writer thread. + + + + + Adds the log event to asynchronous queue to be processed by + the lazy writer thread. + + The log event. + + The is called + to ensure that the log event can be processed in another thread. + + + + + Write to queue without locking + + + + + + The action to be taken when the queue overflows. + + + + + Grow the queue. + + + + + Discard the overflowing item. + + + + + Block until there's more room in the queue. + + + + + Causes a flush on a wrapped target if LogEvent satisfies the . + If condition isn't set, flushes on each write. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Gets or sets the condition expression. Log events who meet this condition will cause + a flush on the wrapped target. + + + + + + Delay the flush until the LogEvent has been confirmed as written + + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + The wrapped target. + Name of the target + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes the target. + + + + + Forwards the call to the .Write() + and calls on it if LogEvent satisfies + the flush condition or condition is null. + + Logging event to be written out. + + + + Schedules a flush operation, that triggers when all pending flush operations are completed (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + The action to take when the buffer overflows. + + + + Gets or sets the number of log events to be buffered. + + + + + + Gets or sets the timeout (in milliseconds) after which the contents of buffer will be flushed + if there's no write in the specified period of time. Use -1 to disable timed flushes. + + + + + + Gets or sets a value indicating whether to use sliding timeout. + + + This value determines how the inactivity period is determined. If sliding timeout is enabled, + the inactivity timer is reset after each write, if it is disabled - inactivity timer will + count from the first event written to the buffer. + + + + + + Gets or sets the action to take if the buffer overflows. + + + Setting to will replace the + oldest event with new events without sending events down to the wrapped target, and + setting to will flush the + entire buffer to the wrapped target. + + + + + + Flushes pending events in the buffer (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target. + + + + + Closes the target by flushing pending events in the buffer (if any). + + + + + Adds the specified log event to the buffer and flushes + the buffer in case the buffer gets full. + + The log event. + + + + The action to be taken when the buffer overflows. + + + + + Flush the content of the buffer. + + + + + Discard the oldest item. + + + + + A base class for targets which wrap other (multiple) targets + and provide various forms of target routing. + + + + + Initializes a new instance of the class. + + The targets. + + + + Gets the collection of targets managed by this compound target. + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Writes logging event to the log target. + + Logging event to be written out. + + + + Flush any pending log messages for all wrapped targets. + + The asynchronous continuation. + + + + Provides fallback-on-error. + + Documentation on NLog Wiki + +

This example causes the messages to be written to server1, + and if it fails, messages go to server2.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Gets or sets a value indicating whether to return to the first target after any successful write. + + + + + + + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + The method remembers the last-known-successful target + and starts the iteration from it. + If is set, the method + resets the target to the first target + stored in . + + + + + Filtering rule for . + + + + + Initializes a new instance of the FilteringRule class. + + + + + Initializes a new instance of the FilteringRule class. + + Condition to be tested against all events. + Filter to apply to all log events when the first condition matches any of them. + + + + Gets or sets the condition to be tested. + + + + + + Gets or sets the resulting filter to be applied when the condition matches. + + + + + + Filters log entries based on a condition. + + Documentation on NLog Wiki + +

This example causes the messages not contains the string '1' to be ignored.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The condition. + + + + Initializes a new instance of the class. + + The wrapped target. + The condition. + + + + Gets or sets the condition expression. Log events who meet this condition will be forwarded + to the wrapped target. + + + + + + Gets or sets the filter. Log events who evaluates to will be discarded + + + + + + + + + Checks the condition against the passed log event. + If the condition is met, the log event is forwarded to + the wrapped target. + + Log event. + + + + + + + Limits the number of messages written per timespan to the wrapped target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of messages written per interval. + Interval in which the maximum number of messages can be written. + + + + Gets or sets the maximum allowed number of messages written per . + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets or sets the interval in which messages will be written up to the number of messages. + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets the DateTime when the current will be reset. + + + + + + Gets the number of written in the current . + + + + + + Initializes the target and resets the current Interval and . + + + + + Writes log event to the wrapped target if the current is lower than . + If the is already reached, no log event will be written to the wrapped target. + resets when the current is expired. + + Log event to be written out. + + + + Arguments for events. + + + + + + + + Instance of that was dropped by + + + + + Raises by when + queue is full + and set to + By default queue doubles it size. + + + + + Contains items count and new queue size. + + Required queue size + Current queue size + + + + New queue size + + + + + Current requests count + + + + + Logon provider. + + + + + Use the standard logon provider for the system. + + + The default security provider is negotiate, unless you pass NULL for the domain name and the user name + is not in UPN format. In this case, the default provider is NTLM. + NOTE: Windows 2000/NT: The default security provider is NTLM. + + + + + Filters buffered log entries based on a set of conditions that are evaluated on a group of events. + + Documentation on NLog Wiki + + PostFilteringWrapper must be used with some type of buffering target or wrapper, such as + AsyncTargetWrapper, BufferingWrapper or ASPNetBufferingWrapper. + + +

+ This example works like this. If there are no Warn,Error or Fatal messages in the buffer + only Info messages are written to the file, but if there are any warnings or errors, + the output includes detailed trace (levels >= Debug). You can plug in a different type + of buffering wrapper (such as ASPNetBufferingWrapper) to achieve different + functionality. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Gets or sets the default filter to be applied when no specific rule matches. + + + + + + Gets the collection of filtering rules. The rules are processed top-down + and the first rule that matches determines the filtering condition to + be applied to log events. + + + + + + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Evaluates all filtering rules to find the first one that matches. + The matching rule determines the filtering condition to be applied + to all items in a buffer. If no condition matches, default filter + is applied to the array of log events. + + Array of log events to be post-filtered. + + + + Evaluate all the rules to get the filtering condition + + + + + + + Sends log messages to a randomly selected target. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt + chosen randomly on a per-message basis. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the log event to one of the sub-targets. + The sub-target is randomly chosen. + + The log event. + + + + Repeats each log event the specified number of times. + + Documentation on NLog Wiki + +

This example causes each log message to be repeated 3 times.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The repeat count. + + + + Initializes a new instance of the class. + + The wrapped target. + The repeat count. + + + + Gets or sets the number of times to repeat each log message. + + + + + + Forwards the log message to the by calling the method times. + + The log event. + + + + Retries in case of write error. + + Documentation on NLog Wiki + +

This example causes each write attempt to be repeated 3 times, + sleeping 1 second between attempts if first one fails.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Initializes a new instance of the class. + + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Gets or sets the number of retries that should be attempted on the wrapped target in case of a failure. + + + + + + Gets or sets the time to wait between retries in milliseconds. + + + + + + Special SyncObject to allow closing down Target while busy retrying + + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Writes the specified log event to the wrapped target in a thread-safe manner. + + The log event. + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Distributes log events to targets in a round-robin fashion. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt. + Each odd message is written to file2.txt, each even message goes to file1.txt. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Ensures forwarding happens without holding lock + + + + + + Forwards the write to one of the targets from + the collection. + + The log event. + + The writes are routed in a round-robin fashion. + The first log event goes to the first target, the second + one goes to the second target and so on looping to the + first target when there are no more targets available. + In general request N goes to Targets[N % Targets.Count]. + + + + + Impersonation level. + + + + + Anonymous Level. + + + + + Identification Level. + + + + + Impersonation Level. + + + + + Delegation Level. + + + + + Logon type. + + + + + Interactive Logon. + + + This logon type is intended for users who will be interactively using the computer, such as a user being logged on + by a terminal server, remote shell, or similar process. + This logon type has the additional expense of caching logon information for disconnected operations; + therefore, it is inappropriate for some client/server applications, + such as a mail server. + + + + + Network Logon. + + + This logon type is intended for high performance servers to authenticate plaintext passwords. + The LogonUser function does not cache credentials for this logon type. + + + + + Batch Logon. + + + This logon type is intended for batch servers, where processes may be executing on behalf of a user without + their direct intervention. This type is also for higher performance servers that process many plaintext + authentication attempts at a time, such as mail or Web servers. + The LogonUser function does not cache credentials for this logon type. + + + + + Logon as a Service. + + + Indicates a service-type logon. The account provided must have the service privilege enabled. + + + + + Network Clear Text Logon. + + + This logon type preserves the name and password in the authentication package, which allows the server to make + connections to other network servers while impersonating the client. A server can accept plaintext credentials + from a client, call LogonUser, verify that the user can access the system across the network, and still + communicate with other servers. + NOTE: Windows NT: This value is not supported. + + + + + New Network Credentials. + + + This logon type allows the caller to clone its current token and specify new credentials for outbound connections. + The new logon session has the same local identifier but uses different credentials for other network connections. + NOTE: This logon type is supported only by the LOGON32_PROVIDER_WINNT50 logon provider. + NOTE: Windows NT: This value is not supported. + + + + + Writes log events to all targets. + + Documentation on NLog Wiki + +

This example causes the messages to be written to both file1.txt or file2.txt +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the specified log event to all sub-targets. + + The log event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Base class for targets wrap other (single) targets. + + + + + Gets or sets the target that is wrapped by this target. + + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Current local time retrieved directly from DateTime.Now. + + + + + Gets current local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Current UTC time retrieved directly from DateTime.UtcNow. + + + + + Gets current UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Fast time source that updates current time only once per tick (15.6 milliseconds). + + + + + Gets raw uncached time from derived time source. + + + + + Gets current time cached for one system tick (15.6 milliseconds). + + + + + Fast local time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Fast UTC time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Defines source of current time. + + + + + Gets current time. + + + + + Gets or sets current global time source used in all log events. + + + Default time source is . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to the same form + as time values originated from this source. + + + + There are situations when NLog have to compare the time originated from TimeSource + to the time originated externally in the system. + To be able to provide meaningful result of such comparisons the system time must be expressed in + the same form as TimeSource time. + + + Examples: + - If the TimeSource provides time values of local time, it should also convert the provided + to the local time. + - If the TimeSource shifts or skews its time values, it should also apply + the same transform to the given . + + + + + + Marks class as a time source and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the time source. + + + diff --git a/packages/NLog.4.7.2/lib/net35/NLog.dll b/packages/NLog.4.7.2/lib/net35/NLog.dll new file mode 100644 index 0000000000000000000000000000000000000000..72567b8f75c20b883bc8e1f09df503f69a962248 GIT binary patch literal 843264 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 W()b6|nW#3DGdlhy{W1Ul5cogAx{8hf literal 0 HcmV?d00001 diff --git a/packages/NLog.4.7.2/lib/net35/NLog.xml b/packages/NLog.4.7.2/lib/net35/NLog.xml new file mode 100644 index 0000000..60d3afb --- /dev/null +++ b/packages/NLog.4.7.2/lib/net35/NLog.xml @@ -0,0 +1,29160 @@ + + + + NLog + + + + + Indicates that the value of the marked element could be null sometimes, + so the check for null is necessary before its usage. + + + [CanBeNull] object Test() => null; + + void UseTest() { + var p = Test(); + var s = p.ToString(); // Warning: Possible 'System.NullReferenceException' + } + + + + + Indicates that the value of the marked element could never be null. + + + [NotNull] object Foo() { + return null; // Warning: Possible 'null' assignment + } + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can never be null. + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can be null. + + + + + Indicates that the marked method builds string by format pattern and (optional) arguments. + Parameter, which contains format string, should be given in constructor. The format string + should be in -like form. + + + [StringFormatMethod("message")] + void ShowError(string message, params object[] args) { /* do something */ } + + void Foo() { + ShowError("Failed: {0}"); // Warning: Non-existing argument in format string + } + + + + + Specifies which parameter of an annotated method should be treated as format-string + + + + + For a parameter that is expected to be one of the limited set of values. + Specify fields of which type should be used as values for this parameter. + + + + + Indicates that the function argument should be string literal and match one + of the parameters of the caller function. For example, ReSharper annotates + the parameter of . + + + void Foo(string param) { + if (param == null) + throw new ArgumentNullException("par"); // Warning: Cannot resolve symbol + } + + + + + Indicates that the method is contained in a type that implements + System.ComponentModel.INotifyPropertyChanged interface and this method + is used to notify that some property value changed. + + + The method should be non-static and conform to one of the supported signatures: + + NotifyChanged(string) + NotifyChanged(params string[]) + NotifyChanged{T}(Expression{Func{T}}) + NotifyChanged{T,U}(Expression{Func{T,U}}) + SetProperty{T}(ref T, T, string) + + + + public class Foo : INotifyPropertyChanged { + public event PropertyChangedEventHandler PropertyChanged; + + [NotifyPropertyChangedInvocator] + protected virtual void NotifyChanged(string propertyName) { ... } + + string _name; + + public string Name { + get { return _name; } + set { _name = value; NotifyChanged("LastName"); /* Warning */ } + } + } + + Examples of generated notifications: + + NotifyChanged("Property") + NotifyChanged(() => Property) + NotifyChanged((VM x) => x.Property) + SetProperty(ref myField, value, "Property") + + + + + + Describes dependency between method input and output. + + +

Function Definition Table syntax:

+ + FDT ::= FDTRow [;FDTRow]* + FDTRow ::= Input => Output | Output <= Input + Input ::= ParameterName: Value [, Input]* + Output ::= [ParameterName: Value]* {halt|stop|void|nothing|Value} + Value ::= true | false | null | notnull | canbenull + + If method has single input parameter, it's name could be omitted.
+ Using halt (or void/nothing, which is the same) for method output + means that the methods doesn't return normally (throws or terminates the process).
+ Value canbenull is only applicable for output parameters.
+ You can use multiple [ContractAnnotation] for each FDT row, or use single attribute + with rows separated by semicolon. There is no notion of order rows, all rows are checked + for applicability and applied per each program state tracked by R# analysis.
+
+ + + [ContractAnnotation("=> halt")] + public void TerminationMethod() + + + [ContractAnnotation("halt <= condition: false")] + public void Assert(bool condition, string text) // regular assertion method + + + [ContractAnnotation("s:null => true")] + public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty() + + + // A method that returns null if the parameter is null, + // and not null if the parameter is not null + [ContractAnnotation("null => null; notnull => notnull")] + public object Transform(object data) + + + [ContractAnnotation("=> true, result: notnull; => false, result: null")] + public bool TryParse(string s, out Person result) + + +
+ + + Indicates that marked element should be localized or not. + + + [LocalizationRequiredAttribute(true)] + class Foo { + string str = "my string"; // Warning: Localizable string + } + + + + + Indicates that the value of the marked type (or its derivatives) + cannot be compared using '==' or '!=' operators and Equals() + should be used instead. However, using '==' or '!=' for comparison + with null is always permitted. + + + [CannotApplyEqualityOperator] + class NoEquality { } + + class UsesNoEquality { + void Test() { + var ca1 = new NoEquality(); + var ca2 = new NoEquality(); + if (ca1 != null) { // OK + bool condition = ca1 == ca2; // Warning + } + } + } + + + + + When applied to a target attribute, specifies a requirement for any type marked + with the target attribute to implement or inherit specific type or types. + + + [BaseTypeRequired(typeof(IComponent)] // Specify requirement + class ComponentAttribute : Attribute { } + + [Component] // ComponentAttribute requires implementing IComponent interface + class MyComponent : IComponent { } + + + + + Indicates that the marked symbol is used implicitly (e.g. via reflection, in external library), + so this symbol will not be marked as unused (as well as by other usage inspections). + + + + + Should be used on attributes and causes ReSharper to not mark symbols marked with such attributes + as unused (as well as by other usage inspections) + + + + Only entity marked with attribute considered used. + + + Indicates implicit assignment to a member. + + + + Indicates implicit instantiation of a type with fixed constructor signature. + That means any unused constructor parameters won't be reported as such. + + + + Indicates implicit instantiation of a type. + + + + Specify what is considered used implicitly when marked + with or . + + + + Members of entity marked with attribute are considered used. + + + Entity marked with attribute and all its members considered used. + + + + This attribute is intended to mark publicly available API + which should not be removed and so is treated as used. + + + + + Tells code analysis engine if the parameter is completely handled when the invoked method is on stack. + If the parameter is a delegate, indicates that delegate is executed while the method is executed. + If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + + + + + Indicates that a method does not make any observable state changes. + The same as System.Diagnostics.Contracts.PureAttribute. + + + [Pure] int Multiply(int x, int y) => x * y; + + void M() { + Multiply(123, 42); // Waring: Return value of pure method is not used + } + + + + + Indicates that the return value of method invocation must be used. + + + + + Indicates the type member or parameter of some type, that should be used instead of all other ways + to get the value that type. This annotation is useful when you have some "context" value evaluated + and stored somewhere, meaning that all other ways to get this value must be consolidated with existing one. + + + class Foo { + [ProvidesContext] IBarService _barService = ...; + + void ProcessNode(INode node) { + DoSomething(node, node.GetGlobalServices().Bar); + // ^ Warning: use value of '_barService' field + } + } + + + + + Indicates that a parameter is a path to a file or a folder within a web project. + Path can be relative or absolute, starting from web root (~). + + + + + An extension method marked with this attribute is processed by ReSharper code completion + as a 'Source Template'. When extension method is completed over some expression, it's source code + is automatically expanded like a template at call site. + + + Template method body can contain valid source code and/or special comments starting with '$'. + Text inside these comments is added as source code when the template is applied. Template parameters + can be used either as additional method parameters or as identifiers wrapped in two '$' signs. + Use the attribute to specify macros for parameters. + + + In this example, the 'forEach' method is a source template available over all values + of enumerable types, producing ordinary C# 'foreach' statement and placing caret inside block: + + [SourceTemplate] + public static void forEach<T>(this IEnumerable<T> xs) { + foreach (var x in xs) { + //$ $END$ + } + } + + + + + + Allows specifying a macro for a parameter of a source template. + + + You can apply the attribute on the whole method or on any of its additional parameters. The macro expression + is defined in the property. When applied on a method, the target + template parameter is defined in the property. To apply the macro silently + for the parameter, set the property value = -1. + + + Applying the attribute on a source template method: + + [SourceTemplate, Macro(Target = "item", Expression = "suggestVariableName()")] + public static void forEach<T>(this IEnumerable<T> collection) { + foreach (var item in collection) { + //$ $END$ + } + } + + Applying the attribute on a template method parameter: + + [SourceTemplate] + public static void something(this Entity x, [Macro(Expression = "guid()", Editable = -1)] string newguid) { + /*$ var $x$Id = "$newguid$" + x.ToString(); + x.DoSomething($x$Id); */ + } + + + + + + Allows specifying a macro that will be executed for a source template + parameter when the template is expanded. + + + + + Allows specifying which occurrence of the target parameter becomes editable when the template is deployed. + + + If the target parameter is used several times in the template, only one occurrence becomes editable; + other occurrences are changed synchronously. To specify the zero-based index of the editable occurrence, + use values >= 0. To make the parameter non-editable when the template is expanded, use -1. + > + + + + Identifies the target parameter of a source template if the + is applied on a template method. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC action. If applied to a method, the MVC action name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC area. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is + an MVC controller. If applied to a method, the MVC controller name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC Master. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC model type. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is an MVC + partial view. If applied to a method, the MVC partial view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Allows disabling inspections for MVC views within a class or a method. + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC display template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.DisplayExtensions.DisplayForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC editor template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.EditorExtensions.EditorForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC template. + Use this attribute for custom wrappers similar to + System.ComponentModel.DataAnnotations.UIHintAttribute(System.String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component. If applied to a method, the MVC view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Controller.View(Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component name. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component view. If applied to a method, the MVC view component view name is default. + + + + + ASP.NET MVC attribute. When applied to a parameter of an attribute, + indicates that this parameter is an MVC action name. + + + [ActionName("Foo")] + public ActionResult Login(string returnUrl) { + ViewBag.ReturnUrl = Url.Action("Foo"); // OK + return RedirectToAction("Bar"); // Error: Cannot resolve action + } + + + + + Razor attribute. Indicates that a parameter or a method is a Razor section. + Use this attribute for custom wrappers similar to + System.Web.WebPages.WebPageBase.RenderSection(String). + + + + + Indicates how method, constructor invocation or property access + over collection type affects content of the collection. + + + + Method does not use or modify content of the collection. + + + Method only reads content of the collection but does not modify it. + + + Method can change content of the collection but does not add new elements. + + + Method can add new elements to the collection. + + + + Indicates that the marked method is assertion method, i.e. it halts control flow if + one of the conditions is satisfied. To set the condition, mark one of the parameters with + attribute. + + + + + Indicates the condition parameter of the assertion method. The method itself should be + marked by attribute. The mandatory argument of + the attribute is the assertion type. + + + + + Specifies assertion type. If the assertion method argument satisfies the condition, + then the execution continues. Otherwise, execution is assumed to be halted. + + + + Marked parameter should be evaluated to true. + + + Marked parameter should be evaluated to false. + + + Marked parameter should be evaluated to null value. + + + Marked parameter should be evaluated to not null value. + + + + Indicates that the marked method unconditionally terminates control flow execution. + For example, it could unconditionally throw exception. + + + + + Indicates that method is pure LINQ method, with postponed enumeration (like Enumerable.Select, + .Where). This annotation allows inference of [InstantHandle] annotation for parameters + of delegate type by analyzing LINQ method chains. + + + + + Indicates that IEnumerable, passed as parameter, is not enumerated. + + + + + Indicates that parameter is regular expression pattern. + + + + + Prevents the Member Reordering feature from tossing members of the marked class. + + + The attribute must be mentioned in your member reordering patterns + + + + + XAML attribute. Indicates the type that has ItemsSource property and should be treated + as ItemsControl-derived type, to enable inner items DataContext type resolve. + + + + + XAML attribute. Indicates the property of some BindingBase-derived type, that + is used to bind some item of ItemsControl-derived type. This annotation will + enable the DataContext type resolve for XAML bindings for such properties. + + + Property should have the tree ancestor of the ItemsControl type or + marked with the attribute. + + + + + Support implementation of + + + + + + + + + + + + + + + + + Asynchronous continuation delegate - function invoked at the end of asynchronous + processing. + + Exception during asynchronous processing or null if no exception + was thrown. + + + + Helpers for asynchronous operations. + + + + + Iterates over all items in the given collection and runs the specified action + in sequence (each action executes only after the preceding one has completed without an error). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Repeats the specified asynchronous action multiple times and invokes asynchronous continuation at the end. + + The repeat count. + The asynchronous continuation to invoke at the end. + The action to invoke. + + + + Modifies the continuation by pre-pending given action to execute just before it. + + The async continuation. + The action to pre-pend. + Continuation which will execute the given action before forwarding to the actual continuation. + + + + Attaches a timeout to a continuation which will invoke the continuation when the specified + timeout has elapsed. + + The asynchronous continuation. + The timeout. + Wrapped continuation. + + + + Iterates over all items in the given collection and runs the specified action + in parallel (each action executes on a thread from thread pool). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Runs the specified asynchronous action synchronously (blocks until the continuation has + been invoked). + + The action. + + Using this method is not recommended because it will block the calling thread. + + + + + Wraps the continuation with a guard which will only make sure that the continuation function + is invoked only once. + + The asynchronous continuation. + Wrapped asynchronous continuation. + + + + Gets the combined exception from all exceptions in the list. + + The exceptions. + Combined exception or null if no exception was thrown. + + + + Disposes the Timer, and waits for it to leave the Timer-callback-method + + The Timer object to dispose + Timeout to wait (TimeSpan.Zero means dispose without waiting) + Timer disposed within timeout (true/false) + + + + Asynchronous action. + + Continuation to be invoked at the end of action. + + + + Asynchronous action with one argument. + + Type of the argument. + Argument to the action. + Continuation to be invoked at the end of action. + + + + Represents the logging event with asynchronous continuation. + + + + + Initializes a new instance of the struct. + + The log event. + The continuation. + + + + Gets the log event. + + + + + Gets the continuation. + + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + A value of true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + String Conversion Helpers + + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + Output value + Default value + Returns false if the input value could not be parsed + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + The type of the enum + Output value. Null if parse failed + + + + Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. A parameter specifies whether the operation is case-sensitive. The return value indicates whether the conversion succeeded. + + The enumeration type to which to convert value. + The string representation of the enumeration name or underlying value to convert. + true to ignore case; false to consider case. + When this method returns, result contains an object of type TEnum whose value is represented by value if the parse operation succeeds. If the parse operation fails, result contains the default value of the underlying type of TEnum. Note that this value need not be a member of the TEnum enumeration. This parameter is passed uninitialized. + true if the value parameter was converted successfully; otherwise, false. + Wrapper because Enum.TryParse is not present in .net 3.5 + + + + Enum.TryParse implementation for .net 3.5 + + + + Don't uses reflection + + + + Enables to extract extra context details for + + + + + Name of context + + + + + The current LogFactory next to LogManager + + + + + NLog internal logger. + + Writes to file, console or custom text writer (see ) + + + Don't use as that can lead to recursive calls - stackoverflow + + + + + Gets a value indicating whether internal log includes Trace messages. + + + + + Gets a value indicating whether internal log includes Debug messages. + + + + + Gets a value indicating whether internal log includes Info messages. + + + + + Gets a value indicating whether internal log includes Warn messages. + + + + + Gets a value indicating whether internal log includes Error messages. + + + + + Gets a value indicating whether internal log includes Fatal messages. + + + + + Logs the specified message without an at the Trace level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + Log message. + + + + Logs the specified message without an at the Trace level. + will be only called when logging is enabled for level Trace. + + Function that returns the log message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Trace level. + will be only called when logging is enabled for level Trace. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Debug level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Debug level. + + Log message. + + + + Logs the specified message without an at the Debug level. + will be only called when logging is enabled for level Debug. + + Function that returns the log message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Debug level. + will be only called when logging is enabled for level Debug. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Info level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Info level. + + Log message. + + + + Logs the specified message without an at the Info level. + will be only called when logging is enabled for level Info. + + Function that returns the log message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Info level. + will be only called when logging is enabled for level Info. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Warn level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Warn level. + + Log message. + + + + Logs the specified message without an at the Warn level. + will be only called when logging is enabled for level Warn. + + Function that returns the log message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Warn level. + will be only called when logging is enabled for level Warn. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Error level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Error level. + + Log message. + + + + Logs the specified message without an at the Error level. + will be only called when logging is enabled for level Error. + + Function that returns the log message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Error level. + will be only called when logging is enabled for level Error. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Fatal level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Fatal level. + + Log message. + + + + Logs the specified message without an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Function that returns the log message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Exception to be logged. + Function that returns the log message. + + + + Initializes static members of the InternalLogger class. + + + + + Set the config of the InternalLogger with defaults and config. + + + + + Gets or sets the minimal internal log level. + + If set to , then messages of the levels , and will be written. + + + + Gets or sets a value indicating whether internal messages should be written to the console output stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the console error stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the .Trace + + + + + Gets or sets the file path of the internal log file. + + A value of value disables internal logging to a file. + + + + Gets or sets the text writer that will receive internal logs. + + + + + Event written to the internal log. + Please note that the event is not triggered when then event hasn't the minimal log level set by + + + + + Gets or sets a value indicating whether timestamp should be included in internal log output. + + + + + Is there an thrown when writing the message? + + + + + Logs the specified message without an at the specified level. + + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the specified level. + + Log level. + Log message. + + + + Logs the specified message without an at the specified level. + will be only called when logging is enabled for level . + + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + will be only called when logging is enabled for level . + + Exception to be logged. + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Log message. + + + + Write to internallogger. + + optional exception to be logged. + level + message + optional args for + + + + Create log line with timestamp, exception message etc (if configured) + + + + + Determine if logging should be avoided because of exception type. + + The exception to check. + true if logging should be avoided; otherwise, false. + + + + Determine if logging is enabled for given LogLevel + + The for the log event. + true if logging is enabled; otherwise, false. + + + + Determine if logging is enabled. + + true if logging is enabled; otherwise, false. + + + + Write internal messages to the log file defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged only when the property is true, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged when the property is true, otherwise the + method has no effect. + + + + + Write internal messages to the . + + A message to write. + + Works when property set to true. + The is used in Debug and Release configuration. + The works only in Debug configuration and this is reason why is replaced by . + in DEBUG + + + + + Logs the assembly version and file version of the given Assembly. + + The assembly to log. + + + + A message has been written to the internal logger + + + + + The rendered message + + + + + The log level + + + + + The exception. Could be null. + + + + + The type that triggered this internal log event, for example the FileTarget. + This property is not always populated. + + + + + The context name that triggered this internal log event, for example the name of the Target. + This property is not always populated. + + + + + + + + A cyclic buffer of object. + + + + + Initializes a new instance of the class. + + Buffer size. + Whether buffer should grow as it becomes full. + The maximum number of items that the buffer can grow to. + + + + Gets the capacity of the buffer + + + + + Gets the number of items in the buffer + + + + + Adds the specified log event to the buffer. + + Log event. + The number of items in the buffer. + + + + Gets the array of events accumulated in the buffer and clears the buffer as one atomic operation. + + Events in the buffer. + + + + Condition and expression. + + + + + Initializes a new instance of the class. + + Left hand side of the AND expression. + Right hand side of the AND expression. + + + + Gets the left hand side of the AND expression. + + + + + Gets the right hand side of the AND expression. + + + + + Returns a string representation of this expression. + + A concatenated '(Left) and (Right)' string. + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the conjunction operator. + + + + Exception during evaluation of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Base class for representing nodes in condition expression trees. + + + + + Converts condition text to a condition expression tree. + + Condition text to be converted. + Condition expression tree. + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition layout expression (represented by a string literal + with embedded ${}). + + + + + Initializes a new instance of the class. + + The layout. + + + + Gets the layout. + + The layout. + + + + Returns a string representation of this expression. + + String literal in single quotes. + + + + Evaluates the expression by calculating the value + of the layout in the specified evaluation context. + + Evaluation context. + The value of the layout. + + + + Condition level expression (represented by the level keyword). + + + + + Returns a string representation of the expression. + + The 'level' string. + + + + Evaluates to the current log level. + + Evaluation context. Ignored. + The object representing current log level. + + + + Condition literal expression (numeric, LogLevel.XXX, true or false). + + + + + Initializes a new instance of the class. + + Literal value. + + + + Gets the literal value. + + The literal value. + + + + Returns a string representation of the expression. + + The literal value. + + + + Evaluates the expression. + + Evaluation context. + The literal value as passed in the constructor. + + + + Condition logger name expression (represented by the logger keyword). + + + + + Returns a string representation of this expression. + + A logger string. + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + Returns a string representation of this expression. + + The 'message' string. + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Initializes a new instance of the class. + + Condition method name. + + + + Condition method invocation expression (represented by method(p1,p2,p3) syntax). + + + + + Initializes a new instance of the class. + + Name of the condition method. + of the condition method. + Precompiled delegate of the condition method. + The method parameters. + + + + Gets the method info. + + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + A bunch of utility methods (mostly predicates) which can be used in + condition expressions. Partially inspired by XPath 1.0. + + + + + Compares two values for equality. + + The first value. + The second value. + true when two objects are equal, false otherwise. + + + + Compares two strings for equality. + + The first string. + The second string. + Optional. If true, case is ignored; if false (default), case is significant. + true when two strings are equal, false otherwise. + + + + Gets or sets a value indicating whether the second string is a substring of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a substring of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a prefix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a suffix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Returns the length of a string. + + A string whose lengths is to be evaluated. + The length of the string. + + + + Indicates whether the specified regular expression finds a match in the specified input string. + + The string to search for a match. + The regular expression pattern to match. + A string consisting of the desired options for the test. The possible values are those of the separated by commas. + true if the regular expression finds a match; otherwise, false. + + + + + + + + + + + Marks the class as containing condition methods. + + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Gets the expression to be negated. + + The expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition or expression. + + + + + Initializes a new instance of the class. + + Left hand side of the OR expression. + Right hand side of the OR expression. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + Exception during parsing of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Condition parser. Turns a string representation of condition expression + into an expression tree. + + + + + Initializes a new instance of the class. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + Instance of used to resolve references to condition methods and layout renderers. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + + Try stringed keyword to + + + + success? + + + + Parse number + + negative number? minus should be parsed first. + + + + + Condition relational (==, !=, <, <=, + > or >=) expression. + + + + + Initializes a new instance of the class. + + The left expression. + The right expression. + The relational operator. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Gets the relational operator. + + The operator. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Compares the specified values using specified relational operator. + + The first value. + The second value. + The relational operator. + Result of the given relational operator. + + + + Promote values to the type needed for the comparision, e.g. parse a string to int. + + + + + + + Promotes to type + + + + success? + + + + Try to promote both values. First try to promote to , + when failed, try to . + + + + + + Get the order for the type for comparision. + + + index, 0 to max int. Lower is first + + + + Dictionary from type to index. Lower index should be tested first. + + + + + Build the dictionary needed for the order of the types. + + + + + + Get the string representing the current + + + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + Hand-written tokenizer for conditions. + + + + + Initializes a new instance of the class. + + The string reader. + + + + Gets the type of the token. + + The type of the token. + + + + Gets the token value. + + The token value. + + + + Gets the value of a string token. + + The string token value. + + + + Asserts current token type and advances to the next token. + + Expected token type. + If token type doesn't match, an exception is thrown. + + + + Asserts that current token is a keyword and returns its value and advances to the next token. + + Keyword value. + + + + Gets or sets a value indicating whether current keyword is equal to the specified value. + + The keyword. + + A value of true if current keyword is equal to the specified value; otherwise, false. + + + + + Gets or sets a value indicating whether the tokenizer has reached the end of the token stream. + + + A value of true if the tokenizer has reached the end of the token stream; otherwise, false. + + + + + Gets or sets a value indicating whether current token is a number. + + + A value of true if current token is a number; otherwise, false. + + + + + Gets or sets a value indicating whether the specified token is of specified type. + + The token type. + + A value of true if current token is of specified type; otherwise, false. + + + + + Gets the next token and sets and properties. + + + + + Try the comparison tokens (greater, smaller, greater-equals, smaller-equals) + + current char + is match + + + + Try the logical tokens (and, or, not, equals) + + current char + is match + + + + Mapping between characters and token types for punctuations. + + + + + Initializes a new instance of the CharToTokenType struct. + + The character. + Type of the token. + + + + Token types for condition expressions. + + + + + Marks the class or a member as advanced. Advanced classes and members are hidden by + default in generated documentation. + + + + + Initializes a new instance of the class. + + + + + Identifies that the output of layout or layout render does not change for the lifetime of the current appdomain. + + + A layout(renderer) could be converted to a literal when: + - The layout and all layout properties are SimpleLayout or [AppDomainFixedOutput] + + Recommendation: Apply this attribute to a layout or layout-renderer which have the result only changes by properties of type Layout. + + + + + Used to mark configurable parameters which are arrays. + Specifies the mapping between XML elements and .NET types. + + + + + Initializes a new instance of the class. + + The type of the array item. + The XML element name that represents the item. + + + + Gets the .NET type of the array item. + + + + + Gets the XML element name. + + + + + An assembly is trying to load. + + + + + New event args + + + + + + The assembly that is trying to load. + + + + + NLog configuration section handler class for configuring NLog from App.config. + + + + + Creates a configuration section handler. + + Parent object. + Configuration context object. + Section XML node. + The created section handler object. + + + + Constructs a new instance the configuration item (target, layout, layout renderer, etc.) given its type. + + Type of the item. + Created object of the specified type. + + + + Provides registration information for named items (targets, layouts, layout renderers, etc.) managed by NLog. + + Everything of an assembly could be loaded by + + + + + Called before the assembly will be loaded. + + + + + Initializes a new instance of the class. + + The assemblies to scan for named items. + + + + Gets or sets default singleton instance of . + + + This property implements lazy instantiation so that the is not built before + the internal logger is configured. + + + + + Gets or sets the creator delegate used to instantiate configuration objects. + + + By overriding this property, one can enable dependency injection or interception for created objects. + + + + + Gets the factory. + + The target factory. + + + + Gets the factory. + + The filter factory. + + + + gets the factory + + not using due to backwards-compatibility. + + + + + Gets the factory. + + The layout renderer factory. + + + + Gets the factory. + + The layout factory. + + + + Gets the ambient property factory. + + The ambient property factory. + + + + Legacy interface, no longer used by the NLog engine + + + + + Gets or sets the JSON serializer to use with or + + + + + Gets or sets the string serializer to use with + + + + + Gets or sets the custom object-type transformation for use in , or + + + + + Gets or sets the parameter converter to use with , or + + + + + Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) + + + - Null (Auto Detect) : NLog-parser checks for positional parameters, and will then fallback to string.Format-rendering. + - True: Always performs the parsing of and rendering of using the NLog-parser (Allows custom formatting with ) + - False: Always performs parsing and rendering using string.Format (Fastest if not using structured logging) + + + + + Gets the time source factory. + + The time source factory. + + + + Gets the condition method factory. + + The condition method factory. + + + + Gets the condition method factory (precompiled) + + The condition method factory. + + + + Registers named items from the assembly. + + The assembly. + + + + Registers named items from the assembly. + + The assembly. + Item name prefix. + + + + Call Preload for NLogPackageLoader + + + Every package could implement a class "NLogPackageLoader" (namespace not important) with the public static method "Preload" (no arguments) + This method will be called just before registering all items in the assembly. + + + + + + Call the Preload method for . The Preload method must be static. + + + + + + Clears the contents of all factories. + + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Builds the default configuration item factory. + + Default factory. + + + + Registers items in NLog.Extended.dll using late-bound types, so that we don't need a reference to NLog.Extended.dll. + + + + + Attribute used to mark the default parameters for layout renderers. + + + + + Initializes a new instance of the class. + + + + + Dynamic filtering with a positive list of enabled levels + + + + + Dynamic filtering with a minlevel and maxlevel range + + + + + Format of the exception output to the specific target. + + + + + Appends the Message of an Exception to the specified target. + + + + + Appends the type of an Exception to the specified target. + + + + + Appends the short type of an Exception to the specified target. + + + + + Appends the result of calling ToString() on an Exception to the specified target. + + + + + Appends the method name from Exception's stack trace to the specified target. + + + + + Appends the stack trace from an Exception to the specified target. + + + + + Appends the contents of an Exception's Data property to the specified target. + + + + + Destructure the exception (usually into JSON) + + + + + Appends the from the application or the object that caused the error. + + + + + Appends the from the application or the object that caused the error. + + + + + Appends any additional properties that specific type of Exception might have. + + + + + Factory for class-based items. + + The base type of each item. + The type of the attribute used to annotate items. + + + + Scans the assembly. + + The types to scan. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the item based on a type name. + + Name of the item. + Name of the type. + + + + Clears the contents of the factory. + + + + + Registers a single type definition. + + The item name. + The type of the item. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Creates an item instance. + + The name of the item. + Created item. + + + + Factory specialized for s. + + + + + Clear all func layouts + + + + + Register a layout renderer with a callback function. + + Name of the layoutrenderer, without ${}. + the renderer that renders the value. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides means to populate factories of named items (such as targets, layouts, layout renderers, etc.). + + + + + Implemented by objects which support installation and uninstallation. + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Interface for accessing configuration details + + + + + Name of the config section + + + + + Configuration Key/Value Pairs + + + + + Child config sections + + + + + Interface for loading NLog + + + + + Finds and loads the NLog configuration + + LogFactory that owns the NLog configuration + Name of NLog.config file (optional) + NLog configuration (or null if none found) + + + + Notifies when LoggingConfiguration has been successfully applied + + LogFactory that owns the NLog configuration + NLog Config + + + + Get file paths (including filename) for the possible NLog config files. + + Name of NLog.config file (optional) + The file paths to the possible config file + + + + Level enabled flags for each LogLevel ordinal + + + + + Converts the filter into a simple + + + + + Represents a factory of named items (such as targets, layouts, layout renderers, etc.). + + Base type for each item instance. + Item definition type (typically or ). + + + + Registers new item definition. + + Name of the item. + Item definition. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Creates item instance. + + Name of the item. + Newly created item instance. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides context for install/uninstall operations. + + + + + Mapping between log levels and console output colors. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log output. + + + + Gets or sets the installation log level. + + + + + Gets or sets a value indicating whether to ignore failures during installation. + + + + + Whether installation exceptions should be rethrown. If IgnoreFailures is set to true, + this property has no effect (there are no exceptions to rethrow). + + + + + Gets the installation parameters. + + + + + Gets or sets the log output. + + + + + Logs the specified trace message. + + The message. + The arguments. + + + + Logs the specified debug message. + + The message. + The arguments. + + + + Logs the specified informational message. + + The message. + The arguments. + + + + Logs the specified warning message. + + The message. + The arguments. + + + + Logs the specified error message. + + The message. + The arguments. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Creates the log event which can be used to render layouts during installation/uninstallations. + + Log event info object. + + + + Convert object-value into specified type + + + + + Parses the input value and converts into the wanted type + + Input Value + Wanted Type + Format to use when parsing + Culture to use when parsing + Output value with wanted type + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for extension loading + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for enabling NLog + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + LoggingConfiguration being built + + + + + Interface for fluent setup of LogFactory options for logevent serialization + + + + + LogFactory under configuration + + + + + Encapsulates and the logic to match the actual logger name + All subclasses defines immutable objects. + Concrete subclasses defines various matching rules through + + + + + Creates a concrete based on . + + + Rules used to select the concrete implementation returned: + + if is null => returns (never matches) + if doesn't contains any '*' nor '?' => returns (matches only on case sensitive equals) + if == '*' => returns (always matches) + if doesn't contain '?' + + if contains exactly 2 '*' one at the beginning and one at the end (i.e. "*foobar*) => returns + if contains exactly 1 '*' at the beginning (i.e. "*foobar") => returns + if contains exactly 1 '*' at the end (i.e. "foobar*") => returns + + + returns + + + + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + A concrete + + + + Returns the argument passed to + + + + + Checks whether given name matches the logger name pattern. + + String to be matched. + A value of when the name matches, otherwise. + + + + Defines a that never matches. + Used when pattern is null + + + + + Defines a that always matches. + Used when pattern is '*' + + + + + Defines a that matches with a case-sensitive Equals + Used when pattern is a string without wildcards '?' '*' + + + + + Defines a that matches with a case-sensitive StartsWith + Used when pattern is a string like "*foobar" + + + + + Defines a that matches with a case-sensitive EndsWith + Used when pattern is a string like "foobar*" + + + + + Defines a that matches with a case-sensitive Contains + Used when pattern is a string like "*foobar*" + + + + + Defines a that matches with a complex wildcards combinations: + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + used when pattern is a string containing any number of '?' or '*' in any position + i.e. "*Server[*].Connection[?]" + + + + + Keeps logging configuration and provides simple API to modify it. + + This class is thread-safe..ToList() is used for that purpose. + + + + Variables defined in xml or in API. name is case case insensitive. + + + + + Gets the factory that will be configured + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete on NLog 4.1 and it may be removed in a future release. + + + + Gets the variables defined in the configuration. + + + + + Gets a collection of named targets specified in the configuration. + + + A list of named targets. + + + Unnamed targets (such as those wrapped by other targets) are not returned. + + + + + Gets the collection of file names which should be watched for changes by NLog. + + + + + Gets the collection of logging rules. + + + + + Gets or sets the default culture info to use as . + + + Specific culture info or null to use + + + + + Gets all targets. + + + + + Compare objects based on their name. + + This property is use to cache the comparer object. + + + + Defines methods to support the comparison of objects for equality based on their name. + + + + + Registers the specified target object. The name of the target is read from . + + + The target object with a non + + when is + + + + Registers the specified target object under a given name. + + Name of the target. + The target object. + when is + when is + + + + Finds the target with the specified name. + + + The name of the target to be found. + + + Found target or when the target is not found. + + + + + Finds the target with the specified name and specified type. + + + The name of the target to be found. + + Type of the target + + Found target or when the target is not found of not of type + + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for all loglevels. + + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Finds the logging rule with the specified name. + + The name of the logging rule to be found. + Found logging rule or when not found. + + + + Removes the specified named logging rule. + + The name of the logging rule to be removed. + Found one or more logging rule to remove, or when not found. + + + + Called by LogManager when one of the log configuration files changes. + + + A new instance of that represents the updated configuration. + + + + + Removes the specified named target. + + Name of the target. + + + + Installs target-specific objects on current system. + + The installation context. + + Installation typically runs with administrative permissions. + + + + + Uninstalls target-specific objects from current system. + + The installation context. + + Uninstallation typically runs with administrative permissions. + + + + + Closes all targets and releases any unmanaged resources. + + + + + Log to the internal (NLog) logger the information about the and associated with this instance. + + + The information are only recorded in the internal logger if Debug level is enabled, otherwise nothing is + recorded. + + + + + Validates the configuration. + + + + + Copies all variables from provided dictionary into current configuration variables. + + Master variables dictionary + + + + Replace a simple variable with a value. The original value is removed and thus we cannot redo this in a later stage. + + + + + + + Checks whether unused targets exist. If found any, just write an internal log at Warn level. + If initializing not started or failed, then checking process will be canceled + + + + + + + + Arguments for events. + + + + + Initializes a new instance of the class. + + The new configuration. + The old configuration. + + + + Gets the old configuration. + + The old configuration. + + + + Gets the new configuration. + + The new configuration. + + + + Gets the new configuration + + The new configuration. + + + + Gets the old configuration + + The old configuration. + + + + Gets the optional boolean attribute value. + + + Name of the attribute. + Default value to return if the attribute is not found or if there is a parse error + Boolean attribute value or default. + + + + Remove the namespace (before :) + + + x:a, will be a + + + + + + + Enables loading of NLog configuration from a file + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Loads NLog configuration from + + + + + Constructor + + + + + + Loads NLog configuration from provided config section + + + + + + + Builds list with unique keys, using last value of duplicates. High priority keys placed first. + + + + + + + Parse loglevel, but don't throw if exception throwing is disabled + + Name of attribute for logging. + Value of parse. + Used if there is an exception + + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Parse {Rules} xml element + + + Rules are added to this parameter. + + + + Parse {Logger} xml element + + + + + + Parse boolean + + Name of the property for logging. + value to parse + Default value to return if the parse failed + Boolean attribute value or default. + + + + Arguments for . + + + + + Initializes a new instance of the class. + + Whether configuration reload has succeeded. + + + + Initializes a new instance of the class. + + Whether configuration reload has succeeded. + The exception during configuration reload. + + + + Gets a value indicating whether configuration reload has succeeded. + + A value of true if succeeded; otherwise, false. + + + + Gets the exception which occurred during configuration reload. + + The exception. + + + + Enables FileWatcher for the currently loaded NLog Configuration File, + and supports automatic reload on file modification. + + + + + Represents a logging rule. An equivalent of <logger /> configuration element. + + + + + Create an empty . + + + + + Create an empty . + + + + + Create a new with a and which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a new with a which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a (disabled) . You should call or see cref="EnableLoggingForLevels"/> to enable logging. + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Target to be written to when the rule matches. + + + + Rule identifier to allow rule lookup + + + + + Gets a collection of targets that should be written to when this rule matches. + + + + + Gets a collection of child rules to be evaluated when this rule matches. + + + + + Gets a collection of filters to be checked before writing to targets. + + + + + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + + Gets or sets logger name pattern. + + + Logger name pattern used by to check if a logger name matches this rule. + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + + + + Gets the collection of log levels enabled by this rule. + + + + + Default action if none of the filters match + + + + + Enables logging for a particular level. + + Level to be enabled. + + + + Enables logging for a particular levels between (included) and . + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Disables logging for a particular level. + + Level to be disabled. + + + + Disables logging for particular levels between (included) and . + + Minimum log level to be disables. + Maximum log level to de disabled. + + + + Enables logging the levels between (included) and . All the other levels will be disabled. + + >Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Returns a string representation of . Used for debugging. + + + A that represents the current . + + + + + Checks whether te particular log level is enabled for this rule. + + Level to be checked. + A value of when the log level is enabled, otherwise. + + + + Checks whether given name matches the . + + String to be matched. + A value of when the name matches, otherwise. + + + + Default filtering with static level config + + + + + Factory for locating methods. + + + + + Initializes a new instance of the class. + + Helper method to extract relevant methods from type + + + + Scans the assembly for classes marked with expected class + and methods marked with expected and adds them + to the factory. + + The types to scan. + The prefix to use for names. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Scans a type for relevant methods with their symbolic names + + Include types that are marked with this attribute + Include methods that are marked with this attribute + Class Type to scan + Collection of methods with their symbolic names + + + + Clears contents of the factory. + + + + + Registers the definition of a single method. + + The method name. + The method info. + + + + Registers the definition of a single method. + + The method name. + The method info. + The precompiled method delegate. + + + + Tries to retrieve method by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Tries to retrieve method-delegate by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Retrieves method by name. + + Method name. + MethodInfo object. + + + + Retrieves method by name. + + Method name. + Method delegate object. + + + + Tries to get method definition. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Marks the layout or layout renderer depends on mutable objects from the LogEvent + + This can be or + + + + + Attaches a simple name to an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The name of the item. + + + + Gets the name of the item. + + The name of the item. + + + + Indicates NLog should not scan this property during configuration. + + + + + Initializes a new instance of the class. + + + + + Marks the object as configuration item for NLog. + + + + + Initializes a new instance of the class. + + + + + Represents simple XML element with case-insensitive attribute semantics. + + + + + Initializes a new instance of the class. + + The reader to initialize element from. + + + + Prevents a default instance of the class from being created. + + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + Last error occured during configuration read + + + + + Returns children elements with the specified element name. + + Name of the element. + Children elements with the specified element name. + + + + Asserts that the name of the element is among specified element names. + + The allowed names. + + + + Returns all parsing errors from current and all child elements. + + + + + Special attribute we could ignore + + + + + Default implementation of + + + + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Provides simple programmatic configuration API used for trivial logging cases. + + Warning, these methods will overwrite the current config. + + + + + Configures NLog for console logging so that all messages above and including + the level are output to the console. + + + + + Configures NLog for console logging so that all messages above and including + the specified level are output to the console. + + The minimal logging level. + + + + Configures NLog for to log to the specified target so that all messages + above and including the level are output. + + The target to log all messages to. + + + + Configures NLog for to log to the specified target so that all messages + above and including the specified level are output. + + The target to log all messages to. + The minimal logging level. + + + + Configures NLog for file logging so that all messages above and including + the level are written to the specified file. + + Log file name. + + + + Configures NLog for file logging so that all messages above and including + the specified level are written to the specified file. + + Log file name. + The minimal logging level. + + + + Value indicating how stack trace should be captured when processing the log event. + + + + + Stack trace should not be captured. + + + + + Stack trace should be captured without source-level information. + + + + + Stack trace should be captured including source-level information such as line numbers. + + + + + Capture maximum amount of the stack trace information supported on the platform. + + + + + Marks the layout or layout renderer as thread independent - it producing correct results + regardless of the thread it's running on. + + Without this attribute everything is rendered on the main thread. + + + If this attribute is set on a layout, it could be rendered on the another thread. + This could be more efficient as it's skipped when not needed. + + If context like HttpContext.Current is needed, which is only available on the main thread, this attribute should not be applied. + + See the AsyncTargetWrapper and BufferTargetWrapper with the , using + + Apply this attribute when: + - The result can we rendered in another thread. Delaying this could be more efficient. And/Or, + - The result should not be precalculated, for example the target sends some extra context information. + + + + + Marks the layout or layout renderer as thread safe - it producing correct results + regardless of the number of threads it's running on. + + Without this attribute then the target concurrency will be reduced + + + + + A class for configuring NLog through an XML configuration file + (App.config style or App.nlog style). + + Parsing of the XML file is also implemented in this class. + + + - This class is thread-safe..ToList() is used for that purpose. + - Update TemplateXSD.xml for changes outside targets + + + + + Initializes a new instance of the class. + + Configuration file to be read. + + + + Initializes a new instance of the class. + + Configuration file to be read. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + XML reader to read from. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + The XML contents. + Name of the XML file. + The to which to apply any applicable configuration values. + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + NLog LogFactory + + + + Gets the default object by parsing + the application configuration file (app.exe.config). + + + + + Did the Succeeded? true= success, false= error, null = initialize not started yet. + + + + + Gets or sets a value indicating whether all of the configuration files + should be watched for changes and reloaded automatically when changed. + + + + + Gets the collection of file names which should be watched for changes by NLog. + This is the list of configuration files processed. + If the autoReload attribute is not set it returns empty collection. + + + + + Re-reads the original configuration file and returns the new object. + + The new object. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Create XML reader for (xml config) file. + + filepath + reader or null if filename is empty. + + + + Initializes the configuration. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Checks whether any error during XML configuration parsing has occured. + If there are any and ThrowConfigExceptions or ThrowExceptions + setting is enabled - throws NLogConfigurationException, otherwise + just write an internal log at Warn level. + + Root NLog configuration xml element + + + + Add a file with configuration. Check if not already included. + + + + + + + Parse the root + + + path to config file. + The default value for the autoReload option. + + + + Parse {configuration} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parse {NLog} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Include (multiple) files by filemask, e.g. *.nlog + + base directory in case if is relative + relative or absolute fileMask + + + + + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language + described
here. + + + + + Gets or sets the condition expression. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + An abstract filter class. Provides a way to eliminate log messages + based on properties other than logger name and log level. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the action to be taken when filter matches. + + + + + + Gets the result of evaluating filter against given log event. + + The log event. + Filter result. + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Marks class as a layout renderer and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the filter. + + + + Filter result. + + + + + The filter doesn't want to decide whether to log or discard the message. + + + + + The message should be logged. + + + + + The message should not be logged. + + + + + The message should be logged and processing should be finished. + + + + + The message should not be logged and processing should be finished. + + + + + A base class for filters that are based on comparing a value to a layout. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout to be used to filter log messages. + + The layout. + + + + + Matches when the calculated layout contains the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets the substring to be matched. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets a string to compare the layout to. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches the provided filter-method + + + + + Initializes a new instance of the class. + + + + + + + + Matches when the calculated layout does NOT contain the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets the substring to be matched. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is NOT equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a string to compare the layout to. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the result of the calculated layout has been repeated a moment ago + + + + + How long before a filter expires, and logging is accepted again + + + + + + Max length of filter values, will truncate if above limit + + + + + + Applies the configured action to the initial logevent that starts the timeout period. + Used to configure that it should ignore all events until timeout. + + + + + + Max number of unique filter values to expect simultaneously + + + + + + Default number of unique filter values to expect, will automatically increase if needed + + + + + + Insert FilterCount value into when an event is no longer filtered + + + + + + Append FilterCount to the when an event is no longer filtered + + + + + + Reuse internal buffers, and doesn't have to constantly allocate new buffers + + + + + + Default buffer size for the internal buffers + + + + + + Can be used if has been enabled. + + + + + Initializes a new instance of the class. + + + + + Checks whether log event should be logged or not. In case the LogEvent has just been repeated. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Uses object pooling, and prunes stale filter items when the pool runs dry + + + + + Remove stale filter-value from the cache, and fill them into the pool for reuse + + + + + Renders the Log Event into a filter value, that is used for checking if just repeated + + + + + Repeated LogEvent detected. Checks if it should activate filter-action + + + + + Filter Value State (mutable) + + + + + Filter Lookup Key (immutable) + + + + + A fluent class to build log events for NLog. + + + + + Initializes a new instance of the class. + + The to send the log event. + + + + Initializes a new instance of the class. + + The to send the log event. + The for the log event. + + + + Gets the created by the builder. + + + + + Sets the information of the logging event. + + The exception information of the logging event. + current for chaining calls. + + + + Sets the level of the logging event. + + The level of the logging event. + current for chaining calls. + + + + Sets the logger name of the logging event. + + The logger name of the logging event. + current for chaining calls. + + + + Sets the log message on the logging event. + + The log message for the logging event. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + The fourth object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + An object that supplies culture-specific formatting information. + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets a per-event context property on the logging event. + + The name of the context property. + The value of the context property. + current for chaining calls. + + + + Sets multiple per-event context properties on the logging event. + + The properties to set. + current for chaining calls. + + + + Sets the timestamp of the logging event. + + The timestamp of the logging event. + current for chaining calls. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + current for chaining calls. + + + + Writes the log event to the underlying logger. + + + + + Writes the log event to the underlying logger. + + If condition is true, write log event; otherwise ignore event. + + + + Writes the log event to the underlying logger. + + If condition is true, write log event; otherwise ignore event. + + + + Extension methods for NLog . + + + + + Starts building a log event with the specified . + + The logger to write the log event to. + The log level. + current for chaining calls. + + + + Starts building a log event at the Trace level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Debug level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Info level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Warn level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Error level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Fatal level. + + The logger to write the log event to. + current for chaining calls. + + + + Global Diagnostics Context + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Global Diagnostics Context - a dictionary structure to hold per-application-instance values. + + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The item value, if defined; otherwise null. + + + + Returns all item names + + A collection of the names of all items in the Global Diagnostics Context. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Include context properties + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Interface for serialization of object values into JSON format + + + + + Serialization of an object into JSON format. + + The object to serialize to JSON. + Output destination. + Serialize succeeded (true/false) + + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format.s + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Logger with only generic methods (passing 'LogLevel' to methods) and core properties. + + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Extensions for NLog . + + + + + Writes the diagnostic message and exception at the specified level. + + A logger implementation that will handle the message. + The log level. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Allocates new builder and appends to the provided target builder on dispose + + + + + Access the new builder allocated + + + + + Helpers for . + + + + + Load from url + + file or path, including .dll + basepath, optional + + + + + Load from url + + name without .dll + + + + + Forward declare of system delegate type for use by other classes + + + + + Keeps track of pending operation count, and can notify when pending operation count reaches zero + + + + + Mark operation has started + + + + + Mark operation has completed + + Exception coming from the completed operation [optional] + + + + Registers an AsyncContinuation to be called when all pending operations have completed + + Invoked on completion + AsyncContinuation operation + + + + Clear o + + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Legacy attempt to skip async MoveNext, but caused source file line number to be lost + + + + + Gets the entire stack trace. + + + + + Finds first user stack frame in a stack trace + + The stack trace of the logging method invocation + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + Index of the first user stack frame or 0 if all stack frames are non-user + + + + This is only done for legacy reason, as the correct method-name and line-number should be extracted from the MoveNext-StackFrame + + The stack trace of the logging method invocation + Starting point for skipping async MoveNext-frames + + + + Assembly to skip? + + Find assembly via this frame. + true, we should skip. + + + + Is this the type of the logger? + + get type of this logger in this frame. + Type of the logger. + + + + + Memory optimized filtering + + Passing state too avoid delegate capture and memory-allocations. + + + + Internal configuration manager used to read .NET configuration files. + Just a wrapper around the BCL ConfigurationManager, but used to enable + unit testing. + + + + + Gets the wrapper around ConfigurationManager.AppSettings. + + + + + Provides untyped IDictionary interface on top of generic IDictionary. + + The type of the key. + The type of the value. + + + + Initializes a new instance of the DictionaryAdapter class. + + The implementation. + + + + Gets an object containing the values in the object. + + + + An object containing the values in the object. + + + + + Gets the number of elements contained in the . + + + + The number of elements contained in the . + + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + + + Gets an object that can be used to synchronize access to the . + + + + An object that can be used to synchronize access to the . + + + + + Gets a value indicating whether the object has a fixed size. + + + true if the object has a fixed size; otherwise, false. + + + + + Gets a value indicating whether the object is read-only. + + + true if the object is read-only; otherwise, false. + + + + + Gets an object containing the keys of the object. + + + + An object containing the keys of the object. + + + + + Gets or sets the with the specified key. + + Dictionary key. + Value corresponding to key or null if not found + + + + Adds an element with the provided key and value to the object. + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + + Removes all elements from the object. + + + + + Determines whether the object contains an element with the specified key. + + The key to locate in the object. + + True if the contains an element with the key; otherwise, false. + + + + + Returns an object for the object. + + + An object for the object. + + + + + Removes the element with the specified key from the object. + + The key of the element to remove. + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Wrapper IDictionaryEnumerator. + + + + + Initializes a new instance of the class. + + The wrapped. + + + + Gets both the key and the value of the current dictionary entry. + + + + A containing both the key and the value of the current dictionary entry. + + + + + Gets the key of the current dictionary entry. + + + + The key of the current element of the enumeration. + + + + + Gets the value of the current dictionary entry. + + + + The value of the current element of the enumeration. + + + + + Gets the current element in the collection. + + + + The current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + + True if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Ensures that IDictionary.GetEnumerator returns DictionaryEntry values + + + + + UTF-8 BOM 239, 187, 191 + + + + + Safe way to get environment variables. + + + + + Helper class for dealing with exceptions. + + + + + Mark this exception as logged to the . + + + + + + + Is this exception logged to the ? + + + trueif the has been logged to the . + + + + Determines whether the exception must be rethrown and logs the error to the if is false. + + Advised to log first the error to the before calling this method. + + The exception to check. + Target context of the exception. + trueif the must be rethrown, false otherwise. + + + + Determines whether the exception must be rethrown immediately, without logging the error to the . + + Only used this method in special cases. + + The exception to check. + trueif the must be rethrown, false otherwise. + + + + Object construction helper. + + + + + Adapter for to + + + + + Initializes a new instance of the class. + + The to wrap. + + + + Creates an AppDomainWrapper for the current + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Interface for fakeable the current . Not fully implemented, please methods/properties as necessary. + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + Abstract calls for the application environment + + + + + Gets current process name (excluding filename extension, if any). + + + + + Abstract calls to FileSystem + + + + Determines whether the specified file exists. + The file to check. + + + Returns the content of the specified file + The file to load. + + + + Base class for optimized file appenders. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Gets the path of the file, including file extension. + + The name of the file. + + + + Gets or sets the creation time for a file associated with the appender. The time returned is in Coordinated + Universal Time [UTC] standard. + + The creation time of the file. + + + + Gets or sets the creation time for a file associated with the appender. Synchronized by + The time format is based on + + + + + Gets the last time the file associated with the appender is opened. The time returned is in Coordinated + Universal Time [UTC] standard. + + The time the file was last opened. + + + + Gets the file creation parameters. + + The file creation parameters. + + + + Writes the specified bytes. + + The bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Creates the file stream. + + If set to true sets the file stream to allow shared writing. + If larger than 0 then it will be used instead of the default BufferSize for the FileStream. + A object which can be used to write to the file. + + + + Base class for optimized file appenders which require the usage of a mutex. + + It is possible to use this class as replacement of BaseFileAppender and the mutex functionality + is not enforced to the implementing subclasses. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Gets the mutually-exclusive lock for archiving files. + + The mutex for archiving. + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Creates a mutex that is sharable by more than one process. + + The prefix to use for the name of the mutex. + A object which is sharable by multiple processes. + + + + Implementation of which caches + file information. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Closes this instance of the appender. + + + + + Flushes this current appender. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Writes the specified bytes to a file. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Factory class which creates objects. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Maintains a collection of file appenders usually associated with file targets. + + + + + An "empty" instance of the class with zero size and empty list of appenders. + + + + + Initializes a new "empty" instance of the class with zero size and empty + list of appenders. + + + + + Initializes a new instance of the class. + + + The size of the list should be positive. No validations are performed during initialization as it is an + internal class. + + Total number of appenders allowed in list. + Factory used to create each appender. + Parameters used for creating a file. + + + + The archive file path pattern that is used to detect when archiving occurs. + + + + + Invalidates appenders for all files that were archived. + + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + Interface that provides parameters for create file function. + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + Gets or sets the log file buffer size in bytes. + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + Gets or sets the file attributes (Windows only). + + + + + Should archive mutex be created? + + + + + Should manual simple detection of file deletion be enabled? + + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + The archive file path pattern that is used to detect when archiving occurs. + + + + + Invalidates appenders for all files that were archived. + + + + + Interface implemented by all factories capable of creating file appenders. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + Instance of which can be used to write to the file. + + + + Provides a multi process-safe atomic file appends while + keeping the files open. + + + On Unix you can get all the appends to be atomic, even when multiple + processes are trying to write to the same file, because setting the file + pointer to the end of the file and appending can be made one operation. + On Win32 we need to maintain some synchronization between processes + (global named mutex is used for this) + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Closes this instance. + + + + + Flushes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Appender used to discard data for the FileTarget. + Used mostly for testing entire stack except the actual writing to disk. + Throws away all data. + + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Multi-process and multi-host file appender which attempts + to get exclusive write access and retries if it's not available. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Optimized single-process file appender which keeps the file open for exclusive write. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Provides a multi process-safe atomic file append while + keeping the files open. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Creates or opens a file in a special mode, so that writes are automatically + as atomic writes at the file end. + See also "UnixMultiProcessFileAppender" which does a similar job on *nix platforms. + + File to create or open + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Closes this instance. + + + + + Flushes this instance. + + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + A layout that represents a filePath. + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Cached invalid file names char array to avoid memory allocation every time Path.GetInvalidFileNameChars() is called. + + + + + not null when == false + + + + + non null is fixed, + + + + + is the cache-key, and when newly rendered filename matches the cache-key, + then it reuses the cleaned cache-value . + + + + + is the cache-value that is reused, when the newly rendered filename + matches the cache-key + + + + Initializes a new instance of the class. + + + + Render the raw filename from Layout + + The log event. + StringBuilder to minimize allocations [optional]. + String representation of a layout. + + + + Convert the raw filename to a correct filename + + The filename generated by Layout. + String representation of a correct filename. + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Convert object to string + + value + format for conversion. + + + If is null and isn't a already, then the will get a locked by + + + + + Interface for the wrapper around System.Configuration.ConfigurationManager. + + + + + Gets the wrapper around ConfigurationManager.AppSettings. + + + + + Format a log message + + + + + Format the message and return + + LogEvent with message to be formatted + formatted message + + + + Has the logevent properties? + + LogEvent with message to be formatted + False when logevent has no properties to be extracted + + + + Appends the logevent message to the provided StringBuilder + + LogEvent with message to be formatted + The to append the formatted message. + + + + Get the Raw, unformatted and unstrinyfied, value + + + + + Get the raw value + + + The value + RawValue supported? + + + + Interface implemented by layouts and layout renderers. + + + + + Renders the the value of layout or layout renderer in the context of the specified log event. + + The log event. + String representation of a layout. + + + + Supports mocking of SMTP Client code. + + + + + Specifies how outgoing email messages will be handled. + + + + + Gets or sets the name or IP address of the host used for SMTP transactions. + + + + + Gets or sets the port used for SMTP transactions. + + + + + Gets or sets a value that specifies the amount of time after which a synchronous Send call times out. + + + + + Gets or sets the credentials used to authenticate the sender. + + + + + Sends an e-mail message to an SMTP server for delivery. These methods block while the message is being transmitted. + + + System.Net.Mail.MailMessage + MailMessage + A MailMessage that contains the message to send. + + + + Gets or sets the folder where applications save mail messages to be processed by the local SMTP server. + + + + + Supports rendering as string value with limited or no allocations (preferred) + + + + + Renders the value of layout renderer in the context of the specified log event + + + null if not possible or unknown + + + + Supports object initialization and termination. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Render the event info as parse as short + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as int + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as bool + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Logger configuration. + + + + + Initializes a new instance of the class. + + The targets by level. + Use the old exception log handling of NLog 3.0? + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete before NLog 4.3.11 and it will be removed in NLog 5. + + + + Gets targets for the specified level. + + The level. + Chain of targets with attached filters. + + + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + New formatter + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + The MessageFormatter delegate + + + + + + + + Most-Recently-Used-Cache, that discards less frequently used items on overflow + + + + + Constructor + + Maximum number of items the cache will hold before discarding. + + + + Attempt to insert item into cache. + + Key of the item to be inserted in the cache. + Value of the item to be inserted in the cache. + true when the key does not already exist in the cache, false otherwise. + + + + Lookup existing item in cache. + + Key of the item to be searched in the cache. + Output value of the item found in the cache. + True when the key is found in the cache, false otherwise. + + + + Watches multiple files at the same time and raises an event whenever + a single change is detected in any of those files. + + + + + The types of changes to watch for. + + + + + Occurs when a change is detected in one of the monitored files. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Stops watching all files. + + + + + Stops watching the specified file. + + + + + + Watches the specified files for changes. + + The file names. + + + + Supports mocking of SMTP Client code. + + + Disabled Error CS0618 'SmtpClient' is obsolete: 'SmtpClient and its network of types are poorly designed, + we strongly recommend you use https://github.com/jstedfast/MailKit and https://github.com/jstedfast/MimeKit instead' + + + + + Sends a QUIT message to the SMTP server, gracefully ends the TCP connection, and releases all resources used by the current instance of the class. + + + + + Network sender which uses HTTP or HTTPS POST. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Creates instances of objects for given URLs. + + + + + Creates a new instance of the network sender based on a network URL. + + URL that determines the network sender to be created. + The maximum queue size. + SSL protocols for TCP + KeepAliveTime for TCP + + A newly created network sender. + + + + + Interface for mocking socket calls. + + + + + A base class for all network senders. Supports one-way sending of messages + over various protocols. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Gets the address of the network endpoint. + + + + + Gets the last send time. + + + + + Initializes this network sender. + + + + + Closes the sender and releases any unmanaged resources. + + The continuation. + + + + Flushes any pending messages and invokes a continuation. + + The continuation. + + + + Send the given text over the specified protocol. + + Bytes to be sent. + Offset in buffer. + Number of bytes to send. + The asynchronous continuation. + + + + Closes the sender and releases any unmanaged resources. + + + + + Performs sender-specific initialization. + + + + + Performs sender-specific close operation. + + The continuation. + + + + Performs sender-specific flush. + + The continuation. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Parses the URI into an endpoint address. + + The URI to parse. + The address family. + Parsed endpoint. + + + + Default implementation of . + + + + + + + + A base class for network senders that can block or send out-of-order + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Performs sender-specific flush. + + The continuation. + + + + Socket proxy for mocking Socket code. + + + + + Initializes a new instance of the class. + + The address family. + Type of the socket. + Type of the protocol. + + + + Gets underlying socket instance. + + + + + Closes the wrapped socket. + + + + + Invokes ConnectAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendToAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Sends messages over a TCP network connection. + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + The address family. + + + + Creates the socket with given parameters. + + The host address. + The address family. + Type of the socket. + Type of the protocol. + Instance of which represents the socket. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Facilitates mocking of class. + + + + + Raises the Completed event. + + + + + Sends messages over the network as UDP datagrams. + + + + + Initializes a new instance of the class. + + URL. Must start with udp://. + The address family. + + + + Creates the socket. + + The address family. + Type of the socket. + Type of the protocol. + Implementation of to use. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Sends the specified text as a UDP datagram. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Scans (breadth-first) the object graph following all the edges whose are + instances have attached and returns + all objects implementing a specified interfaces. + + + + + Finds the objects which have attached which are reachable + from any of the given root objects when traversing the object graph over public properties. + + Type of the objects to return. + Also search the properties of the wanted objects. + The root objects. + Ordered list of objects implementing T. + + + ISet is not there in .net35, so using HashSet + + + + Helper for extracting propertyPath + + + + + Object Path to check + + + + + Try get value from , using , and set into + + + + + + + + Converts object into a List of property-names and -values using reflection + + + + + Scans properties for name (Skips string-compare and value-lookup until finding match) + + + + + Scans properties for name (Skips property value lookup until finding match) + + + + + Scans properties for name + + + + + Combine paths + + basepath, not null + optional dir + optional file + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Trims directory separators from the path + + path, could be null + never null + + + + Detects the platform the NLog is running on. + + + + + Gets the current runtime OS. + + + + + Gets a value indicating whether current OS is Win32-based (desktop or mobile). + + + + + Gets a value indicating whether current OS is Unix-based. + + + + + Gets a value indicating whether current runtime is Mono-based + + + + + Gets a value indicating whether current runtime supports use of mutex + + + + + Will creating a mutex succeed runtime? + "Cached" detection + + + + + Will creating a mutex succeed runtime? + + + + + Dictionary that combines the standard with the + MessageTemplate-properties extracted from the . + + The are returned as the first items + in the collection, and in positional order. + + + + + Value of the property + + + + + Is this a property of the message? + + + + + + + Value of the property + Is this a property of the message? + + + + The properties of the logEvent + + + + + The properties extracted from the message + + + + + Injects the list of message-template-parameter into the IDictionary-interface + + Message-template-parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check if the message-template-parameters can be used directly without allocating a dictionary + + Message-template-parameters + Are all parameter names unique (true / false) + + + + Attempt to insert the message-template-parameters into an empty dictionary + + Message-template-parameters + The initially empty dictionary + Message-template-parameters was inserted into dictionary without trouble (true/false) + + + + Attempt to override the existing dictionary values using the message-template-parameters + + Message-template-parameters + The already filled dictionary + List of unique message-template-parameters + + + + + + + + + + + + + + + + + + + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + + + + + + + + + + + + + + + + + Reflection helpers for accessing properties. + + + + + Set value parsed from string. + + object instance to set with property + name of the property on + The value to be parsed. + + + + + Get property info + + object which could have property + property name on + result when success. + success. + + + + Try parse of string to (Generic) list, comma separated. + + + If there is a comma in the value, then (single) quote the value. For single quotes, use the backslash as escape + + + + + Attempt to reuse the HashSet.Comparer from the original HashSet-object (Ex. StringComparer.OrdinalIgnoreCase) + + + + + Try get the property + + + + + Reflection helpers. + + + + + Gets all usable exported types from the given assembly. + + Assembly to scan. + Usable types from the given assembly. + Types which cannot be loaded are skipped. + + + + Is this a static class? + + + + This is a work around, as Type doesn't have this property. + From: https://stackoverflow.com/questions/1175888/determine-if-a-type-is-static + + + + + Optimized delegate for calling MethodInfo + + Object instance, use null for static methods. + Complete list of parameters that matches the method, including optional/default parameters. + + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Controls a single allocated AsyncLogEventInfo-List for reuse (only one active user) + + + + + Controls a single allocated char[]-buffer for reuse (only one active user) + + + + + Controls a single allocated StringBuilder for reuse (only one active user) + + + + + Controls a single allocated object for reuse (only one active user) + + + + Empty handle when is disabled + + + + Creates handle to the reusable char[]-buffer for active usage + + Handle to the reusable item, that can release it again + + + + Access the acquired reusable object + + + + + Controls a single allocated MemoryStream for reuse (only one active user) + + + + + Supported operating systems. + + + If you add anything here, make sure to add the appropriate detection + code to + + + + + Unknown operating system. + + + + + Unix/Linux operating systems. + + + + + Desktop versions of Windows (95,98,ME). + + + + + Windows NT, 2000, 2003 and future versions based on NT technology. + + + + + Macintosh Mac OSX + + + + + Simple character tokenizer. + + + + + Initializes a new instance of the class. + + The text to be tokenized. + + + + Current position in + + + + + Full text to be parsed + + + + + Check current char while not changing the position. + + + + + + Read the current char and change position + + + + + + Get the substring of the + + + + + + + + Implements a single-call guard around given continuation function. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + + + + Continuation function which implements the single-call guard. + + The exception. + + + + HashSet optimized for single item + + + + + + Insert single item on scope start, and remove on scope exit + + Item to insert in scope + Existing hashset to update + Force allocation of real hashset-container + HashSet EqualityComparer + + + + Add item to collection, if it not already exists + + Item to insert + + + + Clear hashset + + + + + Check if hashset contains item + + + Item exists in hashset (true/false) + + + + Remove item from hashset + + + Item removed from hashset (true/false) + + + + Copy items in hashset to array + + Destination array + Array offset + + + + Create hashset enumerator + + Enumerator + + + + Provides helpers to sort log events and associated continuations. + + + + + Key selector delegate. + + The type of the value. + The type of the key. + Value to extract key information from. + Key selected from log event. + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + The key comparer function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Single-Bucket optimized readonly dictionary. Uses normal internally Dictionary if multiple buckets are needed. + + Avoids allocating a new dictionary, when all items are using the same bucket + + The type of the key. + The type of the value. + + + + + + + + + + + + + + + + Allows direct lookup of existing keys. If trying to access non-existing key exception is thrown. + Consider to use instead for better safety. + + Key value for lookup + Mapped value found + + + + Non-Allocating struct-enumerator + + + + + + + + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + + + + Will always throw, as dictionary is readonly + + + + Utilities for dealing with values. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + StackFrame from the calling method + Fully qualified class name + + + + Returns the assembly from the provided StackFrame (If not internal assembly) + + Valid assembly, or null if assembly was internal + + + + Returns the classname from the provided StackFrame (If not from internal assembly) + + + Valid class name, or empty string if assembly was internal + + + + Stream helpers + + + + + Copy to output stream and skip BOM if encoding is UTF8 + + + + + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + .net35 doesn't have a .copyto + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + first bytes to skip (optional) + + + + Helpers for , which is used in e.g. layout renderers. + + + + + Renders the specified log event context item and appends it to the specified . + + append to this + value to be appended + format string. If @, then serialize the value with the Default JsonConverter. + provider, for example culture + + + + Appends int without using culture, and most importantly without garbage + + + value to append + + + + Appends uint without using culture, and most importantly without garbage + + Credits Gavin Pugh - https://www.gavpugh.com/2010/04/01/xnac-avoiding-garbage-when-working-with-stringbuilder/ + + + value to append + + + + Convert DateTime into UTC and format to yyyy-MM-ddTHH:mm:ss.fffffffZ - ISO 6801 date (Round-Trip-Time) + + + + + Clears the provider StringBuilder + + + + + + Copies the contents of the StringBuilder to the MemoryStream using the specified encoding (Without BOM/Preamble) + + StringBuilder source + MemoryStream destination + Encoding used for converter string into byte-stream + Helper char-buffer to minimize memory allocations + + + + Copies the contents of the StringBuilder to the destination StringBuilder + + StringBuilder source + StringBuilder destination + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle character to search for + + Index of the first occurrence (Else -1) + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle characters to search for + + Index of the first occurrence (Else -1) + + + + Compares the contents of two StringBuilders + + + Correct implementation of that also works when is not the same + + True when content is the same + + + + Compares the contents of a StringBuilder and a String + + True when content is the same + + + + Append a number and pad with 0 to 2 digits + + append to this + the number + + + + Append a number and pad with 0 to 4 digits + + append to this + the number + + + + Append a int type (byte, int) as string + + + + + Constructor + + Max number of items + Initial StringBuilder Size + Max StringBuilder Size + + + + Takes StringBuilder from pool + + Allow return to pool + + + + Releases StringBuilder back to pool at its right place + + + + + Keeps track of acquired pool item + + + + + Releases pool item back into pool + + + + + Helpers for . + + + + + IsNullOrWhiteSpace, including for .NET 3.5 + + + + + + + Split a string + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Represents target with a chain of filters which determine + whether logging should happen. + + + + + cached result as calculating is expensive. + + + + + Initializes a new instance of the class. + + The target. + The filter chain. + Default action if none of the filters match. + + + + Gets the target. + + The target. + + + + Gets the filter chain. + + The filter chain. + + + + Default action if none of the filters match. + + + + + Gets or sets the next item in the chain. + + The next item in the chain. + This is for example the 'target2' logger in writeTo='target1,target2' + + + + Gets the stack trace usage. + + A value that determines stack trace handling. + + + + Helper for dealing with thread-local storage. + + + + + Allocates the data slot for storing thread-local information. + + Allocated slot key. + + + + Gets the data for a slot in thread-local storage. + + Type of the data. + The slot to get data for. + Automatically create the object if it doesn't exist. + + Slot data (will create T if null). + + + + + Wraps with a timeout. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + The timeout. + + + + Continuation function which implements the timeout logic. + + The exception. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Transformation on a layout. Pre-calculated if the layout has a fixed value. + + + + + Create TransformedLayout. + + Layout + Transformation method + Optional renderer, otherwise is used + + + + + + + Create TransformedLayout. If is null, then the returns null + + Layout + Transformation method + Optional renderer, otherwise is used + null if is null + + + + + + + + + + URL Encoding helper. + + + + Allow UnreservedMarks instead of ReservedMarks, as specified by chosen RFC + + + Use RFC2396 standard (instead of RFC3986) + + + Should use lowercase when doing HEX escaping of special characters + + + Replace space ' ' with '+' instead of '%20' + + + Skip UTF8 encoding, and prefix special characters with '%u' + + + + Escape unicode string data for use in http-requests + + unicode string-data to be encoded + target for the encoded result + s for how to perform the encoding + + + + Convert the wide-char into utf8-bytes, and then escape + + + + + + + + + Is allowed? + + + + + + + + Is a-z / A-Z / 0-9 + + + + + + + Prevents the Xamarin linker from linking the target. + + + By applying this attribute all of the members of the target will be kept as if they had been referenced by the code. + + + + + Ensures that all members of this type are preserved + + + + + Flags the method as a method to preserve during linking if the container class is pulled in. + + + + + Helper class for XML + + + + + removes any unusual unicode characters that can't be encoded into XML + + + + + Pretest, small text and not escape needed + + + + + + + + Converts object value to invariant format, and strips any invalid xml-characters + + Object value + Object value converted to string + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object value converted to string + + + + XML elements must follow these naming rules: + - Element names are case-sensitive + - Element names must start with a letter or underscore + - Element names can contain letters, digits, hyphens, underscores, and periods + - Element names cannot contain spaces + + + + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object TypeCode + Check and remove unusual unicode characters from the result string. + Object value converted to string + + + + Safe version of WriteAttributeString + + + + + + + + + + Safe version of WriteAttributeString + + + + + + + + Safe version of WriteElementSafeString + + + + + + + + + + Safe version of WriteCData + + + + + + + Interface for handling object transformation + + + + + Takes a dangerous (or massive) object and converts into a safe (or reduced) object + + + Null if unknown object, or object cannot be handled + + + + + Provides an interface to execute System.Actions without surfacing any exceptions raised for that action. + + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Render a message template property to a string + + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Log event context data. + + + + + Initializes a new instance of the class. + + + + + Gets or sets string that will be used to separate key/value pairs. + + + + + + Get or set if empty values should be included. + + A value is empty when null or in case of a string, null or empty string. + + + + + + Gets or sets the keys to exclude from the output. If omitted, none are excluded. + + + + + + Gets or sets how key/value pairs will be formatted. + + + + + + Renders all log event's properties and appends them to the specified . + + The to append the rendered data to. + Logging event. + + + + Designates a property of the class as an ambient property. + + + non-ambient: ${uppercase:${level}} + ambient : ${level:uppercase} + + + + + Initializes a new instance of the class. + + Ambient property name. + + + + Used to render the application domain name. + + + + + Create a new renderer + + + + + Create a new renderer + + + + + Format string. Possible values: "Short", "Long" or custom like {0} {1}. Default "Long" + The first parameter is the , the second the second the + This string is used in + + + + + + + + + + + + + + + Application setting. + + + Use this layout renderer to insert the value of an application setting + stored in the application's App.config or Web.config file. + + + ${appsetting:item=mysetting:default=mydefault} - produces "mydefault" if no appsetting + + + + + The AppSetting item-name + + + + + + The AppSetting item-name + + + + + The default value to render if the AppSetting value is null. + + + + + + + + + Renders the specified application setting or default value and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Renders the assembly version information for the entry assembly or a named assembly. + + + As this layout renderer uses reflection and version information is unlikely to change during application execution, + it is recommended to use it in conjunction with the . + + + The entry assembly can't be found in some cases e.g. ASP.NET, unit tests, etc. + + + + + Initializes a new instance of the class. + + + + + The (full) name of the assembly. If null, using the entry assembly. + + + + + + Gets or sets the type of assembly version to retrieve. + + + Some version type and platform combinations are not fully supported. + - UWP earlier than .NET Standard 1.5: Value for is always returned unless the parameter is specified. + - Silverlight: Value for is always returned. + + + + + + Gets or sets the custom format of the assembly version output. + + + Supported placeholders are 'major', 'minor', 'build' and 'revision'. + The default .NET template for version numbers is 'major.minor.build.revision'. See + https://docs.microsoft.com/en-gb/dotnet/api/system.version?view=netframework-4.7.2#remarks + for details. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders an assembly version and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets the assembly specified by , or entry assembly otherwise + + Found assembly + + + + Type of assembly version to retrieve. + + + + + Gets the assembly version. + + + + + Gets the file version. + + + + + Gets additional version information. + + + + + The current application domain's base directory. + + + + + cached + + + + + Use base dir of current process. Alternative one can just use ${processdir} + + + + + + Fallback to the base dir of current process, when AppDomain.BaseDirectory is Temp-Path (.NET Core 3 - Single File Publish) + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the base directory. + + + + + + Renders the application base directory and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site source file name. Full callsite + + + + + Gets or sets a value indicating whether to include source file path. + + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + + + + + + The call site (class name, method name and source information). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to render the class name. + + + + + + Gets or sets a value indicating whether to render the include the namespace with . + + + + + + Gets or sets a value indicating whether to render the method name. + + + + + + Gets or sets a value indicating whether the method name will be cleaned up if it is detected as an anonymous delegate. + + + + + + Gets or sets a value indicating whether the method and class names will be cleaned up if it is detected as an async continuation + (everything after an await-statement inside of an async method). + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets a value indicating whether to render the source file name and line number. + + + + + + Gets or sets a value indicating whether to include source file path. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site source line number. Full callsite + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + + + + + + A counter value (increases on each layout rendering). + + + + + Gets or sets the initial value of the counter. + + + + + + Gets or sets the value to be added to the counter after each layout rendering. + + + + + + Gets or sets the name of the sequence. Different named sequences can have individual values. + + + + + + + + + The current working directory of the application. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the current directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the current directory. + + + + + + + + + + + + Current date and time. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the date format. Can be any argument accepted by DateTime.ToString(format). + + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + + + + + + + + + + DB null for a database + + + + + + + + + + + The OS dependent directory separator + + + + + + + + + + + The environment variable. + + + + + Gets or sets the name of the environment variable. + + + + + + Gets or sets the default value to be used when the environment variable is not set. + + + + + + + + + + + + Thread identity information (username). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether username should be included. + + + + + + Gets or sets a value indicating whether domain name should be included. + + + + + + Gets or sets the default value to be used when the User is not set. + + + + + + Gets or sets the default value to be used when the Domain is not set. + + + + + + + + + + + + Log event context data. + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the name of the item. + + + + + + Renders the specified log event context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Log event context data. See . + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + + + + + + + + + + Exception information provided through + a call to one of the Logger.*Exception() methods. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the format of the output. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + + + Gets or sets the format of the output of inner exceptions. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + Gets or sets the separator used to concatenate parts specified in the Format. + + + + + + Gets or sets the separator used to concatenate exception data specified in the Format. + + + + + + Gets or sets the maximum number of inner exceptions to include in the output. + By default inner exceptions are not enabled for compatibility with NLog 1.0. + + + + + + Gets or sets the separator between inner exceptions. + + + + + + Gets or sets whether to render innermost Exception from + + + + + Gets the formats of the output of inner exceptions to be rendered in target. + + + + + + + Gets the formats of the output to be rendered in target. + + + + + + + + + + + + + Appends the Message of an Exception to the specified . + + The to append the rendered data to. + The exception containing the Message to append. + + + + Appends the method name from Exception's stack trace to the specified . + + The to append the rendered data to. + The Exception whose method name should be appended. + + + + Appends the stack trace from an Exception to the specified . + + The to append the rendered data to. + The Exception whose stack trace should be appended. + + + + Appends the result of calling ToString() on an Exception to the specified . + + The to append the rendered data to. + The Exception whose call to ToString() should be appended. + + + + Appends the type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose type should be appended. + + + + Appends the short type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose short type should be appended. + + + + Appends the application source of an Exception to the specified . + + The to append the rendered data to. + The Exception whose source should be appended. + + + + Appends the HResult of an Exception to the specified . + + The to append the rendered data to. + The Exception whose HResult should be appended. + + + + Appends the contents of an Exception's Data property to the specified . + + The to append the rendered data to. + The Exception whose Data property elements should be appended. + + + + Appends all the serialized properties of an Exception into the specified . + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Appends all the additional properties of an Exception like Data key-value-pairs + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Split the string and then compile into list of Rendering formats. + + + + + Renders contents of the specified file. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file. + + + + + + Gets or sets the encoding used in the file. + + The encoding. + + + + + Renders the contents of the specified file and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + Name used in config without ${}. E.g. "test" could be used as "${test}". + + + + + Method that renders the layout. + + + + + Format string for conversion from object to string. + + + + + + + + + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + The information about the garbage collector. + + + + + Gets or sets the property to retrieve. + + + + + + + + + Gets or sets the property of System.GC to retrieve. + + + + + Total memory allocated. + + + + + Total memory allocated (perform full garbage collection first). + + + + + Gets the number of Gen0 collections. + + + + + Gets the number of Gen1 collections. + + + + + Gets the number of Gen2 collections. + + + + + Maximum generation number supported by GC. + + + + + Render a Global Diagnostics Context item. See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + + + + Globally-unique identifier (GUID). + + + + + Gets or sets the GUID format as accepted by Guid.ToString() method. + + + + + + Generate the Guid from the NLog LogEvent (Will be the same for all targets) + + + + + + + + + + + + + + + The host name that the process is running on. + + + + + + + + Gets the host name and falls back to computer name if not available + + + + + Tries the lookup value. + + The lookup function. + Type of the lookup. + + + + + + + + Thread identity information (name and authentication information). + + + + + Gets or sets the separator to be used when concatenating + parts of identity information. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.Name. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.AuthenticationType. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.IsAuthenticated. + + + + + + + + + Retrieve network interfaces + + + + + Retrieve network interfaces + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Gets or sets the name of the parameter. + + + + + + Renders the specified installation parameter and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render environmental information related to logging events. + + + + + Gets the logging configuration this target is part of. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Renders the the value of layout renderer in the context of the specified log event. + + The log event. + String representation of a layout renderer. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Renders the value of layout renderer in the context of the specified log event. + + The log event. + The layout render output is appended to builder + + + + Renders the value of layout renderer in the context of the specified log event into . + + The to append the rendered data to. + Logging event. + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Get the for rendering the messages to a + + LogEvent with culture + Culture in on Layout level + + + + + Get the for rendering the messages to a , needed for date and number formats + + LogEvent with culture + Culture in on Layout level + + + is preferred + + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Marks class as a layout renderer and assigns a name to it. + + This attribute is not required when registering the layout in the API. + + + + Initializes a new instance of the class. + + Name of the layout renderer, without the `${ }` + + + + Format of the ${level} layout renderer output. + + + + + Render the LogLevel standard name. + + + + + Render the first character of the level. + + + + + Render the ordinal (aka number) for the level. + + + + + Render the LogLevel full name, expanding Warn / Info abbreviations + + + + + The log level. + + + + + Gets or sets a value indicating the output format of the level. + + + + + + + + + + + + + + + A string literal. + + + This is used to escape '${' sequence + as ;${literal:text=${}' + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The literal text value. + This is used by the layout compiler. + + + + Gets or sets the literal text. + + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The IP address from the network interface card (NIC) on the local machine + + + Skips loopback-adapters and tunnel-interfaces. Skips devices without any MAC-address + + + + + Get or set whether to prioritize IPv6 or IPv4 (default) + + + + + + + + + + + + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes the layout renderer. + + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets a value indicating whether the XML should use spaces for indentation. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDLC item separator. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the XML logging event and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The logger name. + + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + + + + + + + The date and time in a long, sortable format yyyy-MM-dd HH:mm:ss.ffff. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the date in the long format (yyyy-MM-dd HH:mm:ss.ffff) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The machine name that the process is running on. + + + + + + + + + + + Render a Mapped Diagnostic Context item, See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + Render a Mapped Diagnostic Logical Context item (based on CallContext). + See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + The formatted log message. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to log exception along with message. + + + + + + Gets or sets the string that separates message from the exception. + + + + + + Gets or sets whether it should render the raw message without formatting parameters + + + + + + + + + + + + Render a Nested Diagnostic Context item. + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested diagnostics context output. + + + + + + Renders the specified Nested Diagnostics Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render a Nested Diagnostic Logical Context item (Async scope) + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested logical context output. + + + + + + Renders the specified Nested Logical Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Timing Renderer (Async scope) + + + + + Gets or sets whether to only include the duration of the last scope created + + + + + + Gets or sets whether to just display the scope creation time, and not the duration + + + + + + Gets or sets the TimeSpan format. Can be any argument accepted by TimeSpan.ToString(format). + + + + + + Renders the timing details of the Nested Logical Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Retrieve network interfaces + + + + + Retrieve network interfaces + + + + + A newline literal. + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The directory where NLog.dll is located. + + + + + Initializes static members of the NLogDirLayoutRenderer class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The performance counter. + + + + + Gets or sets the name of the counter category. + + + + + + Gets or sets the name of the performance counter. + + + + + + Gets or sets the name of the performance counter instance (e.g. this.Global_). + + + + + + Gets or sets the name of the machine to read the performance counter from. + + + + + + Format string for conversion from float to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + If having multiple instances with the same process-name, then they will get different instance names + + + + + The executable directory from the FileName, + using the current process + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the process directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the process directory. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + The identifier of the current process. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + + + + The information about the running process. + + + + + Gets or sets the property to retrieve. + + + + + + Gets or sets the format-string to use if the property supports it (Ex. DateTime / TimeSpan / Enum) + + + + + + + + + + + + + + + Property of System.Diagnostics.Process to retrieve. + + + + + Base Priority. + + + + + Exit Code. + + + + + Exit Time. + + + + + Process Handle. + + + + + Handle Count. + + + + + Whether process has exited. + + + + + Process ID. + + + + + Machine name. + + + + + Handle of the main window. + + + + + Title of the main window. + + + + + Maximum Working Set. + + + + + Minimum Working Set. + + + + + Non-paged System Memory Size. + + + + + Non-paged System Memory Size (64-bit). + + + + + Paged Memory Size. + + + + + Paged Memory Size (64-bit).. + + + + + Paged System Memory Size. + + + + + Paged System Memory Size (64-bit). + + + + + Peak Paged Memory Size. + + + + + Peak Paged Memory Size (64-bit). + + + + + Peak Virtual Memory Size. + + + + + Peak Virtual Memory Size (64-bit).. + + + + + Peak Working Set Size. + + + + + Peak Working Set Size (64-bit). + + + + + Whether priority boost is enabled. + + + + + Priority Class. + + + + + Private Memory Size. + + + + + Private Memory Size (64-bit). + + + + + Privileged Processor Time. + + + + + Process Name. + + + + + Whether process is responding. + + + + + Session ID. + + + + + Process Start Time. + + + + + Total Processor Time. + + + + + User Processor Time. + + + + + Virtual Memory Size. + + + + + Virtual Memory Size (64-bit). + + + + + Working Set Size. + + + + + Working Set Size (64-bit). + + + + + The name of the current process. + + + + + Gets or sets a value indicating whether to write the full path to the process executable. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Renders the current process name (optionally with a full path). + + The to append the rendered data to. + Logging event. + + + + The process time in format HH:mm:ss.mmm. + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + Write timestamp to builder with format hh:mm:ss:fff + + + + + High precision timer, based on the value returned from QueryPerformanceCounter() optionally converted to seconds. + + + + + Gets or sets a value indicating whether to normalize the result by subtracting + it from the result of the first call (so that it's effectively zero-based). + + + + + + Gets or sets a value indicating whether to output the difference between the result + of QueryPerformanceCounter and the previous one. + + + + + + Gets or sets a value indicating whether to convert the result to seconds by dividing + by the result of QueryPerformanceFrequency(). + + + + + + Gets or sets the number of decimal digits to be included in output. + + + + + + Gets or sets a value indicating whether to align decimal point (emit non-significant zeros). + + + + + + + + + + + + A value from the Registry. + + + + + Create new renderer + + + + + Gets or sets the registry value name. + + + + + + Gets or sets the value to be output when the specified registry key or value is not found. + + + + + + Require escaping backward slashes in . Need to be backwards-compatible. + + When true: + + `\` in value should be configured as `\\` + `\\` in value should be configured as `\\\\`. + + Default value wasn't a Layout before and needed an escape of the slash + + + + + Gets or sets the registry key. + + + HKCU\Software\NLogTest + + + Possible keys: +
    +
  • HKEY_LOCAL_MACHINE
  • +
  • HKLM
  • +
  • HKEY_CURRENT_USER
  • +
  • HKCU
  • +
  • HKEY_CLASSES_ROOT
  • +
  • HKEY_USERS
  • +
  • HKEY_CURRENT_CONFIG
  • +
  • HKEY_DYN_DATA
  • +
  • HKEY_PERFORMANCE_DATA
  • +
+
+ +
+ + + Reads the specified registry key and value and appends it to + the passed . + + The to append the rendered data to. + Logging event. Ignored. + + + + Has ? + + + + + Parse key to and subkey. + + full registry key name + Result of parsing, never null. + + + + Aliases for the hives. See https://msdn.microsoft.com/en-us/library/ctb3kd86(v=vs.110).aspx + + + + + The sequence ID + + + + + + + + + + + The short date in a sortable format yyyy-MM-dd. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the current short date string (yyyy-MM-dd) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + System special folder path (includes My Documents, My Music, Program Files, Desktop, and more). + + + + + Gets or sets the system special folder to use. + + + Full list of options is available at MSDN. + The most common ones are: +
    +
  • ApplicationData - roaming application data for current user.
  • +
  • CommonApplicationData - application data for all users.
  • +
  • MyDocuments - My Documents
  • +
  • DesktopDirectory - Desktop directory
  • +
  • LocalApplicationData - non roaming application data
  • +
  • Personal - user profile directory
  • +
  • System - System directory
  • +
+
+ +
+ + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Format of the ${stacktrace} layout renderer output. + + + + + Raw format (multiline - as returned by StackFrame.ToString() method). + + + + + Flat format (class and method names displayed in a single line). + + + + + Detailed flat format (method signatures displayed in a single line). + + + + + Stack trace renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the output format of the stack trace. + + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets the stack frame separator string. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A temporary directory. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The identifier of the current thread. + + + + + + + + The name of the current thread. + + + + + + + + The Ticks value of current date and time. + + + + + + + + + + + The time in a 24-hour, sortable format HH:mm:ss.mmmm. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + A renderer that puts into log a System.Diagnostics trace correlation id. + + + + + + + + + + + Render a NLog variable (xml or config) + + + + + Gets or sets the name of the NLog variable. + + + + + + Gets or sets the default value to be used when the variable is not set. + + Not used if Name is null + + + + + Initializes the layout renderer. + + + + + Try get the + + + + + + + Renders the specified variable and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Thread Windows identity information (username). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether domain name should be included. + + + + + + Gets or sets a value indicating whether username should be included. + + + + + + Renders the current thread windows identity information and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Applies caching to another layout output. + + + The value of the inner layout will be rendered only once and reused subsequently. + + + + + A value indicating when the cache is cleared. + + + + Never clear the cache. + + + Clear the cache whenever the is initialized. + + + Clear the cache whenever the is closed. + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether this is enabled. + + + + + + Gets or sets a value indicating when the cache is cleared. + + + + + + Cachekey. If the cachekey changes, resets the value. For example, the cachekey would be the current day.s + + + + + + Gets or sets a value indicating how many seconds the value should stay cached until it expires + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + + + + Filters characters not allowed in the file names by replacing them with safe character. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to modify the output of this renderer so it can be used as a part of file path + (illegal characters are replaced with '_'). + + + + + + + + + + + + Escapes output of another layout using JSON rules. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply JSON encoding. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + + + + + + + Left part of a text + + + + + Gets or sets the length in characters. + + + + + + Same as -property, so it can be used as ambient property. + + + ${message:truncate=80} + + + + + + + + + + + + Converts the result of another layout output to lower case. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Render the non-raw value of an object. + + For performance and/or full (formatted) control of the output. + + + + Gets or sets a value indicating whether to disable the IRawValue-interface + + A value of true if IRawValue-interface should be ignored; otherwise, false. + + + + + + + + + + + Render a single property of a object + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + Shortcut for + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + Only outputs the inner layout when exception has been defined for log message. + + + + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + ${onhasproperties:, Properties\: ${all-event-properties}} + + + + + + + + + + + Horizontal alignment for padding layout renderers. + + + + + When layout text is too long, align it to the left + (remove characters from the right). + + + + + When layout text is too long, align it to the right + (remove characters from the left). + + + + + Applies padding to another layout output. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of characters to pad the output to. + + + Positive padding values cause left padding, negative values + cause right padding to the desired width. + + + + + + Gets or sets the padding character. + + + + + + Gets or sets a value indicating whether to trim the + rendered text to the absolute value of the padding length. + + + + + + Gets or sets a value indicating whether a value that has + been truncated (when is true) + will be left-aligned (characters removed from the right) + or right-aligned (characters removed from the left). The + default is left alignment. + + RegistryLayoutRenderer + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Replaces a string in the output of another layout with another string. + + + ${replace:searchFor=\\n+:replaceWith=-:regex=true:inner=${message}} + + + + + Gets or sets the text to search for. + + The text search for. + + + + + Gets or sets a value indicating whether regular expressions should be used. + + A value of true if regular expressions should be used otherwise, false. + + + + + Gets or sets the replacement string. + + The replacement string. + + + + + Gets or sets the group name to replace when using regular expressions. + Leave null or empty to replace without using group name. + + The group name. + + + + + Gets or sets a value indicating whether to ignore case. + + A value of true if case should be ignored when searching; otherwise, false. + + + + + Gets or sets a value indicating whether to search for whole words. + + A value of true if whole words should be searched for; otherwise, false. + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Initializes the layout renderer. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + This class was created instead of simply using a lambda expression so that the "ThreadAgnosticAttributeTest" will pass + + + + + A match evaluator for Regular Expression based replacing + + Input string. + Group name in the regex. + Replace value. + Match from regex. + Groups replaced with . + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating the string that should be used for separating lines. + + + + + + + + + + + + Right part of a text + + + + + Gets or sets the length in characters. + + + + + + + + + + + + Decodes text "encrypted" with ROT-13. + + + See https://en.wikipedia.org/wiki/ROT13. + + + + + Gets or sets the layout to be wrapped. + + The layout to be wrapped. + This variable is for backwards compatibility + + + + + Encodes/Decodes ROT-13-encoded string. + + The string to be encoded/decoded. + Encoded/Decoded text. + + + + + + + + + + Encodes/Decodes ROT-13-encoded string. + + + + + Substring the result + + + ${substring:${level}:start=2:length=2} + ${substring:${level}:start=-2:length=2} + ${substring:Inner=${level}:start=2:length=2} + + + + + Initializes a new instance of the class. + + + + + Gets or sets the start index. + + Index + + + + + Gets or sets the length in characters. If null, then the whole string + + Index + + + + + + + + + + + Calculate start position + + 0 or positive number + + + + Calculate needed length + + 0 or positive number + + + + Trims the whitespace from the result of another layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + + + + + + + Converts the result of another layout output to upper case. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + ${level:uppercase} // [AmbientProperty] + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether upper case conversion should be applied. + + A value of true if upper case conversion should be applied otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Encodes the result of another layout output for use with URLs. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether spaces should be translated to '+' or '%20'. + + A value of true if space should be translated to '+'; otherwise, false. + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + + + Gets or sets the layout to be rendered when original layout produced empty result. + + + + + + + + + + + + + + + Only outputs the inner layout when the specified condition has been met. + + + + + Gets or sets the condition that must be met for the layout to be printed. + + + + + + If is not met, print this layout. + + + + + + + + + + + + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the line length for wrapping. + + + Only positive values are allowed + + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + Base class for s which wrapping other s. + + This has the property (which is default) and can be used to wrap. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + + + + + Gets or sets the wrapped layout. + + [DefaultParameter] so Inner: is not required if it's the first + + + + + + + + + Renders the inner message, processes it and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Appends the rendered output from -layout and transforms the added output (when necessary) + + Logging event. + The to append the rendered data to. + Start position for any necessary transformation of . + + + + Transforms the output of another layout. + + Logging event. + Output to be transform. + Transformed text. + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + Base class for s which wrapping other s. + + This expects the transformation to work on a + + + + + + + + Transforms the output of another layout. + + + Output to be transform. + + + + Transforms the output of another layout. + + Output to be transform. + + + + Renders the inner layout contents. + + + for the result + + + + + + + + + + + + + + + + + + Converts the result of another layout output to be XML-compliant. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply XML encoding. + + Ensures always valid XML, but gives a performance hit + + + + + Gets or sets a value indicating whether to transform newlines (\r\n) into ( ) + + + + + + + + + + + + A layout containing one or more nested layouts. + + + + + Initializes a new instance of the class. + + + + + Gets the inner layouts. + + + + + + Initializes the layout. + + + + + Formats the log event relying on inner layouts. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event relying on inner layouts. + + The logging event. + for the result + + + + Closes the layout. + + + + + Generate description of Compound Layout + + Compound Layout String Description + + + + A column in the CSV. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the column. + The layout of the column. + + + + Gets or sets the name of the column. + + + + + + Gets or sets the layout of the column. + + + + + + Gets or sets the override of Quoting mode + + + and are faster than the default + + + + + + Specifies allowed column delimiters. + + + + + Automatically detect from regional settings. + + + + + Comma (ASCII 44). + + + + + Semicolon (ASCII 59). + + + + + Tab character (ASCII 9). + + + + + Pipe character (ASCII 124). + + + + + Space character (ASCII 32). + + + + + Custom string, specified by the CustomDelimiter. + + + + + A specialized layout that renders CSV-formatted events. + + If is set, then the header generation with column names will be disabled. + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + Gets or sets a value indicating whether CVS should include header. + + A value of true if CVS should include header; otherwise, false. + + + + + Gets or sets the column delimiter. + + + + + + Gets or sets the quoting mode. + + + + + + Gets or sets the quote Character. + + + + + + Gets or sets the custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). + + + + + + Initializes the layout. + + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event for write. + + The logging event. + for the result + + + + Get the headers with the column names. + + + + + + Header with column names for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Generate description of CSV Layout + + CSV Layout String Description + + + + Specifies CSV quoting modes. + + + + + Quote all column (Fast) + + + + + Quote nothing (Very fast) + + + + + Quote only whose values contain the quote symbol or the separator (Slow) + + + + + JSON attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with json-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Json encoded. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A specialized layout that renders JSON-formatted events. + + + + + Initializes a new instance of the class. + + + + + Gets the array of attributes' configurations. + + + + + + Gets or sets the option to suppress the extra spaces in the output json + + + + + + Gets or sets the option to render the empty object value {} + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as JSON) + + + + + + List of property names to exclude when is true + + + + + + How far should the JSON serializer follow object references before backing off + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Formats the log event as a JSON document for writing. + + The logging event. + for the result + + + + Formats the log event as a JSON document for writing. + + The log event to be formatted. + A JSON string representation of the log event. + + + + Generate description of JSON Layout + + JSON Layout String Description + + + + Abstract interface that layouts must implement. + + + + + Is this layout initialized? See + + + + + Gets a value indicating whether this layout is thread-agnostic (can be rendered on any thread). + + + Layout is thread-agnostic if it has been marked with [ThreadAgnostic] attribute and all its children are + like that as well. + + Thread-agnostic layouts only use contents of for its output. + + + + + Gets the level of stack trace information required for rendering. + + + + + Gets the logging configuration this target is part of. + + + + + Converts a given text to a . + + Text to be converted. + object represented by the text. + + + + Implicitly converts the specified string to a . + + The layout string. + Instance of .' + + + + Implicitly converts the specified string to a . + + The layout string. + The NLog factories to use when resolving layout renderers. + Instance of . + + + + Implicitly converts the specified string to a . + + The layout string. + Whether should be thrown on parse errors (false = replace unrecognized tokens with a space). + Instance of . + + + + Create a from a lambda method. + + Method that renders the layout. + Tell if method is safe for concurrent threading. + Instance of . + + + + Precalculates the layout for the specified log event and stores the result + in per-log event cache. + + Only if the layout doesn't have [ThreadAgnostic] and doesn't contain layouts with [ThreadAgnostic]. + + The log event. + + Calling this method enables you to store the log event in a buffer + and/or potentially evaluate it in another thread even though the + layout may contain thread-dependent renderer. + + + + + Renders the event info in layout. + + The event info. + String representing log event. + + + + Optimized version of for internal Layouts. Works best + when override of is available. + + The event info. + Appends the string representing log event to target + Should rendering result be cached on LogEventInfo + + + + Valid default implementation of , when having implemented the optimized + + The logging event. + StringBuilder to help minimize allocations [optional]. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Optimized version of for internal Layouts, when + override of is available. + + + + + Try get value + + + rawValue if return result is true + false if we could not determine the rawValue + + + + Marks class as a layout renderer and assigns a format string to it. + + + + + Initializes a new instance of the class. + + Layout name. + + + + Parses layout strings. + + + + + Add to + + + + + + + Options available for + + + + + Default options + + + + + Layout renderer method can handle concurrent threads + + + + + Layout renderer method is agnostic to current thread context. This means it will render the same result indepdent of thread-context. + + + + + A specialized layout that supports header and footer. + + + + + Gets or sets the body layout (can be repeated multiple times). + + + + + + Gets or sets the header layout. + + + + + + Gets or sets the footer layout. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result. + + + + A specialized layout that renders Log4j-compatible XML events. + + + This layout is not meant to be used explicitly. Instead you can use ${log4jxmlevent} layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets the instance that renders log events. + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Represents a string with embedded placeholders that can render contextual information. + + + This layout is not meant to be used explicitly. Instead you can just use a string containing layout + renderers everywhere the layout is required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout string to parse. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + Whether should be thrown on parse errors. + + + + Original text before compile to Layout renderes + + + + + Gets or sets the layout text. + + + + + + Is the message fixed? (no Layout renderers used) + + + + + Get the fixed text. Only set when is true + + + + + Is the message a simple formatted string? (Can skip StringBuilder) + + + + + Gets a collection of objects that make up this layout. + + + + + Gets the level of stack trace information required for rendering. + + + + + Converts a text to a simple layout. + + Text to be converted. + A object. + + + + Escapes the passed text so that it can + be used literally in all places where + layout is normally expected without being + treated as layout. + + The text to be escaped. + The escaped text. + + Escaping is done by replacing all occurrences of + '${' with '${literal:text=${}' + + + + + Evaluates the specified text by expanding all layout renderers. + + The text to be evaluated. + Log event to be used for evaluation. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Evaluates the specified text by expanding all layout renderers + in new context. + + The text to be evaluated. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Returns a that represents the current object. + + + A that represents the current object. + + + + + + + + + + + + + + + + + + + + XML attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with xml-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A XML Element + + + + + + + + + + + Name of the element + + + + + + Value inside the element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + The name of the top XML node + The value of the top XML node + + + + Name of the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Value inside the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Auto indent and create new lines + + + + + + Gets the array of xml 'elements' configurations. + + + + + + Gets the array of 'attributes' configurations for the element + + + + + + Gets or sets whether a ElementValue with empty value should be included in the output + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as XML) + + + + + + List of property names to exclude when is true + + + + + + XML element name to use when rendering properties + + + Support string-format where {0} means property-key-name + + Skips closing element tag when having configured + + + + + + XML attribute name to use when rendering property-key + + When null (or empty) then key-attribute is not included + + + Will replace newlines in attribute-value with + + + + + + XML attribute name to use when rendering property-value + + When null (or empty) then value-attribute is not included and + value is formatted as XML-element-value + + + Skips closing element tag when using attribute for value + + Will replace newlines in attribute-value with + + + + + + XML element name to use for rendering IList-collections items + + + + + + How far should the XML serializer follow object references before backing off + + + + + + Initializes the layout. + + + + + Formats the log event as a XML document for writing. + + The logging event. + for the result + + + + Formats the log event as a XML document for writing. + + The log event to be formatted. + A XML string representation of the log event. + + + + write attribute, only if is not empty + + + + + rendered + + + + Generate description of XML Layout + + XML Layout String Description + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + + + + + + + Name of the root XML element + + + + + + Value inside the root XML element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Represents the logging event. + + + + + Gets the date of the first log event created. + + + + + The formatted log message. + + + + + The log message including any parameter placeholders + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + Exception information. + + + + Gets the unique identifier of log event which is automatically generated + and monotonously increasing. + + + + + Gets or sets the timestamp of the logging event. + + + + + Gets or sets the level of the logging event. + + + + + Gets a value indicating whether stack trace has been set for this event. + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Gets the entire stack trace. + + + + + Gets the callsite class name + + + + + Gets the callsite member function name + + + + + Gets the callsite source file path + + + + + Gets the callsite source file line number + + + + + Gets or sets the exception information. + + + + + Gets or sets the logger name. + + + + + Gets the logger short name. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the log message including any parameter placeholders. + + + + + Gets or sets the parameter values or null if no parameters have been specified. + + + + + Gets or sets the format provider that was provided while logging or + when no formatProvider was specified. + + + + + Gets or sets the message formatter for generating + Uses string.Format(...) when nothing else has been configured. + + + + + Gets the formatted message. + + + + + Checks if any per-event properties (Without allocation) + + + + + Gets the dictionary of per-event context properties. + + + + + Gets the dictionary of per-event context properties. + Internal helper for the PropertiesDictionary type. + + Create the event-properties dictionary, even if no initial template parameters + Provided when having parsed the message template and capture template parameters (else null) + + + + + Gets the named parameters extracted from parsing as MessageTemplate + + + + + Gets the dictionary of per-event context properties. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + The exception. + Instance of . + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates from this by attaching the specified asynchronous continuation. + + The asynchronous continuation. + Instance of with attached continuation. + + + + Returns a string representation of this log event. + + String representation of the log event. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace (Negative means NLog should skip stackframes from System-assemblies). + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Set the + + true = Always, false = Never, null = Auto Detect + + + + Specialized LogFactory that can return instances of custom logger types. + + Use this only when a custom Logger type is defined. + The type of the logger to be returned. Must inherit from . + + + + Gets the logger with type . + + The logger name. + An instance of . + + + + Gets a custom logger with the full name of the current class (so namespace and class name) and type . + + An instance of . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Overwrite possible file paths (including filename) for possible NLog config files. + When this property is null, the default file paths ( are used. + + + + + Occurs when logging changes. + + + + + Occurs when logging gets reloaded. + + + + + Initializes static members of the LogManager class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The config. + + + + Initializes a new instance of the class. + + The config loader + The custom AppEnvironmnet override + + + + Gets the current . + + + + + Gets or sets a value indicating whether exceptions should be thrown. See also . + + A value of true if exception should be thrown; otherwise, false. + By default exceptions are not thrown under any circumstances. + + + + Gets or sets a value indicating whether should be thrown. + + If null then is used. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. After setting this property all + existing loggers will be re-configured, so there is no need to call + manually. + + + + + Gets or sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets the default culture info to use as . + + + Specific culture info or null to use + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting + unmanaged resources. + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Creates a logger that discards all log messages. + + Null logger instance. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets the logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + The logger with type . + Type of the logger + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The type of the logger to create. The type must inherit from + The logger of type . + This is a slow-running method. Make sure you are not calling this method in a + loop. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + Name of the logger. + Type of the logger + The logger reference with type . Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The type of the logger to create. The type must inherit from . + The logger of type . Multiple calls to GetLogger with the + same argument aren't guaranteed to return the same logger reference. + + + + Loops through all loggers previously returned by GetLogger and recalculates their + target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time + will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flushes any pending log messages on all appenders. + + Config containing Targets to Flush + Flush completed notification (success / timeout) + Optional timeout that guarantees that completed notication is called. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Returns if logging is currently enabled. + + A value of if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Raises the event when the configuration is reloaded. + + Event arguments. + + + + Raises the event when the configuration is reloaded. + + Event arguments + + + + Currently this is disposing? + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Logger cache key. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Determines if two objects are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Determines if two objects of the same type are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Logger cache. + + + + + Inserts or updates. + + + + + + + Internal for unit tests + + + + + Enables logging in implementation. + + + + + Initializes a new instance of the class. + + The factory. + + + + Enables logging. + + + + + Logging methods which only are executed when the DEBUG conditional compilation symbol is set. + + Remarks: + The DEBUG conditional compilation symbol is default enabled (only) in a debug build. + + If the DEBUG conditional compilation symbol isn't set in the calling library, the compiler will remove all the invocations to these methods. + This could lead to better performance. + + See: https://msdn.microsoft.com/en-us/library/4xssyw96%28v=vs.90%29.aspx + + + Provides logging interface and utility functions. + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Initializes a new instance of the class. + + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Collection of context properties for the Logger. The logger will append it for all log events + + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Creates new logger that automatically appends the specified property to all log events (without changing current logger) + + Property Name + Property Value + New Logger object that automatically appends specified property + + + + Updates the specified context property for the current logger. The logger will append it for all log events. + + It could be rendered with ${event-properties:YOURNAME} + + With property, all properties could be changed. + + + Will affect all locations/contexts that makes use of the same named logger object. + + Property Name + Property Value + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Raises the event when the logger is reconfigured. + + Event arguments + + + + Implementation of logging engine. + + + + + Gets the filter result. + + The filter chain. + The log event. + default result if there are no filters, or none of the filters decides. + The result of the filter. + + + + Defines available log levels. + + + + + Trace log level. + + + + + Debug log level. + + + + + Info log level. + + + + + Warn log level. + + + + + Error log level. + + + + + Fatal log level. + + + + + Off log level. + + + + + Gets all the available log levels (Trace, Debug, Info, Warn, Error, Fatal, Off). + + + + + Gets all the log levels that can be used to log events (Trace, Debug, Info, Warn, Error, Fatal) + i.e LogLevel.Off is excluded. + + + + + Initializes a new instance of . + + The log level name. + The log level ordinal number. + + + + Gets the name of the log level. + + + + + Gets the ordinal of the log level. + + + + + Compares two objects + and returns a value indicating whether + the first one is equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal == level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is not equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal != level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than the second one. + + The first level. + The second level. + The value of level1.Ordinal > level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal >= level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than the second one. + + The first level. + The second level. + The value of level1.Ordinal < level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal <= level2.Ordinal. + + + + Gets the that corresponds to the specified ordinal. + + The ordinal. + The instance. For 0 it returns , 1 gives and so on. + + + + Returns the that corresponds to the supplied . + + The textual representation of the log level. + The enumeration value. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Determines whether the specified instance is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Compares the level to the other object. + + + The object object. + + + A value less than zero when this logger's is + less than the other logger's ordinal, 0 when they are equal and + greater than zero when this ordinal is greater than the + other ordinal. + + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Delegate used to set/get the culture in use. + + This delegate marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the instance used in the . + + Could be used to pass the to other methods + + + + Occurs when logging changes. + + + + + Occurs when logging gets reloaded. + + + + + Gets or sets a value indicating whether NLog should throw exceptions. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether should be thrown. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Gets or sets the global log threshold. Log events below this threshold are not logged. + + + + + Gets or sets the default culture to use. + + This property was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Adds the given assembly which will be skipped + when NLog is trying to find the calling method on stack trace. + + The assembly to skip. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The logger class. This class must inherit from . + The logger of type . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates a logger that discards all log messages. + + Null logger which discards all log messages. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + + + + Gets the specified named custom logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The logger class. This class must inherit from . + The logger of type . Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + The generic way for this method is + + + + Loops through all loggers previously returned by GetLogger. + and recalculates their target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Checks if logging is currently enabled. + + if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Dispose all targets, and shutdown logging. + + + + + Generates a formatted message from the log event + + Log event. + Formatted message + + + + Returns a log message. Used to defer calculation of + the log message until it's actually needed. + + Log message. + + + + Base implementation of a log receiver server which forwards received logs through or a given . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log factory. + + + + Processes the log messages. + + The events to process. + + + + Processes the log messages. + + The log events. + + + + Service contract for Log Receiver client. + + This class marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Service contract for Log Receiver server. + + + + + Processes the log messages. + + The events. + + + + Service contract for Log Receiver server. + + + + + Processes the log messages. + + The events. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Client of + + + + + Occurs when the log message processing has completed. + + + + + Occurs when Open operation has completed. + + + + + Occurs when Close operation has completed. + + + + + Enables the user to configure client and service credentials as well as service credential authentication settings for use on the client side of communication. + + + + + Gets the underlying implementation. + + + + + Gets the target endpoint for the service to which the WCF client can connect. + + + + + Opens the client asynchronously. + + + + + Opens the client asynchronously. + + User-specific state. + + + + Closes the client asynchronously. + + + + + Closes the client asynchronously. + + User-specific state. + + + + Processes the log messages asynchronously. + + The events to send. + + + + Processes the log messages asynchronously. + + The events to send. + User-specific state. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Instructs the inner channel to display a user interface if one is required to initialize the channel prior to using it. + + + + + Implementation of which forwards received logs through or a given . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log factory. + + + + Implementation of which forwards received logs through or a given . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log factory. + + + + Internal configuration of Log Receiver Service contracts. + + + + + Wire format for NLog Event. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the client-generated identifier of the event. + + + + + Gets or sets the ordinal of the log level. + + + + + Gets or sets the logger ordinal (index into . + + The logger ordinal. + + + + Gets or sets the time delta (in ticks) between the time of the event and base time. + + + + + Gets or sets the message string index. + + + + + Gets or sets the collection of layout values. + + + + + Gets the collection of indexes into array for each layout value. + + + + + Converts the to . + + The object this is part of.. + The logger name prefix to prepend in front of the logger name. + Converted . + + + + Wire format for NLog event package. + + + + + Gets or sets the name of the client. + + The name of the client. + + + + Gets or sets the base time (UTC ticks) for all events in the package. + + The base time UTC. + + + + Gets or sets the collection of layout names which are shared among all events. + + The layout names. + + + + Gets or sets the collection of logger names. + + The logger names. + + + + Gets or sets the list of events. + + The events. + + + + Converts the events to sequence of objects suitable for routing through NLog. + + The logger name prefix to prepend in front of each logger name. + + Sequence of objects. + + + + + Converts the events to sequence of objects suitable for routing through NLog. + + + Sequence of objects. + + + + + List of strings annotated for more terse serialization. + + + + + Initializes a new instance of the class. + + + + + Log Receiver Client using WCF. + + + This class marked as obsolete before NLog 4.3.11 and it will be removed in a future release. + + It provides an implementation of the legacy interface and it will be completely obsolete when the + ILogReceiverClient is removed. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Log Receiver Client facade. It allows the use either of the one way or two way + service contract using WCF through its unified interface. + + + Delegating methods are generated with Resharper. + 1. change ProxiedClient to private field (instead of public property) + 2. delegate members + 3. change ProxiedClient back to public property. + + + + + + The client getting proxied + + + + + Do we use one-way or two-way messaging? + + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + The binding. + The remote address. + + + + Causes a communication object to transition immediately from its current state into the closed state. + + + + + Begins an asynchronous operation to close a communication object. + + + The that references the asynchronous close operation. + + The delegate that receives notification of the completion of the asynchronous close operation.An object, specified by the application, that contains state information associated with the asynchronous close operation. was called on an object in the state.The default timeout elapsed before the was able to close gracefully. + + + + Begins an asynchronous operation to close a communication object with a specified timeout. + + + The that references the asynchronous close operation. + + The that specifies how long the send operation has to complete before timing out.The delegate that receives notification of the completion of the asynchronous close operation.An object, specified by the application, that contains state information associated with the asynchronous close operation. was called on an object in the state.The specified timeout elapsed before the was able to close gracefully. + + + + Begins an asynchronous operation to open a communication object. + + + The that references the asynchronous open operation. + + The delegate that receives notification of the completion of the asynchronous open operation.An object, specified by the application, that contains state information associated with the asynchronous open operation.The was unable to be opened and has entered the state.The default open timeout elapsed before the was able to enter the state and has entered the state. + + + + Begins an asynchronous operation to open a communication object within a specified interval of time. + + + The that references the asynchronous open operation. + + The that specifies how long the send operation has to complete before timing out.The delegate that receives notification of the completion of the asynchronous open operation.An object, specified by the application, that contains state information associated with the asynchronous open operation.The was unable to be opened and has entered the state.The specified timeout elapsed before the was able to enter the state and has entered the state. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Enables the user to configure client and service credentials as well as service credential authentication settings for use on the client side of communication. + + + + + Causes a communication object to transition from its current state into the closed state. + + The that specifies how long the send operation has to complete before timing out. was called on an object in the state.The timeout elapsed before the was able to close gracefully. + + + + Causes a communication object to transition from its current state into the closed state. + + was called on an object in the state.The default close timeout elapsed before the was able to close gracefully. + + + + Closes the client asynchronously. + + User-specific state. + + + + Closes the client asynchronously. + + + + + Occurs when Close operation has completed. + + + + + Occurs when the communication object completes its transition from the closing state into the closed state. + + + + + Occurs when the communication object first enters the closing state. + + + + + Instructs the inner channel to display a user interface if one is required to initialize the channel prior to using it. + + + + + Completes an asynchronous operation to close a communication object. + + The that is returned by a call to the method. was called on an object in the state.The timeout elapsed before the was able to close gracefully. + + + + Completes an asynchronous operation to open a communication object. + + The that is returned by a call to the method.The was unable to be opened and has entered the state.The timeout elapsed before the was able to enter the state and has entered the state. + + + + Gets the target endpoint for the service to which the WCF client can connect. + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Occurs when the communication object first enters the faulted state. + + + + + Gets the underlying implementation. + + + + + Causes a communication object to transition from the created state into the opened state. + + The was unable to be opened and has entered the state.The default open timeout elapsed before the was able to enter the state and has entered the state. + + + + Causes a communication object to transition from the created state into the opened state within a specified interval of time. + + The that specifies how long the send operation has to complete before timing out.The was unable to be opened and has entered the state.The specified timeout elapsed before the was able to enter the state and has entered the state. + + + + Opens the client asynchronously. + + + + + Opens the client asynchronously. + + User-specific state. + + + + Occurs when Open operation has completed. + + + + + Occurs when the communication object completes its transition from the opening state into the opened state. + + + + + Occurs when the communication object first enters the opening state. + + + + + Processes the log messages asynchronously. + + The events to send. + + + + Processes the log messages asynchronously. + + The events to send. + User-specific state. + + + + Occurs when the log message processing has completed. + + + + + Gets the current state of the communication-oriented object. + + + The value of the of the object. + + + + + Causes a communication object to transition from its current state into the closed state. + + + + + Abstract base class for the WcfLogReceiverXXXWay classes. It can only be + used internally (see internal constructor). It passes off any Channel usage + to the inheriting class. + + Type of the WCF service. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Occurs when the log message processing has completed. + + + + + Occurs when Open operation has completed. + + + + + Occurs when Close operation has completed. + + + + + Opens the client asynchronously. + + + + + Opens the client asynchronously. + + User-specific state. + + + + Closes the client asynchronously. + + + + + Closes the client asynchronously. + + User-specific state. + + + + Processes the log messages asynchronously. + + The events to send. + + + + Processes the log messages asynchronously. + + The events to send. + User-specific state. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Log Receiver Client using WCF. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Log Receiver Client using WCF. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + + + + + Gets the thread-local dictionary + + Must be true for any subsequent dictionary modification operation + + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The to use when converting a value to a . + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Returns all item names + + A set of the names of all items in current thread-MDC. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified exists in current thread MDC. + + + + Removes the specified from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Async version of Mapped Diagnostics Context - a logical context structure that keeps a dictionary + of strings and provides methods to output them in layouts. Allows for maintaining state across + asynchronous tasks and call contexts. + + + Ideally, these changes should be incorporated as a new version of the MappedDiagnosticsContext class in the original + NLog library so that state can be maintained for multiple threads in asynchronous situations. + + + + + Simulate ImmutableDictionary behavior (which is not yet part of all .NET frameworks). + In future the real ImmutableDictionary could be used here to minimize memory usage and copying time. + + Must be true for any subsequent dictionary modification operation + Prepare dictionary for additional inserts + + + + + Gets the current logical context named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current logical context named item, as . + + Item name. + The to use when converting a value to a string. + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current logical context named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Returns all item names + + A collection of the names of all items in current logical context. + + + + Checks whether the specified exists in current logical context. + + Item name. + A boolean indicating whether the specified exists in current logical context. + + + + Removes the specified from current logical context. + + Item name. + + + + Clears the content of current logical context. + + + + + Clears the content of current logical context. + + Free the full slot. + + + + Mapped Diagnostics Context + + This class marked as obsolete before NLog 2.0 and it may be removed in a future release. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified item exists in current thread MDC. + + + + Removes the specified item from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Mark a parameter of a method for message templating + + + + + Specifies which parameter of an annotated method should be treated as message-template-string + + + + + The name of the parameter that should be as treated as message-template-string + + + + + The type of the captured hole + + + + + Not decided + + + + + normal {x} + + + + + Serialize operator {@x} (aka destructure) + + + + + stringification operator {$x} + + + + + A hole that will be replaced with a value + + + + + Constructor + + + + Parameter name sent to structured loggers. + This is everything between "{" and the first of ",:}". + Including surrounding spaces and names that are numbers. + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + Type + + + + When the template is positional, this is the parsed name of this parameter. + For named templates, the value of Index is undefined. + + + Alignment to render the parameter, by default 0. + This is the parsed value between "," and the first of ":}" + + + + A fixed value + + + + Number of characters from the original template to copy at the current position. + This can be 0 when the template starts with a hole or when there are multiple consecutive holes. + + + Number of characters to skip in the original template at the current position. + 0 is a special value that mean: 1 escaped char, no hole. It can also happen last when the template ends with a literal. + + + + Combines Literal and Hole + + + + Literal + + + Hole + Uninitialized when = 0. + + + + Description of a single parameter extracted from a MessageTemplate + + + + + Parameter Name extracted from + This is everything between "{" and the first of ",:}". + + + + + Parameter Value extracted from the -array + + + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + + Parameter method that should be used to render the parameter + See also + + + + + Returns index for , when + + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + Parameter CaptureType + + + + Parameters extracted from parsing as MessageTemplate + + + + + + + + + + + Gets the parameters at the given index + + + + + Number of parameters + + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Indicates whether the template was parsed successful, and there are no unmatched parameters + + + + + Constructor for parsing the message template with parameters + + including any parameter placeholders + All + + + + Constructor for named parameters that already has been parsed + + + + + Create MessageTemplateParameter from + + + + + A message template + + + + The original template string. + This is the key passed to structured targets. + + + The list of literal parts, useful for string rendering. + It indicates the number of characters from the original string to print, + then there's a hole with how many chars to skip. + + "Hello {firstName} {lastName}!" + ------------------------------------- + ║P |S ║P|S ║P|S║ + ║6 |11 ║1|10 ║1|0║ + ║Hello |{firstName}║ |{lastName}║!║ + + "{x} * 2 = {2x}" + -------------------- + ║P|S ║P |S ║ + ║0|3 ║7 |4 ║ + ║{x}║ * 2 = |{2x}║ + + The tricky part is escaped braces. They are represented by a skip = 0, + which is interpreted as "move one char forward, no hole". + + "Escaped }} is fun." + ---------------------- + ║P |S║P |S║ + ║9 |0║8 |0║ + ║Escaped }|}║ is fun.|║ + + + + This list of holes. It's used both to fill the string rendering + and to send values along the template to structured targets. + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Create a template, which is already parsed + + + + + + + + + Create a template, which is already parsed + + + + + + + + This is for testing only: recreates from the parsed data. + + + + This is for testing only: rebuilds the hole + + Add to this string builder + ref for performance + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Gets the current literal/hole in the template + + + + + Clears the enumerator + + + + + Restarts the enumerator of the template + + + + + Moves to the next literal/hole in the template + + Found new element [true/false] + + + + Parse format after hole name/index. Handle the escaped { and } in the format. Don't read the last } + + + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Error when parsing a template. + + + + + Current index when the error occurred. + + + + + The template we were parsing + + + + + New exception + + The message to be shown. + Current index when the error occurred. + + + + + Render templates + + + + + Render a template to a string. + + The template. + Culture. + Parameters for the holes. + Do not fallback to StringBuilder.Format for positional templates. + The String Builder destination. + Parameters for the holes. + + + + Render a template to a string. + + The template. + The String Builder destination. + Culture. + Parameters for the holes. + Rendered template, never null. + + + + Convert Render or serialize a value, with optionally backwards-compatible with + + + + Singleton + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Format an object to a readable string, or if it's an object, serialize + + The value to convert + + + + + + + + Try serializing a scalar (string, int, NULL) or simple type (IFormattable) + + + + + Serialize Dictionary as JSON like structure, without { and } + + + "FirstOrder"=true, "Previous login"=20-12-2017 14:55:32, "number of tries"=1 + + + formatstring of an item + + + + + + + + + Convert a value to a string with format and append to . + + The value to convert. + Format sting for the value. + Format provider for the value. + Append to this + + + + Nested Diagnostics Context + + This class marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top object off the NDC stack. The object is removed from the stack. + + The top object from the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all objects on the NDC stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Nested Diagnostics Context - a thread-local structure that keeps a stack + of strings and provides methods to output them in layouts + + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object at the top of the NDC stack if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified object on current thread NDC. + + The object to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top message from the NDC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top object off the NDC stack. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Peeks the first object on the NDC stack + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. + + Array of objects on the stack. + + + + Resets the stack to the original count during . + + + + + Initializes a new instance of the class. + + The stack. + The previous count. + + + + Reverts the stack to original item count. + + + + + Async version of - a logical context structure that keeps a stack + Allows for maintaining scope across asynchronous tasks and call contexts. + + + + + Pushes the specified value on current stack + + The value to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified value on current stack + + The value to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDLC stack. + + The top message which is no longer on the stack. + this methods returns a object instead of string, this because of backwards-compatibility + + + + Pops the top message from the NDLC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top message off the current NDLC stack + + The object from the top of the NDLC stack, if defined; otherwise null. + + + + Peeks the top object on the current NDLC stack + + The object from the top of the NDLC stack, if defined; otherwise null. + + + + Peeks the current scope, and returns its start time + + Scope Creation Time + + + + Peeks the first scope, and returns its start time + + Scope Creation Time + + + + Clears current stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Exception thrown during NLog configuration. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The inner exception. + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Exception thrown during log event processing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + TraceListener which routes all messages through NLog. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the log factory to use when outputting messages (null - use LogManager). + + + + + Gets or sets the default log level. + + + + + Gets or sets the log which should be always used regardless of source level. + + + + + Gets or sets a value indicating whether flush calls from trace sources should be ignored. + + + + + Gets a value indicating whether the trace listener is thread safe. + + + true if the trace listener is thread safe; otherwise, false. The default is false. + + + + Gets or sets a value indicating whether to use auto logger name detected from the stack trace. + + + + + When overridden in a derived class, writes the specified message to the listener you create in the derived class. + + A message to write. + + + + When overridden in a derived class, writes a message to the listener you create in the derived class, followed by a line terminator. + + A message to write. + + + + When overridden in a derived class, closes the output stream so it no longer receives tracing or debugging output. + + + + + Emits an error message. + + A message to emit. + + + + Emits an error message and a detailed error message. + + A message to emit. + A detailed message to emit. + + + + Flushes the output (if is not true) buffer with the default timeout of 15 seconds. + + + + + Writes trace information, a data object and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + The trace data to emit. + + + + Writes trace information, an array of data objects and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + An array of objects to emit as data. + + + + Writes trace and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + + + + Writes trace information, a formatted array of objects and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + A format string that contains zero or more format items, which correspond to objects in the array. + An object array containing zero or more objects to format. + + + + Writes trace information, a message, and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + A message to write. + + + + Writes trace information, a message, a related activity identity and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + A numeric identifier for the event. + A message to write. + A object identifying a related activity. + + + + Gets the custom attributes supported by the trace listener. + + + A string array naming the custom attributes supported by the trace listener, or null if there are no custom attributes. + + + + + Translates the event type to level from . + + Type of the event. + Translated log level. + + + + Process the log event + The log level. + The name of the logger. + The log message. + The log parameters. + The event id. + The event type. + The related activity id. + + + + + It works as a normal but it discards all messages which an application requests + to be logged. + + It effectively implements the "Null Object" pattern for objects. + + + + + Initializes a new instance of . + + The factory class to be used for the creation of this logger. + + + + Extension methods to setup LogFactory options + + + + + Gets the logger with the full name of the current class, so namespace and class name. + + + + + Gets the specified named logger. + + + + + Configures loading of NLog extensions for Targets and LayoutRenderers + + + + + Configures the output of NLog for diagnostics / troubleshooting + + + + + Configures serialization and transformation of LogEvents + + + + + Loads NLog config created by the method + + + + + Loads NLog config provided in + + + + + Loads NLog config from filename if provided, else fallback to scanning for NLog.config + + + + + Loads NLog config from XML in + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Enable/disables autoloading of NLog extensions by scanning and loading available assemblies + + + Enabled by default, and gives a huge performance hit during startup. Recommended to disable this when running in the cloud. + + + + + Registers NLog extensions from the assembly. + + + + + Registers NLog extensions from the assembly type name + + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + MethodInfo extracted by reflection - typeof(MyClass).GetMethod("MyFunc", BindingFlags.Static). + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + Lambda method. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + Lambda method. + + + + Extension methods to setup NLog options + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Overrides the active with a new custom implementation + + + + + Overrides the active with a new custom implementation + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Specifies the way archive numbering is performed. + + + + + Sequence style numbering. The most recent archive has the highest number. + + + + + Rolling style numbering (the most recent is always #0 then #1, ..., #N. + + + + + Date style numbering. Archives will be stamped with the prior period + (Year, Month, Day, Hour, Minute) datetime. + + + + + Date and sequence style numbering. + Archives will be stamped with the prior period (Year, Month, Day) datetime. + The most recent archive has the highest number (in combination with the date). + + + + + Sends log messages to the remote instance of Chainsaw application from log4j. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a name. + + Name of the target. + + + + Color formatting for using ANSI Color Codes + + + + + Not using bold to get light colors, as it has to be cleared + + + + + Not using bold to get light colors, as it has to be cleared (And because it only works for text, and not background) + + + + + Resets both foreground and background color. + + + + + ANSI have 8 color-codes (30-37) by default. The "bright" (or "intense") color-codes (90-97) are extended values not supported by all terminals + + + + + Color formatting for using + and + + + + + Writes log messages to the console with customizable coloring. + + Documentation on NLog Wiki + + + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default.In multithreaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether the error stream (stderr) should be used instead of the output stream (stdout). + + + + + + Gets or sets a value indicating whether to use default row highlighting rules. + + + The default rules are: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConditionForeground ColorBackground Color
level == LogLevel.FatalRedNoChange
level == LogLevel.ErrorYellowNoChange
level == LogLevel.WarnMagentaNoChange
level == LogLevel.InfoWhiteNoChange
level == LogLevel.DebugGrayNoChange
level == LogLevel.TraceDarkGrayNoChange
+
+ +
+ + + The encoding for writing messages to the . + + Has side effect + + + + + Gets or sets a value indicating whether to auto-check if the console is available. + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-check if the console has been redirected to file + - Disables coloring logic when System.Console.IsOutputRedirected = true + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + + Enables output using ANSI Color Codes + + + + + + Gets the row highlighting rules. + + + + + + Gets the word highlighting rules. + + + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified log event to the console highlighting entries + and words based on a set of defined rules. + + Log event. + + + + Colored console output color. + + + Note that this enumeration is defined to be binary compatible with + .NET 2.0 System.ConsoleColor + some additions + + + + + Black Color (#000000). + + + + + Dark blue Color (#000080). + + + + + Dark green Color (#008000). + + + + + Dark Cyan Color (#008080). + + + + + Dark Red Color (#800000). + + + + + Dark Magenta Color (#800080). + + + + + Dark Yellow Color (#808000). + + + + + Gray Color (#C0C0C0). + + + + + Dark Gray Color (#808080). + + + + + Blue Color (#0000FF). + + + + + Green Color (#00FF00). + + + + + Cyan Color (#00FFFF). + + + + + Red Color (#FF0000). + + + + + Magenta Color (#FF00FF). + + + + + Yellow Color (#FFFF00). + + + + + White Color (#FFFFFF). + + + + + Don't change the color. + + + + + The row-highlighting condition. + + + + + Initializes static members of the ConsoleRowHighlightingRule class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The condition. + Color of the foreground. + Color of the background. + + + + Gets the default highlighting rule. Doesn't change the color. + + + + + Gets or sets the condition that must be met in order to set the specified foreground and background color. + + + + + + Gets or sets the foreground color. + + + + + + Gets or sets the background color. + + + + + + Checks whether the specified log event matches the condition (if any). + + + Log event. + + + A value of if the condition is not defined or + if it matches, otherwise. + + + + + Writes log messages to the console. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default. In multi threaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Gets or sets a value indicating whether to send the log messages to the standard error instead of the standard output. + + + + + + The encoding for writing messages to the . + + Has side effect + + + + + Gets or sets a value indicating whether to auto-check if the console is available + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + + Gets or sets whether to enable batch writing using char[]-buffers, instead of using + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified logging event to the Console.Out or + Console.Error depending on the value of the Error flag. + + The logging event. + + Note that the Error option is not supported on .NET Compact Framework. + + + + + + + + Write to output + + + + + Highlighting rule for Win32 colorful console. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The text to be matched.. + Color of the foreground. + Color of the background. + + + + Gets or sets the regular expression to be matched. You must specify either text or regex. + + + + + + Gets or sets the condition that must be met before scanning the row for highlight of words + + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets the text to be matched. You must specify either text or regex. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Gets or sets the foreground color. + + + + + + Gets or sets the background color. + + + + + + Gets the compiled regular expression that matches either Text or Regex property. Only used when is true. + + + + + Information about database command + parameters. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the type of the command. + + The type of the command. + + + + + Gets or sets the connection string to run the command against. If not provided, connection string from the target is used. + + + + + + Gets or sets the command text. + + + + + + Gets or sets a value indicating whether to ignore failures. + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a database named or positional parameter. + + + + + + Information about object-property for the database-connection-object + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name for the object-property + + + + + + Gets or sets the value to assign on the object-property + + + + + + Gets or sets the type of the object-property + + + + + + Gets or sets convert format of the property value + + + + + + Gets or sets the culture used for parsing property string-value for type-conversion + + + + + + Represents a parameter to a Database target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the parameter. + The parameter layout. + + + + Gets or sets the database parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets the database parameter DbType. + + + + + + Gets or sets the database parameter size. + + + + + + Gets or sets the database parameter precision. + + + + + + Gets or sets the database parameter scale. + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets convert format of the database parameter value. + + + + + + Gets or sets the culture used for parsing parameter string-value for type-conversion + + + + + + Writes log messages to the database using an ADO.NET provider. + + + - NETSTANDARD cannot load connectionstrings from .config + + Documentation on NLog Wiki + + + The configuration is dependent on the database type, because + there are different methods of specifying connection string, SQL + command and command parameters. + + MS SQL Server using System.Data.SqlClient: + + Oracle using System.Data.OracleClient: + + Oracle using System.Data.OleDBClient: + + To set up the log target programmatically use code like this (an equivalent of MSSQL configuration): + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets the name of the database provider. + + + + The parameter name should be a provider invariant name as registered in machine.config or app.config. Common values are: + +
    +
  • System.Data.SqlClient - SQL Sever Client
  • +
  • System.Data.SqlServerCe.3.5 - SQL Sever Compact 3.5
  • +
  • System.Data.OracleClient - Oracle Client from Microsoft (deprecated in .NET Framework 4)
  • +
  • Oracle.DataAccess.Client - ODP.NET provider from Oracle
  • +
  • System.Data.SQLite - System.Data.SQLite driver for SQLite
  • +
  • Npgsql - Npgsql driver for PostgreSQL
  • +
  • MySql.Data.MySqlClient - MySQL Connector/Net
  • +
+ (Note that provider invariant names are not supported on .NET Compact Framework). + + Alternatively the parameter value can be be a fully qualified name of the provider + connection type (class implementing ) or one of the following tokens: + +
    +
  • sqlserver, mssql, microsoft or msde - SQL Server Data Provider
  • +
  • oledb - OLEDB Data Provider
  • +
  • odbc - ODBC Data Provider
  • +
+
+ +
+ + + Gets or sets the name of the connection string (as specified in <connectionStrings> configuration section. + + + + + + Gets or sets the connection string. When provided, it overrides the values + specified in DBHost, DBUserName, DBPassword, DBDatabase. + + + + + + Gets or sets the connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used. + + + + + + Gets the installation DDL commands. + + + + + + Gets the uninstallation DDL commands. + + + + + + Gets or sets a value indicating whether to keep the + database connection open between the log events. + + + + + + Obsolete - value will be ignored! The logging code always runs outside of transaction. + + Gets or sets a value indicating whether to use database transactions. + Some data providers require this. + + + + This option was removed in NLog 4.0 because the logging code always runs outside of transaction. + This ensures that the log gets written to the database if you rollback the main transaction because of an error and want to log the error. + + + + + Gets or sets the database host name. If the ConnectionString is not provided + this value will be used to construct the "Server=" part of the + connection string. + + + + + + Gets or sets the database user name. If the ConnectionString is not provided + this value will be used to construct the "User ID=" part of the + connection string. + + + + + + Gets or sets the database password. If the ConnectionString is not provided + this value will be used to construct the "Password=" part of the + connection string. + + + + + + Gets or sets the database name. If the ConnectionString is not provided + this value will be used to construct the "Database=" part of the + connection string. + + + + + + Gets or sets the text of the SQL command to be run on each log level. + + + Typically this is a SQL INSERT statement or a stored procedure call. + It should use the database-specific parameters (marked as @parameter + for SQL server or :parameter for Oracle, other data providers + have their own notation) and not the layout renderers, + because the latter is prone to SQL injection attacks. + The layout renderers should be specified as <parameter /> elements instead. + + + + + + Gets or sets the type of the SQL command to be run on each log level. + + + This specifies how the command text is interpreted, as "Text" (default) or as "StoredProcedure". + When using the value StoredProcedure, the commandText-property would + normally be the name of the stored procedure. TableDirect method is not supported in this context. + + + + + + Gets the collection of parameters. Each item contains a mapping + between NLog layout and a database named or positional parameter. + + + + + + Gets the collection of properties. Each item contains a mapping + between NLog layout and a property on the DbConnection instance + + + + + + Gets the collection of properties. Each item contains a mapping + between NLog layout and a property on the DbCommand instance + + + + + + Configures isolated transaction batch writing. If supported by the database, then it will improve insert performance. + + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Set the to use it for opening connections to the database. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the database. It creates + a new database command, prepares parameters for it by calculating + layouts and executes the command. + + The logging event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Write logEvent to database + + + + + Build the connectionstring from the properties. + + + Using at first, and falls back to the properties , + , and + + Event to render the layout inside the properties. + + + + + Escape quotes and semicolons. + See https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms722656(v=vs.85)#setting-values-that-use-reserved-characters + + + + + Create database parameter + + Current command. + Parameter configuration info. + + + + Extract parameter value from the logevent + + Current logevent. + Parameter configuration info. + + + + Create Default Value of Type + + + + + + + A descriptor for an archive created with the DateAndSequence numbering mode. + + + + + The full name of the archive file. + + + + + The parsed date contained in the file name. + + + + + The parsed sequence number contained in the file name. + + + + + Determines whether produces the same string as the current instance's date once formatted with the current instance's date format. + + The date to compare the current object's date to. + True if the formatted dates are equal, otherwise False. + + + + Initializes a new instance of the class. + + + + + Writes log messages to the attached managed debugger. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the attached debugger. + + The logging event. + + + + Mock target - useful for testing. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + Increases the number of messages. + + The logging event. + + + + Default class for serialization of values to JSON format. + + + + + Singleton instance of the serializer. + + + + + Private. Use + + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + Serialized value. + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + serialisation options + Serialized value. + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + The objects in path (Avoid cyclic reference loop). + The current depth (level) of recursion. + Object serialized successfully (true/false). + + + + No quotes needed for this type? + + + + + Checks the object if it is numeric + + TypeCode for the object + Accept fractional types as numeric type. + + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + all options + JSON escaped string + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + Should non-ascii characters be encoded + + JSON escaped string + + + + Writes log message to the Event Log. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Max size in characters (limitation of the EventLog API). + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Initializes a new instance of the class. + + . to be used as Source. + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the machine on which Event Log service is running. + + + + + + Gets or sets the layout that renders event ID. + + + + + + Gets or sets the layout that renders event Category. + + + + + + Optional entry type. When not set, or when not convertible to then determined by + + + + + + Gets or sets the value to be used as the event Source. + + + By default this is the friendly name of the current AppDomain. + + + + + + Gets or sets the name of the Event Log to write to. This can be System, Application or any user-defined name. + + + + + + Gets or sets the message length limit to write to the Event Log. + + MaxMessageLength cannot be zero or negative + + + + + Gets or sets the maximum Event log size in kilobytes. + + + MaxKilobytes cannot be less than 64 or greater than 4194240 or not a multiple of 64. + If null, the value will not be specified while creating the Event log. + + + + + + Gets or sets the action to take if the message is larger than the option. + + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Initializes the target. + + + + + Writes the specified logging event to the event log. + + The logging event. + + + + Get the entry type for logging the message. + + The logging event - for rendering the + + + + Get the source, if and only if the source is fixed. + + null when not + Internal for unit tests + + + + (re-)create an event source, if it isn't there. Works only with fixed source names. + + The source name. If source is not fixed (see , then pass null or . + always throw an Exception when there is an error + + + + A wrapper for Windows event log. + + + + + A wrapper for the property . + + + + + A wrapper for the property . + + + + + A wrapper for the property . + + + + + A wrapper for the property . + + + + + Indicates whether an event log instance is associated. + + + + + A wrapper for the method . + + + + + Creates a new association with an instance of the event log. + + + + + A wrapper for the static method . + + + + + A wrapper for the static method . + + + + + A wrapper for the static method . + + + + + A wrapper for the static method . + + + + + The implementation of , that uses Windows . + + + + + + + + + + + + + + + + + + + + + + + + Creates a new association with an instance of Windows . + + + + + + + + + + + + + + + + + Action that should be taken if the message is greater than + the max message size allowed by the Event Log. + + + + + Truncate the message before writing to the Event Log. + + + + + Split the message and write multiple entries to the Event Log. + + + + + Discard of the message. It will not be written to the Event Log. + + + + + Check if cleanup should be performed on initialize new file + + Skip cleanup when initializing new file, just after having performed archive operation + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Characters determining the start of the . + + + + + Characters determining the end of the . + + + + + File name which is used as template for matching and replacements. + It is expected to contain a pattern to match. + + + + + The begging position of the + within the . -1 is returned + when no pattern can be found. + + + + + The ending position of the + within the . -1 is returned + when no pattern can be found. + + + + + Replace the pattern with the specified String. + + + + + + + Archives the log-files using a date style numbering. Archives will be stamped with the + prior period (Year, Month, Day, Hour, Minute) datetime. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Archives the log-files using a date and sequence style numbering. Archives will be stamped + with the prior period (Year, Month, Day) datetime. The most recent archive has the highest number (in + combination with the date). + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Parse filename with date and sequence pattern + + + dateformat for archive + + the found pattern. When failed, then default + the found pattern. When failed, then default + + + + + Archives the log-files using the provided base-archive-filename. If the base-archive-filename causes + duplicate archive filenames, then sequence-style is automatically enforced. + + Example: + Base Filename trace.log + Next Filename trace.0.log + + The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Dynamically converts a non-template archiveFilePath into a correct archiveFilePattern. + Before called the original IFileArchiveMode, that has been wrapped by this + + + + + Determines if the file name as contains a numeric pattern i.e. {#} in it. + + Example: + trace{#}.log Contains the numeric pattern. + trace{###}.log Contains the numeric pattern. + trace{#X#}.log Contains the numeric pattern (See remarks). + trace.log Does not contain the pattern. + + Occasionally, this method can identify the existence of the {#} pattern incorrectly. + File name to be checked. + when the pattern is found; otherwise. + + + + Archives the log-files using a rolling style numbering (the most recent is always #0 then + #1, ..., #N. + + When the number of archive files exceed the obsolete archives + are deleted. + + + + + Replaces the numeric pattern i.e. {#} in a file name with the parameter value. + + File name which contains the numeric pattern. + Value which will replace the numeric pattern. + File name with the value of in the position of the numeric pattern. + + + + Archives the log-files using a sequence style numbering. The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Modes of archiving files based on time. + + + + + Don't archive based on time. + + + + + AddToArchive every year. + + + + + AddToArchive every month. + + + + + AddToArchive daily. + + + + + AddToArchive every hour. + + + + + AddToArchive every minute. + + + + + AddToArchive every Sunday. + + + + + AddToArchive every Monday. + + + + + AddToArchive every Tuesday. + + + + + AddToArchive every Wednesday. + + + + + AddToArchive every Thursday. + + + + + AddToArchive every Friday. + + + + + AddToArchive every Saturday. + + + + + Type of filepath + + + + + Detect of relative or absolute + + + + + Relative path + + + + + Absolute path + + Best for performance + + + + Writes log messages to one or more files. + + Documentation on NLog Wiki + + + + Default clean up period of the initialized files. When a file exceeds the clean up period is removed from the list. + + Clean up period is defined in days. + + + + The maximum number of initialized files before clean up procedures are initiated, + to keep the number of initialized files to a minimum. Chose 25 to cater for monthly rolling of log-files. + + + + + This value disables file archiving based on the size. + + + + + Holds the initialized files each given time by the instance. Against each file, the last write time is stored. + + Last write time is store in local time (no UTC). + + + + List of the associated file appenders with the instance. + + + + + The number of initialized files at any one time. + + + + + The maximum number of archive files that should be kept. + + + + + The maximum days of archive files that should be kept. + + + + + The filename as target + + + + + The archive file name as target + + + + + The date of the previous log event. + + + + + The file name of the previous log event. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the name of the file to write to. + + + This FileName string is a layout which may include instances of layout renderers. + This lets you use a single target to write to multiple files. + + + The following value makes NLog write logging events to files based on the log level in the directory where + the application runs. + ${basedir}/${level}.log + All Debug messages will go to Debug.log, all Info messages will go to Info.log and so on. + You can combine as many of the layout renderers as you want to produce an arbitrary log file name. + + + + + + Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. + If set to false, nothing gets written when the filename is wrong. + + + + + + Is the an absolute or relative path? + + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + + Gets or sets a value indicating whether to delete old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + + + + + + Gets or sets a value indicating whether to replace file contents on each write instead of appending log message at the end. + + + + + + Gets or sets a value indicating whether to keep log file open instead of opening and closing it on each logging event. + + + Setting this property to True helps improve performance. + + + + + + Gets or sets the maximum number of log file names that should be stored as existing. + + + The bigger this number is the longer it will take to write each log record. The smaller the number is + the higher the chance that the clean function will be run when no new files have been opened. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + + Gets or sets the file attributes (Windows only). + + + + + + Gets or sets the line ending mode. + + + + + + Gets or sets a value indicating whether to automatically flush the file buffers after each log message. + + + + + + Gets or sets the number of files to be kept open. Setting this to a higher value may improve performance + in a situation where a single File target is writing to many files + (such as splitting by level or by logger). + + + The files are managed on a LRU (least recently used) basis, which flushes + the files that have not been used for the longest period of time should the + cache become full. As a rule of thumb, you shouldn't set this parameter to + a very high value. A number like 10-15 shouldn't be exceeded, because you'd + be keeping a large number of files open which consumes system resources. + + + + + + Gets or sets the maximum number of seconds that files are kept open. If this number is negative the files are + not automatically closed after a period of inactivity. + + + + + + Gets or sets the maximum number of seconds before open files are flushed. If this number is negative or zero + the files are not flushed by timer. + + + + + + Gets or sets the log file buffer size in bytes. + + + + + + Gets or sets the file encoding. + + + + + + Gets or sets whether or not this target should just discard all data that its asked to write. + Mostly used for when testing NLog Stack except final write + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on different network hosts. + + + This effectively prevents files from being kept open. + + + + + + Gets or sets a value indicating whether to write BOM (byte order mark) in created files + + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + The actual delay is a random value between 0 and the value specified + in this parameter. On each failed attempt the delay base is doubled + up to times. + + + Assuming that ConcurrentWriteAttemptDelay is 10 the time to wait will be:

+ a random value between 0 and 10 milliseconds - 1st attempt
+ a random value between 0 and 20 milliseconds - 2nd attempt
+ a random value between 0 and 40 milliseconds - 3rd attempt
+ a random value between 0 and 80 milliseconds - 4th attempt
+ ...

+ and so on. + + + + +

+ Gets or sets a value indicating whether to archive old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + After archiving the old file, the current log file will be empty. + + +
+ + + Gets or sets a value of the file size threshold to archive old log file on startup. + + + This option won't work if is set to false + Default value is 0 which means that the file is archived as soon as archival on + startup is enabled. + + + + + + Gets or sets a value specifying the date format to use when archiving files. + + + This option works only when the "ArchiveNumbering" parameter is set either to Date or DateAndSequence. + + + + + + Gets or sets the size in bytes above which log files will be automatically archived. + + Warning: combining this with isn't supported. We cannot create multiple archive files, if they should have the same name. + Choose: + + + Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. + + + + + + Gets or sets a value indicating whether to automatically archive log files every time the specified time passes. + + + Files are moved to the archive as part of the write operation if the current period of time changes. For example + if the current hour changes from 10 to 11, the first write that will occur + on or after 11:00 will trigger the archiving. +

+ Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. +

+
+ +
+ + + Is the an absolute or relative path? + + + + + + Gets or sets the name of the file to be used for an archive. + + + It may contain a special placeholder {#####} + that will be replaced with a sequence of numbers depending on + the archiving strategy. The number of hash characters used determines + the number of numerical digits to be used for numbering files. + + + + + + Gets or sets the maximum number of archive files that should be kept. + + + + + + Gets or sets the maximum days of archive files that should be kept. + + + + + + Gets or sets the way file archives are numbered. + + + + + + Used to compress log files during archiving. + This may be used to provide your own implementation of a zip file compressor, + on platforms other than .Net4.5. + Defaults to ZipArchiveFileCompressor on .Net4.5 and to null otherwise. + + + + + + Gets or sets a value indicating whether to compress archive files into the zip archive format. + + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + + Gets or sets a value indicating whether file creation calls should be synchronized by a system global mutex. + + + + + + Gets or sets a value indicating whether the footer should be written only when the file is archived. + + + + + + Gets the characters that are appended after each line. + + + + + Refresh the ArchiveFilePatternToWatch option of the . + The log file must be watched for archiving when multiple processes are writing to the same + open file. + + + + + Removes records of initialized files that have not been + accessed in the last two days. + + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Removes records of initialized files that have not been + accessed after the specified date. + + The cleanup threshold. + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Flushes all pending file operations. + + The asynchronous continuation. + + The timeout parameter is ignored, because file APIs don't provide + the needed functionality. + + + + + Returns the suitable appender factory ( ) to be used to generate the file + appenders associated with the instance. + + The type of the file appender factory returned depends on the values of various properties. + + suitable for this instance. + + + + Initializes file logging by creating data structures that + enable efficient multi-file logging. + + + + + Closes the file(s) opened for writing. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Get full filename (=absolute) and cleaned if needed. + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes the specified array of logging events to a file specified in the FileName + parameter. + + An array of objects. + + This function makes use of the fact that the events are batched by sorting + the requests by filename. This optimizes the number of open/close calls + and can help improve performance. + + + + + Returns estimated size for memory stream, based on events count and first event size in bytes. + + Count of events + Bytes count of first event + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Gets the bytes to be written to the file. + + Log event. + Array of bytes that are ready to be written. + + + + Modifies the specified byte array before it gets sent to a file. + + The byte array. + The modified byte array. The function can do the modification in-place. + + + + Gets the bytes to be written to the file. + + The log event to be formatted. + to help format log event. + Optional temporary char-array to help format log event. + Destination for the encoded result. + + + + Formats the log event for write. + + The log event to be formatted. + for the result. + + + + Modifies the specified byte array before it gets sent to a file. + + The LogEvent being written + The byte array. + + + + Archives fileName to archiveFileName. + + File name to be archived. + Name of the archive file. + + + + Gets the correct formatting to be used based on the value of for converting values which will be inserting into file + names during archiving. + + This value will be computed only when a empty value or is passed into + + Date format to used irrespectively of value. + Formatting for dates. + + + + Calculate the DateTime of the requested day of the week. + + The DateTime of the previous log event. + The next occuring day of the week to return a DateTime for. + The DateTime of the next occuring dayOfWeek. + For example: if previousLogEventTimestamp is Thursday 2017-03-02 and dayOfWeek is Sunday, this will return + Sunday 2017-03-05. If dayOfWeek is Thursday, this will return *next* Thursday 2017-03-09. + + + + Invokes the archiving process after determining when and which type of archiving is required. + + File name to be checked and archived. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + + + + Gets the pattern that archive files will match + + Filename of the log file + Log event that the instance is currently processing. + A string with a pattern that will match the archive file names + + + + Archives the file if it should be archived. + + The file name to check for. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + True when archive operation of the file was completed (by this target or a concurrent target) + + + + Closes any active file-appenders that matches the input filenames. + File-appender is requested to invalidate/close its filehandle, but keeping its archive-mutex alive + + + + + Indicates if the automatic archiving process should be executed. + + File name to be written. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the correct filename to archive + + + + + + Gets the file name for archiving, or null if archiving should not occur based on file size. + + File name to be written. + The size in bytes of the next chunk of data to be written in the file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the file name for archiving, or null if archiving should not occur based on date/time. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Truncates the input-time, so comparison of low resolution times (like dates) are not affected by ticks + + High resolution Time + Time Resolution Level + Truncated Low Resolution Time + + + + Evaluates which parts of a file should be written (header, content, footer) based on various properties of + instance and writes them. + + File name to be written. + Raw sequence of to be written into the content part of the file. + File has just been opened. + + + + Initialise a file to be used by the instance. Based on the number of initialized + files and the values of various instance properties clean up and/or archiving processes can be invoked. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file (DateTime.MinValue if just initialized). + + + + Writes the file footer and finalizes the file in instance internal structures. + + File name to close. + Indicates if the file is being finalized for archiving. + + + + Writes the footer information to a file. + + The file path to write to. + + + + Decision logic whether to archive logfile on startup. + and properties. + + File name to be written. + Decision whether to archive or not. + + + + Invokes the archiving and clean up of older archive file based on the values of + and + properties respectively. + + File name to be written. + Log event that the instance is currently processing. + + + + Creates the file specified in and writes the file content in each entirety i.e. + Header, Content and Footer. + + The name of the file to be written. + Sequence of to be written in the content section of the file. + First attempt to write? + This method is used when the content of the log file is re-written on every write. + + + + Writes the header information and byte order mark to a file. + + File appender associated with the file. + + + + The sequence of to be written in a file after applying any formatting and any + transformations required from the . + + The layout used to render output message. + Sequence of to be written. + Usually it is used to render the header and hooter of the files. + + + + Controls the text and color formatting for + + + + + Creates a TextWriter for the console to start building a colored text message + + Active console stream + Optional StringBuilder to optimize performance + TextWriter for the console + + + + Releases the TextWriter for the console after having built a colored text message (Restores console colors) + + Colored TextWriter + Active console stream + Original foreground color for console (If changed) + Original background color for console (If changed) + Flush TextWriter + + + + Changes foreground color for the Colored TextWriter + + Colored TextWriter + New foreground color for the console + Old previous backgroundColor color for the console + Old foreground color for the console + + + + Changes backgroundColor color for the Colored TextWriter + + Colored TextWriter + New backgroundColor color for the console + Old previous backgroundColor color for the console + Old backgroundColor color for the console + + + + Restores console colors back to their original state + + Colored TextWriter + Original foregroundColor color for the console + Original backgroundColor color for the console + + + + Writes multiple characters to console in one operation (faster) + + Colored TextWriter + Output Text + Start Index + End Index + + + + Writes single character to console + + Colored TextWriter + Output Text + + + + Writes whole string and completes with newline + + Colored TextWriter + Output Text + + + + Default row highlight rules for the console printer + + + + + Check if cleanup should be performed on initialize new file + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Create a wildcard file-mask that allows one to find all files belonging to the same archive. + + Base archive file pattern + Wildcard file-mask + + + + Search directory for all existing files that are part of the same archive. + + Base archive file pattern + + + + + Generate the next archive filename for the archive. + + Base archive file pattern + File date of archive + Existing files in the same archive + + + + + Return all files that should be removed from the provided archive. + + Base archive file pattern + Existing files in the same archive + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + + + + may be configured to compress archived files in a custom way + by setting before logging your first event. + + + + + Create archiveFileName by compressing fileName. + + Absolute path to the log file to compress. + Absolute path to the compressed archive file to create. + + + + Interface for serialization of values, maybe even objects to JSON format. + Useful for wrappers for existing serializers. + + + + + Returns a serialization of an object + into JSON format. + + The object to serialize to JSON. + Serialized value (null = Serialize failed). + + + + Options for JSON serialisation + + + + + Add quotes around object keys? + + + + + Format provider for value + + + + + Format string for value + + + + + Should non-ascii characters be encoded + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + Serialize enum as string value + + + + + Should dictionary keys be sanitized. All characters must either be letters, numbers or underscore character (_). + + Any other characters will be converted to underscore character (_) + + + + + How far down the rabbit hole should the Json Serializer go with object-reflection before stopping + + + + Initializes a new instance of the class. + + + + Line ending mode. + + + + + Insert platform-dependent end-of-line sequence after each line. + + + + + Insert CR LF sequence (ASCII 13, ASCII 10) after each line. + + + + + Insert CR character (ASCII 13) after each line. + + + + + Insert LF character (ASCII 10) after each line. + + + + + Insert null terminator (ASCII 0) after each line. + + + + + Do not insert any line ending. + + + + + Gets the name of the LineEndingMode instance. + + + + + Gets the new line characters (value) of the LineEndingMode instance. + + + + + Initializes a new instance of . + + The mode name. + The new line characters to be used. + + + + Returns the that corresponds to the supplied . + + + The textual representation of the line ending mode, such as CRLF, LF, Default etc. + Name is not case sensitive. + + The value, that corresponds to the . + There is no line ending mode with the specified name. + + + + Compares two objects and returns a + value indicating whether the first one is equal to the second one. + + The first level. + The second level. + The value of mode1.NewLineCharacters == mode2.NewLineCharacters. + + + + Compares two objects and returns a + value indicating whether the first one is not equal to the second one. + + The first mode + The second mode + The value of mode1.NewLineCharacters != mode2.NewLineCharacters. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms + and data structures like a hash table. + + + + + Determines whether the specified is + equal to this instance. + + The to compare with + this instance. + + Value of true if the specified + is equal to this instance; otherwise, false. + + + The parameter is null. + + + + Indicates whether the current object is equal to another object of the same type. + true if the current object is equal to the parameter; otherwise, false. + An object to compare with this object. + + + + Provides a type converter to convert objects to and from other representations. + + + + + Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. + + + true if this converter can perform the conversion; otherwise, false. + + An that provides a format context. A that represents the type you want to convert from. + + + + Converts the given object to the type of this converter, using the specified context and culture information. + + + An that represents the converted value. + + An that provides a format context. The to use as the current culture. The to convert. The conversion cannot be performed. + + + + Sends log messages to a NLog Receiver Service (using WCF or Web Services). + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets the endpoint address. + + The endpoint address. + + + + + Gets or sets the name of the endpoint configuration in WCF configuration file. + + The name of the endpoint configuration. + + + + + Gets or sets a value indicating whether to use binary message encoding. + + + + + + Gets or sets a value indicating whether to use a WCF service contract that is one way (fire and forget) or two way (request-reply) + + + + + + Gets or sets the client ID. + + The client ID. + + + + + Gets the list of parameters. + + The parameters. + + + + + Gets or sets a value indicating whether to include per-event properties in the payload sent to the server. + + + + + + Called when log events are being sent (test hook). + + The events. + The async continuations. + True if events should be sent, false to stop processing them. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Append" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Add value to the , returns ordinal in + + + lookup so only unique items will be added to + value to add + + + + + Creating a new instance of WcfLogReceiverClient + + Inheritors can override this method and provide their own + service configuration - binding and endpoint address + + This method marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Creating a new instance of IWcfLogReceiverClient + + Inheritors can override this method and provide their own + service configuration - binding and endpoint address + + + virtual is used by end users + + + + Sends log messages by email using SMTP protocol. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ Mail target works best when used with BufferingWrapper target + which lets you send multiple log messages in single mail +

+

+ To set up the buffered mail target in the configuration file, + use the following syntax: +

+ +

+ To set up the buffered mail target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets the mailSettings/smtp configuration from app.config in cases when we need those configuration. + E.g when UseSystemNetMailSettings is enabled and we need to read the From attribute from system.net/mailSettings/smtp + + Internal for mocking + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets sender's email address (e.g. joe@domain.com). + + + + + + Gets or sets recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets a value indicating whether to add new lines between log entries. + + A value of true if new lines should be added; otherwise, false. + + + + + Gets or sets the mail subject. + + + + + + Gets or sets mail message body (repeated for each log message send in one mail). + + Alias for the Layout property. + + + + + Gets or sets encoding to be used for sending e-mail. + + + + + + Gets or sets a value indicating whether to send message as HTML instead of plain text. + + + + + + Gets or sets SMTP Server to be used for sending. + + + + + + Gets or sets SMTP Authentication mode. + + + + + + Gets or sets the username used to connect to SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + + Gets or sets the password used to authenticate against SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + + Gets or sets a value indicating whether SSL (secure sockets layer) should be used when communicating with SMTP server. + + . + + + + Gets or sets the port number that SMTP Server is listening on. + + + + + + Gets or sets a value indicating whether the default Settings from System.Net.MailSettings should be used. + + + + + + Specifies how outgoing email messages will be handled. + + + + + + Gets or sets the folder where applications save mail messages to be processed by the local SMTP server. + + + + + + Gets or sets the priority used for sending mails. + + + + + + Gets or sets a value indicating whether NewLine characters in the body should be replaced with
tags. +
+ Only happens when is set to true. + +
+ + + Gets or sets a value indicating the SMTP client timeout. + + Warning: zero is not infinite waiting + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Renders an array logging events. + + Array of logging events. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Create mail and send with SMTP + + event printed in the body of the event + + + + Create buffer for body + + all events + first event for header + last event for footer + + + + + Set properties of + + last event for username/password + client to set properties on + Configure not at , as the properties could have layout renderers. + + + + Handle if it is a virtual directory. + + + + + + + Create key for grouping. Needed for multiple events in one mail message + + event for rendering layouts + string to group on + + + + Append rendered to + + append to this + event for rendering + append if not null + + + + Create the mail message with the addresses, properties and body. + + + + + Render and add the addresses to + + Addresses appended to this list + layout with addresses, ; separated + event for rendering the + added a address? + + + + Writes log messages to an ArrayList in memory for programmatic retrieval. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the list of logs gathered in the . + + + + + Gets or sets the max number of items to have in memory + + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + A parameter to MethodCall. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout to use for parameter value. + + + + Initializes a new instance of the class. + + Name of the parameter. + The layout. + + + + Initializes a new instance of the class. + + The name of the parameter. + The layout. + The type of the parameter. + + + + Gets or sets the name of the parameter. + + + + + + Gets or sets the type of the parameter. Obsolete alias for + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets the class name. + + + + + + Gets or sets the method name. The method must be public and static. + + Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx + e.g. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Initializes a new instance of the class. + + Name of the target. + Method to call on logevent. + + + + Initializes the target. + + + + + Calls the specified Method. + + Method parameters. + The logging event. + + + + Calls the specified Method. + + Method parameters. + + + + The base class for all targets which call methods (local or remote). + Manages parameters and type coercion. + + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + + + + Prepares an array of parameters to be passed based on the logging event and calls DoInvoke(). + + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Sends log messages over the network. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ To print the results, use any application that's able to receive messages over + TCP or UDP. NetCat is + a simple but very powerful command-line tool that can be used for that. This image + demonstrates the NetCat tool receiving log messages from Network target. +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will be very slow. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+

+ There are two specialized versions of the Network target: Chainsaw + and NLogViewer which write to instances of Chainsaw log4j viewer + or NLogViewer application respectively. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6) (not supported on Windows Phone 7.0)
  • +
  • tcp4://host:port - force TCP/IPv4 (not supported on Windows Phone 7.0)
  • +
  • tcp6://host:port - force TCP/IPv6 (not supported on Windows Phone 7.0)
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6, not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp4://host:port - force UDP/IPv4 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp6://host:port - force UDP/IPv6 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • http://host:port/pageName - HTTP using POST verb
  • +
  • https://host:port/pageName - HTTPS using POST verb
  • +
+ For SOAP-based webservice support over HTTP use WebService target. +
+ +
+ + + Gets or sets a value indicating whether to keep connection open whenever possible. + + + + + + Gets or sets a value indicating whether to append newline at the end of log message. + + + + + + Gets or sets the end of line value if a newline is appended at the end of log message . + + + + + + Gets or sets the maximum message size in bytes. + + + + + + Gets or sets the size of the connection cache (number of connections which are kept alive). + + + + + + Gets or sets the maximum current connections. 0 = no maximum. + + + + + + Gets or sets the action that should be taken if the will be more connections than . + + + + + + Gets or sets the maximum queue size. + + + + + + Gets or sets the action that should be taken if the message is larger than + maxMessageSize. + + + + + + Gets or sets the encoding to be used. + + + + + + Get or set the SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Sends the + rendered logging event over the network optionally concatenating it with a newline character. + + The logging event. + + + + Try to remove. + + + + + removed something? + + + + Gets the bytes to be written. + + Log event. + Byte array. + + + + The action to be taken when there are more connections then the max. + + + + + Just allow it. + + + + + Discard the connection item. + + + + + Block until there's more room in the queue. + + + + + Action that should be taken if the message overflows. + + + + + Report an error. + + + + + Split the message into smaller pieces. + + + + + Discard the entire message. + + + + + Represents a parameter to a NLogViewer target. + + + + + Initializes a new instance of the class. + + + + + Gets or sets viewer parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + Sends log messages to the remote instance of NLog Viewer. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include stack contents. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDLC item separator. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets the layout renderer which produces Log4j-compatible XML events. + + + + + Gets or sets the instance of that is used to format log messages. + + + + + + Discards log messages. Used mainly for debugging and benchmarking. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets a value indicating whether to perform layout calculation. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Does nothing. Optionally it calculates the layout text but + discards the results. + + The logging event. + + + + Outputs log messages through the OutputDebugString() Win32 API. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Outputs the rendered logging event through the OutputDebugString() Win32 API. + + The logging event. + + + + Increments specified performance counter on each write. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+ + TODO: + 1. Unable to create a category allowing multiple counter instances (.Net 2.0 API only, probably) + 2. Is there any way of adding new counters without deleting the whole category? + 3. There should be some mechanism of resetting the counter (e.g every day starts from 0), or auto-switching to + another counter instance (with dynamic creation of new instance). This could be done with layouts. + +
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets a value indicating whether performance counter should be automatically created. + + + + + + Gets or sets the name of the performance counter category. + + + + + + Gets or sets the name of the performance counter. + + + + + + Gets or sets the performance counter instance name. + + + + + + Gets or sets the counter help text. + + + + + + Gets or sets the performance counter type. + + + + + + The value by which to increment the counter. + + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Increments the configured performance counter. + + Log event. + + + + Closes the target and releases any unmanaged resources. + + + + + Ensures that the performance counter has been initialized. + + True if the performance counter is operational, false otherwise. + + + + SMTP authentication modes. + + + + + No authentication. + + + + + Basic - username and password. + + + + + NTLM Authentication. + + + + + Represents logging target. + + + + Are all layouts in this target thread-agnostic, if so we don't precalculate the layouts + + + + The Max StackTraceUsage of all the in this Target + + + + + Gets or sets the name of the target. + + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers + Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + Gets the object which can be used to synchronize asynchronous operations that must rely on the . + + + + + Gets the logging configuration this target is part of. + + + + + Gets a value indicating whether the target has been initialized. + + + + + Can be used if has been enabled. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Closes the target. + + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Calls the on each volatile layout + used by this target. + This method won't prerender if all layouts in this target are thread-agnostic. + + + The log event. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Writes the log to the target. + + Log event to write. + + + + Writes the array of log events. + + The log events. + + + + Writes the array of log events. + + The log events. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Closes the target and releases any unmanaged resources. + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Writes async log event to the log target. + + Async Log event to be written out. + + + + Writes a log event to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Log event to be written out. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + NOTE! Obsolete, instead override WriteAsyncThreadSafe(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target, in a thread safe manner. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Writes an array of logging events to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Merges (copies) the event context properties from any event info object stored in + parameters of the given event info object. + + The event info object to perform the merge to. + + + + Renders the event info in layout. + + The layout. + The event info. + String representing log event. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Should the exception be rethrown? + + + Upgrade to private protected when using C# 7.2 + + + + Marks class as a logging target and assigns a name to it. + + This attribute is not required when registering the target in the API. + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets a value indicating whether to the target is a wrapper target (used to generate the target summary documentation page). + + + + + Gets or sets a value indicating whether to the target is a compound target (used to generate the target summary documentation page). + + + + + Attribute details for + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Gets or sets when an empty value should cause the property to be included + + + + + Gets or sets the type of the property. + + + + + Represents target that supports context capture using MDLC, MDC, NDLC and NDC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets or sets a value indicating whether to include contents of the dictionary + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the + + + + + + Gets the array of custom attributes to be passed into the logevent context + + + + + + Constructor + + + + + + + + Check if logevent has properties (or context properties) + + + True if properties should be included + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Dictionary with any context properties for the logEvent (Null if none found) + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Optional prefilled dictionary + Dictionary with any context properties for the logEvent (Null if none found) + + + + Creates combined dictionary of all configured properties for logEvent + + + Dictionary with all collected properties for logEvent + + + + Creates combined dictionary of all configured properties for logEvent + + + Optional prefilled dictionary + Dictionary with all collected properties for logEvent + + + + Generates a new unique name, when duplicate names are detected + + LogEvent that triggered the duplicate name + Duplicate item name + Item Value + Dictionary of context values + New (unique) value (or null to skip value). If the same value is used then the item will be overwritten + + + + Returns the captured snapshot of for the + + + Dictionary with MDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with MDLC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDLC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with GDC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDC key + MDC value + Snapshot of MDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDLC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDLC key + MDLC value + Snapshot of MDLC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDC value + Snapshot of NDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDLC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDLC value + Snapshot of NDLC value + Include object value in snapshot + + + + Take snapshot of a single object value + + Log event + Key Name (null when NDC / NDLC) + Object Value + Snapshot of value + Include object value in snapshot + + + Internal Layout that allows capture of MDC context + + + Internal Layout that allows capture of NDC context + + + Internal Layout that allows capture of MDLC context + + + Internal Layout that allows capture of NDLC context + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the layout used to format log messages. + + + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the text to be rendered. + + + + + + Gets or sets the footer. + + + + + + Gets or sets the header. + + + + + + Gets or sets the layout with header and footer. + + The layout with header and footer. + + + + Sends log messages through System.Diagnostics.Trace. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Always use independent of + + + + + + Forward to (Instead of ) + + + Trace.Fail can have special side-effects, and give fatal exceptions, message dialogs or Environment.FailFast + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Writes the specified logging event to the facility. + + Redirects the log message depending on and . + When is false: + - writes to + - writes to + - writes to + - writes to + - writes to + - writes to + + The logging event. + + + + Web service protocol. + + + + + Use SOAP 1.1 Protocol. + + + + + Use SOAP 1.2 Protocol. + + + + + Use HTTP POST Protocol. + + + + + Use HTTP GET Protocol. + + + + + Do an HTTP POST of a JSON document. + + + + + Do an HTTP POST of an XML document. + + + + + Web Service Proxy Configuration Type + + + + + Default proxy configuration from app.config (System.Net.WebRequest.DefaultWebProxy) + + + Example of how to configure default proxy using app.config + + <system.net> + <defaultProxy enabled = "true" useDefaultCredentials = "true" > + <proxy usesystemdefault = "True" /> + </defaultProxy> + </system.net> + + + + + + Automatic use of proxy with authentication (cached) + + + + + Disables use of proxy (fast) + + + + + Custom proxy address (cached) + + + + + Calls the specified web service on each log message. + + Documentation on NLog Wiki + + The web service must implement a method that accepts a number of string parameters. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

The example web service that works with this example is shown below

+ +
+
+ + + dictionary that maps a concrete implementation + to a specific -value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target + + + + Gets or sets the web service URL. + + + + + + Gets or sets the Web service method name. Only used with Soap. + + + + + + Gets or sets the Web service namespace. Only used with Soap. + + + + + + Gets or sets the protocol to be used when calling web service. + + + + + + Gets or sets the proxy configuration when calling web service + + + + + + Gets or sets the custom proxy address, include port separated by a colon + + + + + + Should we include the BOM (Byte-order-mark) for UTF? Influences the property. + + This will only work for UTF-8. + + + + + + Gets or sets the encoding. + + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Gets or sets the name of the root XML element, + if POST of XML document chosen. + If so, this property must not be null. + (see and ). + + + + + + Gets or sets the (optional) root namespace of the XML document, + if POST of XML document chosen. + (see and ). + + + + + + Gets the array of parameters to be passed. + + + + + + Indicates whether to pre-authenticate the HttpWebRequest (Requires 'Authorization' in parameters) + + + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Invokes the web service method. + + Parameters to be passed. + The logging event. + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Builds the URL to use when calling the web service for a message, depending on the WebServiceProtocol. + + + + + + + Write from input to output. Fix the UTF-8 bom + + + + + + + + + base class for POST formatters, that + implement former PrepareRequest() method, + that creates the content for + the requested kind of HTTP request + + + + + Win32 file attributes. + + + For more information see https://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/createfile.asp. + + + + + Read-only file. + + + + + Hidden file. + + + + + System file. + + + + + File should be archived. + + + + + Device file. + + + + + Normal file. + + + + + File is temporary (should be kept in cache and not + written to disk if possible). + + + + + Sparse file. + + + + + Reparse point. + + + + + Compress file contents. + + + + + File should not be indexed by the content indexing service. + + + + + Encrypted file. + + + + + The system writes through any intermediate cache and goes directly to disk. + + + + + The system opens a file with no system caching. + + + + + Delete file after it is closed. + + + + + A file is accessed according to POSIX rules. + + + + + Asynchronous request queue. + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Gets the number of requests currently in the queue. + + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + Queue was empty before enqueue + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued (-1 means everything). + The array of log events. + + + + Dequeues into a preallocated array, instead of allocating a new one + + Maximum number of items to be dequeued + Preallocated list + + + + Clears the queue. + + + + + Gets or sets the request limit. + + + + + Gets or sets the action to be taken when there's no more room in + the queue and another request is enqueued. + + + + + Notifies about log event that was dropped when set to + + + + + Notifies when queue size is growing over + + + + + Raise event when queued element was dropped because of queue overflow + + Dropped queue item + + + + Raise event when RequestCount overflow + + current requests count + + + + Provides asynchronous, buffered execution of target writes. + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queueing + messages and processing them in a separate thread. You should wrap targets + that spend a non-trivial amount of time in their Write() method with asynchronous + target to speed up logging. +

+

+ Because asynchronous logging is quite a common scenario, NLog supports a + shorthand notation for wrapping all targets with AsyncWrapper. Just add async="true" to + the <targets/> element in the configuration file. +

+ + + ... your targets go here ... + + ]]> +
+ +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of requests in the queue. + The action to be taken when the queue overflows. + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Gets or sets the time in milliseconds to sleep between batches. (1 or less means trigger on new activity) + + + + + + Raise event when Target cannot store LogEvent. + Event arg contains lost LogEvents + + + + + Raises when event queue grow. + Queue can grow when was set to + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the limit of full s to write before yielding into + Performance is better when writing many small batches, than writing a single large batch + + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + + Gets the queue of lazy writer thread requests. + + + + + Schedules a flush of pending events in the queue (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target by starting the lazy writer timer. + + + + + Shuts down the lazy writer timer. + + + + + Starts the lazy writer thread which periodically writes + queued log messages. + + + + + Attempts to start an instant timer-worker-thread which can write + queued log messages. + + Returns true when scheduled a timer-worker-thread + + + + Stops the lazy writer thread. + + + + + Adds the log event to asynchronous queue to be processed by + the lazy writer thread. + + The log event. + + The is called + to ensure that the log event can be processed in another thread. + + + + + Write to queue without locking + + + + + + The action to be taken when the queue overflows. + + + + + Grow the queue. + + + + + Discard the overflowing item. + + + + + Block until there's more room in the queue. + + + + + Causes a flush on a wrapped target if LogEvent satisfies the . + If condition isn't set, flushes on each write. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Gets or sets the condition expression. Log events who meet this condition will cause + a flush on the wrapped target. + + + + + + Delay the flush until the LogEvent has been confirmed as written + + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + The wrapped target. + Name of the target + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes the target. + + + + + Forwards the call to the .Write() + and calls on it if LogEvent satisfies + the flush condition or condition is null. + + Logging event to be written out. + + + + Schedules a flush operation, that triggers when all pending flush operations are completed (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + The action to take when the buffer overflows. + + + + Gets or sets the number of log events to be buffered. + + + + + + Gets or sets the timeout (in milliseconds) after which the contents of buffer will be flushed + if there's no write in the specified period of time. Use -1 to disable timed flushes. + + + + + + Gets or sets a value indicating whether to use sliding timeout. + + + This value determines how the inactivity period is determined. If sliding timeout is enabled, + the inactivity timer is reset after each write, if it is disabled - inactivity timer will + count from the first event written to the buffer. + + + + + + Gets or sets the action to take if the buffer overflows. + + + Setting to will replace the + oldest event with new events without sending events down to the wrapped target, and + setting to will flush the + entire buffer to the wrapped target. + + + + + + Flushes pending events in the buffer (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target. + + + + + Closes the target by flushing pending events in the buffer (if any). + + + + + Adds the specified log event to the buffer and flushes + the buffer in case the buffer gets full. + + The log event. + + + + The action to be taken when the buffer overflows. + + + + + Flush the content of the buffer. + + + + + Discard the oldest item. + + + + + A base class for targets which wrap other (multiple) targets + and provide various forms of target routing. + + + + + Initializes a new instance of the class. + + The targets. + + + + Gets the collection of targets managed by this compound target. + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Writes logging event to the log target. + + Logging event to be written out. + + + + Flush any pending log messages for all wrapped targets. + + The asynchronous continuation. + + + + Provides fallback-on-error. + + Documentation on NLog Wiki + +

This example causes the messages to be written to server1, + and if it fails, messages go to server2.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Gets or sets a value indicating whether to return to the first target after any successful write. + + + + + + + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + The method remembers the last-known-successful target + and starts the iteration from it. + If is set, the method + resets the target to the first target + stored in . + + + + + Filtering rule for . + + + + + Initializes a new instance of the FilteringRule class. + + + + + Initializes a new instance of the FilteringRule class. + + Condition to be tested against all events. + Filter to apply to all log events when the first condition matches any of them. + + + + Gets or sets the condition to be tested. + + + + + + Gets or sets the resulting filter to be applied when the condition matches. + + + + + + Filters log entries based on a condition. + + Documentation on NLog Wiki + +

This example causes the messages not contains the string '1' to be ignored.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The condition. + + + + Initializes a new instance of the class. + + The wrapped target. + The condition. + + + + Gets or sets the condition expression. Log events who meet this condition will be forwarded + to the wrapped target. + + + + + + Gets or sets the filter. Log events who evaluates to will be discarded + + + + + + + + + Checks the condition against the passed log event. + If the condition is met, the log event is forwarded to + the wrapped target. + + Log event. + + + + + + + Impersonates another user for the duration of the write. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Gets or sets username to change context to. + + + + + + Gets or sets the user account password. + + + + + + Gets or sets Windows domain name to change context to. + + + + + + Gets or sets the Logon Type. + + + + + + Gets or sets the type of the logon provider. + + + + + + Gets or sets the required impersonation level. + + + + + + Gets or sets a value indicating whether to revert to the credentials of the process instead of impersonating another user. + + + + + + Initializes the impersonation context. + + + + + Closes the impersonation context. + + + + + Changes the security context, forwards the call to the .Write() + and switches the context back to original. + + The log event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Changes the security context, forwards the call to the .Write() + and switches the context back to original. + + Log events. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Helper class which reverts the given + to its original value as part of . + + + + + Initializes a new instance of the class. + + The windows impersonation context. + + + + Reverts the impersonation context. + + + + + Limits the number of messages written per timespan to the wrapped target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of messages written per interval. + Interval in which the maximum number of messages can be written. + + + + Gets or sets the maximum allowed number of messages written per . + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets or sets the interval in which messages will be written up to the number of messages. + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets the DateTime when the current will be reset. + + + + + + Gets the number of written in the current . + + + + + + Initializes the target and resets the current Interval and . + + + + + Writes log event to the wrapped target if the current is lower than . + If the is already reached, no log event will be written to the wrapped target. + resets when the current is expired. + + Log event to be written out. + + + + Arguments for events. + + + + + + + + Instance of that was dropped by + + + + + Raises by when + queue is full + and set to + By default queue doubles it size. + + + + + Contains items count and new queue size. + + Required queue size + Current queue size + + + + New queue size + + + + + Current requests count + + + + + Logon provider. + + + + + Use the standard logon provider for the system. + + + The default security provider is negotiate, unless you pass NULL for the domain name and the user name + is not in UPN format. In this case, the default provider is NTLM. + NOTE: Windows 2000/NT: The default security provider is NTLM. + + + + + Filters buffered log entries based on a set of conditions that are evaluated on a group of events. + + Documentation on NLog Wiki + + PostFilteringWrapper must be used with some type of buffering target or wrapper, such as + AsyncTargetWrapper, BufferingWrapper or ASPNetBufferingWrapper. + + +

+ This example works like this. If there are no Warn,Error or Fatal messages in the buffer + only Info messages are written to the file, but if there are any warnings or errors, + the output includes detailed trace (levels >= Debug). You can plug in a different type + of buffering wrapper (such as ASPNetBufferingWrapper) to achieve different + functionality. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Gets or sets the default filter to be applied when no specific rule matches. + + + + + + Gets the collection of filtering rules. The rules are processed top-down + and the first rule that matches determines the filtering condition to + be applied to log events. + + + + + + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Evaluates all filtering rules to find the first one that matches. + The matching rule determines the filtering condition to be applied + to all items in a buffer. If no condition matches, default filter + is applied to the array of log events. + + Array of log events to be post-filtered. + + + + Evaluate all the rules to get the filtering condition + + + + + + + Sends log messages to a randomly selected target. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt + chosen randomly on a per-message basis. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the log event to one of the sub-targets. + The sub-target is randomly chosen. + + The log event. + + + + Repeats each log event the specified number of times. + + Documentation on NLog Wiki + +

This example causes each log message to be repeated 3 times.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The repeat count. + + + + Initializes a new instance of the class. + + The wrapped target. + The repeat count. + + + + Gets or sets the number of times to repeat each log message. + + + + + + Forwards the log message to the by calling the method times. + + The log event. + + + + Retries in case of write error. + + Documentation on NLog Wiki + +

This example causes each write attempt to be repeated 3 times, + sleeping 1 second between attempts if first one fails.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Initializes a new instance of the class. + + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Gets or sets the number of retries that should be attempted on the wrapped target in case of a failure. + + + + + + Gets or sets the time to wait between retries in milliseconds. + + + + + + Special SyncObject to allow closing down Target while busy retrying + + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Writes the specified log event to the wrapped target in a thread-safe manner. + + The log event. + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Distributes log events to targets in a round-robin fashion. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt. + Each odd message is written to file2.txt, each even message goes to file1.txt. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Ensures forwarding happens without holding lock + + + + + + Forwards the write to one of the targets from + the collection. + + The log event. + + The writes are routed in a round-robin fashion. + The first log event goes to the first target, the second + one goes to the second target and so on looping to the + first target when there are no more targets available. + In general request N goes to Targets[N % Targets.Count]. + + + + + Impersonation level. + + + + + Anonymous Level. + + + + + Identification Level. + + + + + Impersonation Level. + + + + + Delegation Level. + + + + + Logon type. + + + + + Interactive Logon. + + + This logon type is intended for users who will be interactively using the computer, such as a user being logged on + by a terminal server, remote shell, or similar process. + This logon type has the additional expense of caching logon information for disconnected operations; + therefore, it is inappropriate for some client/server applications, + such as a mail server. + + + + + Network Logon. + + + This logon type is intended for high performance servers to authenticate plaintext passwords. + The LogonUser function does not cache credentials for this logon type. + + + + + Batch Logon. + + + This logon type is intended for batch servers, where processes may be executing on behalf of a user without + their direct intervention. This type is also for higher performance servers that process many plaintext + authentication attempts at a time, such as mail or Web servers. + The LogonUser function does not cache credentials for this logon type. + + + + + Logon as a Service. + + + Indicates a service-type logon. The account provided must have the service privilege enabled. + + + + + Network Clear Text Logon. + + + This logon type preserves the name and password in the authentication package, which allows the server to make + connections to other network servers while impersonating the client. A server can accept plaintext credentials + from a client, call LogonUser, verify that the user can access the system across the network, and still + communicate with other servers. + NOTE: Windows NT: This value is not supported. + + + + + New Network Credentials. + + + This logon type allows the caller to clone its current token and specify new credentials for outbound connections. + The new logon session has the same local identifier but uses different credentials for other network connections. + NOTE: This logon type is supported only by the LOGON32_PROVIDER_WINNT50 logon provider. + NOTE: Windows NT: This value is not supported. + + + + + Writes log events to all targets. + + Documentation on NLog Wiki + +

This example causes the messages to be written to both file1.txt or file2.txt +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the specified log event to all sub-targets. + + The log event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Base class for targets wrap other (single) targets. + + + + + Gets or sets the target that is wrapped by this target. + + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Current local time retrieved directly from DateTime.Now. + + + + + Gets current local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Current UTC time retrieved directly from DateTime.UtcNow. + + + + + Gets current UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Fast time source that updates current time only once per tick (15.6 milliseconds). + + + + + Gets raw uncached time from derived time source. + + + + + Gets current time cached for one system tick (15.6 milliseconds). + + + + + Fast local time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Fast UTC time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Defines source of current time. + + + + + Gets current time. + + + + + Gets or sets current global time source used in all log events. + + + Default time source is . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to the same form + as time values originated from this source. + + + + There are situations when NLog have to compare the time originated from TimeSource + to the time originated externally in the system. + To be able to provide meaningful result of such comparisons the system time must be expressed in + the same form as TimeSource time. + + + Examples: + - If the TimeSource provides time values of local time, it should also convert the provided + to the local time. + - If the TimeSource shifts or skews its time values, it should also apply + the same transform to the given . + + + + + + Marks class as a time source and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the time source. + + + diff --git a/packages/NLog.4.7.2/lib/net40-client/NLog.dll b/packages/NLog.4.7.2/lib/net40-client/NLog.dll new file mode 100644 index 0000000000000000000000000000000000000000..77f59c78c162aae5a6d3c9cf75e4bc1a9cc59742 GIT binary patch literal 858624 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

b3xN0C;N*PzQjw#Q=2x zczX;`$GhF>TL6sL*G{<8?^2gP!66W{RvGS|XiHrMD9FOvJ7Oy80PxNjpbpim6VWUA zx#m?OAeo4$A7@jkv3WvLv!b;K;kd|?&!DNeEv&f?*o06?sks5$`9eX;;`0QhhWPzQjI!~k{dbf>=nz#cC(UlZMYIp3_C4}MN| znjc04>|vE@@#aTF9Nz$8Mk0tB+!j+(2Y`>p0CfQPSPW1H04XMkDrF>ZDIj@&Dn?WX zfKSH&bpZHG3{VGv&&B|CsLriHC(e_0dHQn%j@O4KT)S8QrED)BFU$y3�@5LSxzE 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

Am%TY3ja)uQt|Cr0&P~ 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

hAN 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 literal 0 HcmV?d00001 diff --git a/packages/NLog.4.7.2/lib/net40-client/NLog.xml b/packages/NLog.4.7.2/lib/net40-client/NLog.xml new file mode 100644 index 0000000..7230024 --- /dev/null +++ b/packages/NLog.4.7.2/lib/net40-client/NLog.xml @@ -0,0 +1,29391 @@ + + + + NLog + + + + + Indicates that the value of the marked element could be null sometimes, + so the check for null is necessary before its usage. + + + [CanBeNull] object Test() => null; + + void UseTest() { + var p = Test(); + var s = p.ToString(); // Warning: Possible 'System.NullReferenceException' + } + + + + + Indicates that the value of the marked element could never be null. + + + [NotNull] object Foo() { + return null; // Warning: Possible 'null' assignment + } + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can never be null. + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can be null. + + + + + Indicates that the marked method builds string by format pattern and (optional) arguments. + Parameter, which contains format string, should be given in constructor. The format string + should be in -like form. + + + [StringFormatMethod("message")] + void ShowError(string message, params object[] args) { /* do something */ } + + void Foo() { + ShowError("Failed: {0}"); // Warning: Non-existing argument in format string + } + + + + + Specifies which parameter of an annotated method should be treated as format-string + + + + + For a parameter that is expected to be one of the limited set of values. + Specify fields of which type should be used as values for this parameter. + + + + + Indicates that the function argument should be string literal and match one + of the parameters of the caller function. For example, ReSharper annotates + the parameter of . + + + void Foo(string param) { + if (param == null) + throw new ArgumentNullException("par"); // Warning: Cannot resolve symbol + } + + + + + Indicates that the method is contained in a type that implements + System.ComponentModel.INotifyPropertyChanged interface and this method + is used to notify that some property value changed. + + + The method should be non-static and conform to one of the supported signatures: + + NotifyChanged(string) + NotifyChanged(params string[]) + NotifyChanged{T}(Expression{Func{T}}) + NotifyChanged{T,U}(Expression{Func{T,U}}) + SetProperty{T}(ref T, T, string) + + + + public class Foo : INotifyPropertyChanged { + public event PropertyChangedEventHandler PropertyChanged; + + [NotifyPropertyChangedInvocator] + protected virtual void NotifyChanged(string propertyName) { ... } + + string _name; + + public string Name { + get { return _name; } + set { _name = value; NotifyChanged("LastName"); /* Warning */ } + } + } + + Examples of generated notifications: + + NotifyChanged("Property") + NotifyChanged(() => Property) + NotifyChanged((VM x) => x.Property) + SetProperty(ref myField, value, "Property") + + + + + + Describes dependency between method input and output. + + +

Function Definition Table syntax:

+ + FDT ::= FDTRow [;FDTRow]* + FDTRow ::= Input => Output | Output <= Input + Input ::= ParameterName: Value [, Input]* + Output ::= [ParameterName: Value]* {halt|stop|void|nothing|Value} + Value ::= true | false | null | notnull | canbenull + + If method has single input parameter, it's name could be omitted.
+ Using halt (or void/nothing, which is the same) for method output + means that the methods doesn't return normally (throws or terminates the process).
+ Value canbenull is only applicable for output parameters.
+ You can use multiple [ContractAnnotation] for each FDT row, or use single attribute + with rows separated by semicolon. There is no notion of order rows, all rows are checked + for applicability and applied per each program state tracked by R# analysis.
+
+ + + [ContractAnnotation("=> halt")] + public void TerminationMethod() + + + [ContractAnnotation("halt <= condition: false")] + public void Assert(bool condition, string text) // regular assertion method + + + [ContractAnnotation("s:null => true")] + public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty() + + + // A method that returns null if the parameter is null, + // and not null if the parameter is not null + [ContractAnnotation("null => null; notnull => notnull")] + public object Transform(object data) + + + [ContractAnnotation("=> true, result: notnull; => false, result: null")] + public bool TryParse(string s, out Person result) + + +
+ + + Indicates that marked element should be localized or not. + + + [LocalizationRequiredAttribute(true)] + class Foo { + string str = "my string"; // Warning: Localizable string + } + + + + + Indicates that the value of the marked type (or its derivatives) + cannot be compared using '==' or '!=' operators and Equals() + should be used instead. However, using '==' or '!=' for comparison + with null is always permitted. + + + [CannotApplyEqualityOperator] + class NoEquality { } + + class UsesNoEquality { + void Test() { + var ca1 = new NoEquality(); + var ca2 = new NoEquality(); + if (ca1 != null) { // OK + bool condition = ca1 == ca2; // Warning + } + } + } + + + + + When applied to a target attribute, specifies a requirement for any type marked + with the target attribute to implement or inherit specific type or types. + + + [BaseTypeRequired(typeof(IComponent)] // Specify requirement + class ComponentAttribute : Attribute { } + + [Component] // ComponentAttribute requires implementing IComponent interface + class MyComponent : IComponent { } + + + + + Indicates that the marked symbol is used implicitly (e.g. via reflection, in external library), + so this symbol will not be marked as unused (as well as by other usage inspections). + + + + + Should be used on attributes and causes ReSharper to not mark symbols marked with such attributes + as unused (as well as by other usage inspections) + + + + Only entity marked with attribute considered used. + + + Indicates implicit assignment to a member. + + + + Indicates implicit instantiation of a type with fixed constructor signature. + That means any unused constructor parameters won't be reported as such. + + + + Indicates implicit instantiation of a type. + + + + Specify what is considered used implicitly when marked + with or . + + + + Members of entity marked with attribute are considered used. + + + Entity marked with attribute and all its members considered used. + + + + This attribute is intended to mark publicly available API + which should not be removed and so is treated as used. + + + + + Tells code analysis engine if the parameter is completely handled when the invoked method is on stack. + If the parameter is a delegate, indicates that delegate is executed while the method is executed. + If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + + + + + Indicates that a method does not make any observable state changes. + The same as System.Diagnostics.Contracts.PureAttribute. + + + [Pure] int Multiply(int x, int y) => x * y; + + void M() { + Multiply(123, 42); // Waring: Return value of pure method is not used + } + + + + + Indicates that the return value of method invocation must be used. + + + + + Indicates the type member or parameter of some type, that should be used instead of all other ways + to get the value that type. This annotation is useful when you have some "context" value evaluated + and stored somewhere, meaning that all other ways to get this value must be consolidated with existing one. + + + class Foo { + [ProvidesContext] IBarService _barService = ...; + + void ProcessNode(INode node) { + DoSomething(node, node.GetGlobalServices().Bar); + // ^ Warning: use value of '_barService' field + } + } + + + + + Indicates that a parameter is a path to a file or a folder within a web project. + Path can be relative or absolute, starting from web root (~). + + + + + An extension method marked with this attribute is processed by ReSharper code completion + as a 'Source Template'. When extension method is completed over some expression, it's source code + is automatically expanded like a template at call site. + + + Template method body can contain valid source code and/or special comments starting with '$'. + Text inside these comments is added as source code when the template is applied. Template parameters + can be used either as additional method parameters or as identifiers wrapped in two '$' signs. + Use the attribute to specify macros for parameters. + + + In this example, the 'forEach' method is a source template available over all values + of enumerable types, producing ordinary C# 'foreach' statement and placing caret inside block: + + [SourceTemplate] + public static void forEach<T>(this IEnumerable<T> xs) { + foreach (var x in xs) { + //$ $END$ + } + } + + + + + + Allows specifying a macro for a parameter of a source template. + + + You can apply the attribute on the whole method or on any of its additional parameters. The macro expression + is defined in the property. When applied on a method, the target + template parameter is defined in the property. To apply the macro silently + for the parameter, set the property value = -1. + + + Applying the attribute on a source template method: + + [SourceTemplate, Macro(Target = "item", Expression = "suggestVariableName()")] + public static void forEach<T>(this IEnumerable<T> collection) { + foreach (var item in collection) { + //$ $END$ + } + } + + Applying the attribute on a template method parameter: + + [SourceTemplate] + public static void something(this Entity x, [Macro(Expression = "guid()", Editable = -1)] string newguid) { + /*$ var $x$Id = "$newguid$" + x.ToString(); + x.DoSomething($x$Id); */ + } + + + + + + Allows specifying a macro that will be executed for a source template + parameter when the template is expanded. + + + + + Allows specifying which occurrence of the target parameter becomes editable when the template is deployed. + + + If the target parameter is used several times in the template, only one occurrence becomes editable; + other occurrences are changed synchronously. To specify the zero-based index of the editable occurrence, + use values >= 0. To make the parameter non-editable when the template is expanded, use -1. + > + + + + Identifies the target parameter of a source template if the + is applied on a template method. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC action. If applied to a method, the MVC action name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC area. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is + an MVC controller. If applied to a method, the MVC controller name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC Master. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC model type. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is an MVC + partial view. If applied to a method, the MVC partial view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Allows disabling inspections for MVC views within a class or a method. + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC display template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.DisplayExtensions.DisplayForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC editor template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.EditorExtensions.EditorForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC template. + Use this attribute for custom wrappers similar to + System.ComponentModel.DataAnnotations.UIHintAttribute(System.String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component. If applied to a method, the MVC view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Controller.View(Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component name. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component view. If applied to a method, the MVC view component view name is default. + + + + + ASP.NET MVC attribute. When applied to a parameter of an attribute, + indicates that this parameter is an MVC action name. + + + [ActionName("Foo")] + public ActionResult Login(string returnUrl) { + ViewBag.ReturnUrl = Url.Action("Foo"); // OK + return RedirectToAction("Bar"); // Error: Cannot resolve action + } + + + + + Razor attribute. Indicates that a parameter or a method is a Razor section. + Use this attribute for custom wrappers similar to + System.Web.WebPages.WebPageBase.RenderSection(String). + + + + + Indicates how method, constructor invocation or property access + over collection type affects content of the collection. + + + + Method does not use or modify content of the collection. + + + Method only reads content of the collection but does not modify it. + + + Method can change content of the collection but does not add new elements. + + + Method can add new elements to the collection. + + + + Indicates that the marked method is assertion method, i.e. it halts control flow if + one of the conditions is satisfied. To set the condition, mark one of the parameters with + attribute. + + + + + Indicates the condition parameter of the assertion method. The method itself should be + marked by attribute. The mandatory argument of + the attribute is the assertion type. + + + + + Specifies assertion type. If the assertion method argument satisfies the condition, + then the execution continues. Otherwise, execution is assumed to be halted. + + + + Marked parameter should be evaluated to true. + + + Marked parameter should be evaluated to false. + + + Marked parameter should be evaluated to null value. + + + Marked parameter should be evaluated to not null value. + + + + Indicates that the marked method unconditionally terminates control flow execution. + For example, it could unconditionally throw exception. + + + + + Indicates that method is pure LINQ method, with postponed enumeration (like Enumerable.Select, + .Where). This annotation allows inference of [InstantHandle] annotation for parameters + of delegate type by analyzing LINQ method chains. + + + + + Indicates that IEnumerable, passed as parameter, is not enumerated. + + + + + Indicates that parameter is regular expression pattern. + + + + + Prevents the Member Reordering feature from tossing members of the marked class. + + + The attribute must be mentioned in your member reordering patterns + + + + + XAML attribute. Indicates the type that has ItemsSource property and should be treated + as ItemsControl-derived type, to enable inner items DataContext type resolve. + + + + + XAML attribute. Indicates the property of some BindingBase-derived type, that + is used to bind some item of ItemsControl-derived type. This annotation will + enable the DataContext type resolve for XAML bindings for such properties. + + + Property should have the tree ancestor of the ItemsControl type or + marked with the attribute. + + + + + Support implementation of + + + + + + + + + + + + + + + + + Asynchronous continuation delegate - function invoked at the end of asynchronous + processing. + + Exception during asynchronous processing or null if no exception + was thrown. + + + + Helpers for asynchronous operations. + + + + + Iterates over all items in the given collection and runs the specified action + in sequence (each action executes only after the preceding one has completed without an error). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Repeats the specified asynchronous action multiple times and invokes asynchronous continuation at the end. + + The repeat count. + The asynchronous continuation to invoke at the end. + The action to invoke. + + + + Modifies the continuation by pre-pending given action to execute just before it. + + The async continuation. + The action to pre-pend. + Continuation which will execute the given action before forwarding to the actual continuation. + + + + Attaches a timeout to a continuation which will invoke the continuation when the specified + timeout has elapsed. + + The asynchronous continuation. + The timeout. + Wrapped continuation. + + + + Iterates over all items in the given collection and runs the specified action + in parallel (each action executes on a thread from thread pool). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Runs the specified asynchronous action synchronously (blocks until the continuation has + been invoked). + + The action. + + Using this method is not recommended because it will block the calling thread. + + + + + Wraps the continuation with a guard which will only make sure that the continuation function + is invoked only once. + + The asynchronous continuation. + Wrapped asynchronous continuation. + + + + Gets the combined exception from all exceptions in the list. + + The exceptions. + Combined exception or null if no exception was thrown. + + + + Disposes the Timer, and waits for it to leave the Timer-callback-method + + The Timer object to dispose + Timeout to wait (TimeSpan.Zero means dispose without waiting) + Timer disposed within timeout (true/false) + + + + Asynchronous action. + + Continuation to be invoked at the end of action. + + + + Asynchronous action with one argument. + + Type of the argument. + Argument to the action. + Continuation to be invoked at the end of action. + + + + Represents the logging event with asynchronous continuation. + + + + + Initializes a new instance of the struct. + + The log event. + The continuation. + + + + Gets the log event. + + + + + Gets the continuation. + + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + A value of true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + String Conversion Helpers + + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + Output value + Default value + Returns false if the input value could not be parsed + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + The type of the enum + Output value. Null if parse failed + + + + Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. A parameter specifies whether the operation is case-sensitive. The return value indicates whether the conversion succeeded. + + The enumeration type to which to convert value. + The string representation of the enumeration name or underlying value to convert. + true to ignore case; false to consider case. + When this method returns, result contains an object of type TEnum whose value is represented by value if the parse operation succeeds. If the parse operation fails, result contains the default value of the underlying type of TEnum. Note that this value need not be a member of the TEnum enumeration. This parameter is passed uninitialized. + true if the value parameter was converted successfully; otherwise, false. + Wrapper because Enum.TryParse is not present in .net 3.5 + + + + Enum.TryParse implementation for .net 3.5 + + + + Don't uses reflection + + + + Enables to extract extra context details for + + + + + Name of context + + + + + The current LogFactory next to LogManager + + + + + NLog internal logger. + + Writes to file, console or custom text writer (see ) + + + Don't use as that can lead to recursive calls - stackoverflow + + + + + Gets a value indicating whether internal log includes Trace messages. + + + + + Gets a value indicating whether internal log includes Debug messages. + + + + + Gets a value indicating whether internal log includes Info messages. + + + + + Gets a value indicating whether internal log includes Warn messages. + + + + + Gets a value indicating whether internal log includes Error messages. + + + + + Gets a value indicating whether internal log includes Fatal messages. + + + + + Logs the specified message without an at the Trace level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + Log message. + + + + Logs the specified message without an at the Trace level. + will be only called when logging is enabled for level Trace. + + Function that returns the log message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Trace level. + will be only called when logging is enabled for level Trace. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Debug level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Debug level. + + Log message. + + + + Logs the specified message without an at the Debug level. + will be only called when logging is enabled for level Debug. + + Function that returns the log message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Debug level. + will be only called when logging is enabled for level Debug. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Info level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Info level. + + Log message. + + + + Logs the specified message without an at the Info level. + will be only called when logging is enabled for level Info. + + Function that returns the log message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Info level. + will be only called when logging is enabled for level Info. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Warn level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Warn level. + + Log message. + + + + Logs the specified message without an at the Warn level. + will be only called when logging is enabled for level Warn. + + Function that returns the log message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Warn level. + will be only called when logging is enabled for level Warn. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Error level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Error level. + + Log message. + + + + Logs the specified message without an at the Error level. + will be only called when logging is enabled for level Error. + + Function that returns the log message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Error level. + will be only called when logging is enabled for level Error. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Fatal level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Fatal level. + + Log message. + + + + Logs the specified message without an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Function that returns the log message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Exception to be logged. + Function that returns the log message. + + + + Initializes static members of the InternalLogger class. + + + + + Set the config of the InternalLogger with defaults and config. + + + + + Gets or sets the minimal internal log level. + + If set to , then messages of the levels , and will be written. + + + + Gets or sets a value indicating whether internal messages should be written to the console output stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the console error stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the .Trace + + + + + Gets or sets the file path of the internal log file. + + A value of value disables internal logging to a file. + + + + Gets or sets the text writer that will receive internal logs. + + + + + Event written to the internal log. + Please note that the event is not triggered when then event hasn't the minimal log level set by + + + + + Gets or sets a value indicating whether timestamp should be included in internal log output. + + + + + Is there an thrown when writing the message? + + + + + Logs the specified message without an at the specified level. + + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the specified level. + + Log level. + Log message. + + + + Logs the specified message without an at the specified level. + will be only called when logging is enabled for level . + + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + will be only called when logging is enabled for level . + + Exception to be logged. + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Log message. + + + + Write to internallogger. + + optional exception to be logged. + level + message + optional args for + + + + Create log line with timestamp, exception message etc (if configured) + + + + + Determine if logging should be avoided because of exception type. + + The exception to check. + true if logging should be avoided; otherwise, false. + + + + Determine if logging is enabled for given LogLevel + + The for the log event. + true if logging is enabled; otherwise, false. + + + + Determine if logging is enabled. + + true if logging is enabled; otherwise, false. + + + + Write internal messages to the log file defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged only when the property is true, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged when the property is true, otherwise the + method has no effect. + + + + + Write internal messages to the . + + A message to write. + + Works when property set to true. + The is used in Debug and Release configuration. + The works only in Debug configuration and this is reason why is replaced by . + in DEBUG + + + + + Logs the assembly version and file version of the given Assembly. + + The assembly to log. + + + + A message has been written to the internal logger + + + + + The rendered message + + + + + The log level + + + + + The exception. Could be null. + + + + + The type that triggered this internal log event, for example the FileTarget. + This property is not always populated. + + + + + The context name that triggered this internal log event, for example the name of the Target. + This property is not always populated. + + + + + + + + A cyclic buffer of object. + + + + + Initializes a new instance of the class. + + Buffer size. + Whether buffer should grow as it becomes full. + The maximum number of items that the buffer can grow to. + + + + Gets the capacity of the buffer + + + + + Gets the number of items in the buffer + + + + + Adds the specified log event to the buffer. + + Log event. + The number of items in the buffer. + + + + Gets the array of events accumulated in the buffer and clears the buffer as one atomic operation. + + Events in the buffer. + + + + Condition and expression. + + + + + Initializes a new instance of the class. + + Left hand side of the AND expression. + Right hand side of the AND expression. + + + + Gets the left hand side of the AND expression. + + + + + Gets the right hand side of the AND expression. + + + + + Returns a string representation of this expression. + + A concatenated '(Left) and (Right)' string. + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the conjunction operator. + + + + Exception during evaluation of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Base class for representing nodes in condition expression trees. + + + + + Converts condition text to a condition expression tree. + + Condition text to be converted. + Condition expression tree. + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition layout expression (represented by a string literal + with embedded ${}). + + + + + Initializes a new instance of the class. + + The layout. + + + + Gets the layout. + + The layout. + + + + Returns a string representation of this expression. + + String literal in single quotes. + + + + Evaluates the expression by calculating the value + of the layout in the specified evaluation context. + + Evaluation context. + The value of the layout. + + + + Condition level expression (represented by the level keyword). + + + + + Returns a string representation of the expression. + + The 'level' string. + + + + Evaluates to the current log level. + + Evaluation context. Ignored. + The object representing current log level. + + + + Condition literal expression (numeric, LogLevel.XXX, true or false). + + + + + Initializes a new instance of the class. + + Literal value. + + + + Gets the literal value. + + The literal value. + + + + Returns a string representation of the expression. + + The literal value. + + + + Evaluates the expression. + + Evaluation context. + The literal value as passed in the constructor. + + + + Condition logger name expression (represented by the logger keyword). + + + + + Returns a string representation of this expression. + + A logger string. + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + Returns a string representation of this expression. + + The 'message' string. + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Initializes a new instance of the class. + + Condition method name. + + + + Condition method invocation expression (represented by method(p1,p2,p3) syntax). + + + + + Initializes a new instance of the class. + + Name of the condition method. + of the condition method. + Precompiled delegate of the condition method. + The method parameters. + + + + Gets the method info. + + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + A bunch of utility methods (mostly predicates) which can be used in + condition expressions. Partially inspired by XPath 1.0. + + + + + Compares two values for equality. + + The first value. + The second value. + true when two objects are equal, false otherwise. + + + + Compares two strings for equality. + + The first string. + The second string. + Optional. If true, case is ignored; if false (default), case is significant. + true when two strings are equal, false otherwise. + + + + Gets or sets a value indicating whether the second string is a substring of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a substring of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a prefix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a suffix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Returns the length of a string. + + A string whose lengths is to be evaluated. + The length of the string. + + + + Indicates whether the specified regular expression finds a match in the specified input string. + + The string to search for a match. + The regular expression pattern to match. + A string consisting of the desired options for the test. The possible values are those of the separated by commas. + true if the regular expression finds a match; otherwise, false. + + + + + + + + + + + Marks the class as containing condition methods. + + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Gets the expression to be negated. + + The expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition or expression. + + + + + Initializes a new instance of the class. + + Left hand side of the OR expression. + Right hand side of the OR expression. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + Exception during parsing of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Condition parser. Turns a string representation of condition expression + into an expression tree. + + + + + Initializes a new instance of the class. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + Instance of used to resolve references to condition methods and layout renderers. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + + Try stringed keyword to + + + + success? + + + + Parse number + + negative number? minus should be parsed first. + + + + + Condition relational (==, !=, <, <=, + > or >=) expression. + + + + + Initializes a new instance of the class. + + The left expression. + The right expression. + The relational operator. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Gets the relational operator. + + The operator. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Compares the specified values using specified relational operator. + + The first value. + The second value. + The relational operator. + Result of the given relational operator. + + + + Promote values to the type needed for the comparision, e.g. parse a string to int. + + + + + + + Promotes to type + + + + success? + + + + Try to promote both values. First try to promote to , + when failed, try to . + + + + + + Get the order for the type for comparision. + + + index, 0 to max int. Lower is first + + + + Dictionary from type to index. Lower index should be tested first. + + + + + Build the dictionary needed for the order of the types. + + + + + + Get the string representing the current + + + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + Hand-written tokenizer for conditions. + + + + + Initializes a new instance of the class. + + The string reader. + + + + Gets the type of the token. + + The type of the token. + + + + Gets the token value. + + The token value. + + + + Gets the value of a string token. + + The string token value. + + + + Asserts current token type and advances to the next token. + + Expected token type. + If token type doesn't match, an exception is thrown. + + + + Asserts that current token is a keyword and returns its value and advances to the next token. + + Keyword value. + + + + Gets or sets a value indicating whether current keyword is equal to the specified value. + + The keyword. + + A value of true if current keyword is equal to the specified value; otherwise, false. + + + + + Gets or sets a value indicating whether the tokenizer has reached the end of the token stream. + + + A value of true if the tokenizer has reached the end of the token stream; otherwise, false. + + + + + Gets or sets a value indicating whether current token is a number. + + + A value of true if current token is a number; otherwise, false. + + + + + Gets or sets a value indicating whether the specified token is of specified type. + + The token type. + + A value of true if current token is of specified type; otherwise, false. + + + + + Gets the next token and sets and properties. + + + + + Try the comparison tokens (greater, smaller, greater-equals, smaller-equals) + + current char + is match + + + + Try the logical tokens (and, or, not, equals) + + current char + is match + + + + Mapping between characters and token types for punctuations. + + + + + Initializes a new instance of the CharToTokenType struct. + + The character. + Type of the token. + + + + Token types for condition expressions. + + + + + Marks the class or a member as advanced. Advanced classes and members are hidden by + default in generated documentation. + + + + + Initializes a new instance of the class. + + + + + Identifies that the output of layout or layout render does not change for the lifetime of the current appdomain. + + + A layout(renderer) could be converted to a literal when: + - The layout and all layout properties are SimpleLayout or [AppDomainFixedOutput] + + Recommendation: Apply this attribute to a layout or layout-renderer which have the result only changes by properties of type Layout. + + + + + Used to mark configurable parameters which are arrays. + Specifies the mapping between XML elements and .NET types. + + + + + Initializes a new instance of the class. + + The type of the array item. + The XML element name that represents the item. + + + + Gets the .NET type of the array item. + + + + + Gets the XML element name. + + + + + An assembly is trying to load. + + + + + New event args + + + + + + The assembly that is trying to load. + + + + + NLog configuration section handler class for configuring NLog from App.config. + + + + + Creates a configuration section handler. + + Parent object. + Configuration context object. + Section XML node. + The created section handler object. + + + + Constructs a new instance the configuration item (target, layout, layout renderer, etc.) given its type. + + Type of the item. + Created object of the specified type. + + + + Provides registration information for named items (targets, layouts, layout renderers, etc.) managed by NLog. + + Everything of an assembly could be loaded by + + + + + Called before the assembly will be loaded. + + + + + Initializes a new instance of the class. + + The assemblies to scan for named items. + + + + Gets or sets default singleton instance of . + + + This property implements lazy instantiation so that the is not built before + the internal logger is configured. + + + + + Gets or sets the creator delegate used to instantiate configuration objects. + + + By overriding this property, one can enable dependency injection or interception for created objects. + + + + + Gets the factory. + + The target factory. + + + + Gets the factory. + + The filter factory. + + + + gets the factory + + not using due to backwards-compatibility. + + + + + Gets the factory. + + The layout renderer factory. + + + + Gets the factory. + + The layout factory. + + + + Gets the ambient property factory. + + The ambient property factory. + + + + Legacy interface, no longer used by the NLog engine + + + + + Gets or sets the JSON serializer to use with or + + + + + Gets or sets the string serializer to use with + + + + + Gets or sets the custom object-type transformation for use in , or + + + + + Gets or sets the parameter converter to use with , or + + + + + Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) + + + - Null (Auto Detect) : NLog-parser checks for positional parameters, and will then fallback to string.Format-rendering. + - True: Always performs the parsing of and rendering of using the NLog-parser (Allows custom formatting with ) + - False: Always performs parsing and rendering using string.Format (Fastest if not using structured logging) + + + + + Gets the time source factory. + + The time source factory. + + + + Gets the condition method factory. + + The condition method factory. + + + + Gets the condition method factory (precompiled) + + The condition method factory. + + + + Registers named items from the assembly. + + The assembly. + + + + Registers named items from the assembly. + + The assembly. + Item name prefix. + + + + Call Preload for NLogPackageLoader + + + Every package could implement a class "NLogPackageLoader" (namespace not important) with the public static method "Preload" (no arguments) + This method will be called just before registering all items in the assembly. + + + + + + Call the Preload method for . The Preload method must be static. + + + + + + Clears the contents of all factories. + + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Builds the default configuration item factory. + + Default factory. + + + + Registers items in NLog.Extended.dll using late-bound types, so that we don't need a reference to NLog.Extended.dll. + + + + + Attribute used to mark the default parameters for layout renderers. + + + + + Initializes a new instance of the class. + + + + + Dynamic filtering with a positive list of enabled levels + + + + + Dynamic filtering with a minlevel and maxlevel range + + + + + Format of the exception output to the specific target. + + + + + Appends the Message of an Exception to the specified target. + + + + + Appends the type of an Exception to the specified target. + + + + + Appends the short type of an Exception to the specified target. + + + + + Appends the result of calling ToString() on an Exception to the specified target. + + + + + Appends the method name from Exception's stack trace to the specified target. + + + + + Appends the stack trace from an Exception to the specified target. + + + + + Appends the contents of an Exception's Data property to the specified target. + + + + + Destructure the exception (usually into JSON) + + + + + Appends the from the application or the object that caused the error. + + + + + Appends the from the application or the object that caused the error. + + + + + Appends any additional properties that specific type of Exception might have. + + + + + Factory for class-based items. + + The base type of each item. + The type of the attribute used to annotate items. + + + + Scans the assembly. + + The types to scan. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the item based on a type name. + + Name of the item. + Name of the type. + + + + Clears the contents of the factory. + + + + + Registers a single type definition. + + The item name. + The type of the item. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Creates an item instance. + + The name of the item. + Created item. + + + + Factory specialized for s. + + + + + Clear all func layouts + + + + + Register a layout renderer with a callback function. + + Name of the layoutrenderer, without ${}. + the renderer that renders the value. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides means to populate factories of named items (such as targets, layouts, layout renderers, etc.). + + + + + Implemented by objects which support installation and uninstallation. + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Interface for accessing configuration details + + + + + Name of the config section + + + + + Configuration Key/Value Pairs + + + + + Child config sections + + + + + Interface for loading NLog + + + + + Finds and loads the NLog configuration + + LogFactory that owns the NLog configuration + Name of NLog.config file (optional) + NLog configuration (or null if none found) + + + + Notifies when LoggingConfiguration has been successfully applied + + LogFactory that owns the NLog configuration + NLog Config + + + + Get file paths (including filename) for the possible NLog config files. + + Name of NLog.config file (optional) + The file paths to the possible config file + + + + Level enabled flags for each LogLevel ordinal + + + + + Converts the filter into a simple + + + + + Represents a factory of named items (such as targets, layouts, layout renderers, etc.). + + Base type for each item instance. + Item definition type (typically or ). + + + + Registers new item definition. + + Name of the item. + Item definition. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Creates item instance. + + Name of the item. + Newly created item instance. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides context for install/uninstall operations. + + + + + Mapping between log levels and console output colors. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log output. + + + + Gets or sets the installation log level. + + + + + Gets or sets a value indicating whether to ignore failures during installation. + + + + + Whether installation exceptions should be rethrown. If IgnoreFailures is set to true, + this property has no effect (there are no exceptions to rethrow). + + + + + Gets the installation parameters. + + + + + Gets or sets the log output. + + + + + Logs the specified trace message. + + The message. + The arguments. + + + + Logs the specified debug message. + + The message. + The arguments. + + + + Logs the specified informational message. + + The message. + The arguments. + + + + Logs the specified warning message. + + The message. + The arguments. + + + + Logs the specified error message. + + The message. + The arguments. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Creates the log event which can be used to render layouts during installation/uninstallations. + + Log event info object. + + + + Convert object-value into specified type + + + + + Parses the input value and converts into the wanted type + + Input Value + Wanted Type + Format to use when parsing + Culture to use when parsing + Output value with wanted type + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for extension loading + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for enabling NLog + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + LoggingConfiguration being built + + + + + Interface for fluent setup of LogFactory options for logevent serialization + + + + + LogFactory under configuration + + + + + Encapsulates and the logic to match the actual logger name + All subclasses defines immutable objects. + Concrete subclasses defines various matching rules through + + + + + Creates a concrete based on . + + + Rules used to select the concrete implementation returned: + + if is null => returns (never matches) + if doesn't contains any '*' nor '?' => returns (matches only on case sensitive equals) + if == '*' => returns (always matches) + if doesn't contain '?' + + if contains exactly 2 '*' one at the beginning and one at the end (i.e. "*foobar*) => returns + if contains exactly 1 '*' at the beginning (i.e. "*foobar") => returns + if contains exactly 1 '*' at the end (i.e. "foobar*") => returns + + + returns + + + + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + A concrete + + + + Returns the argument passed to + + + + + Checks whether given name matches the logger name pattern. + + String to be matched. + A value of when the name matches, otherwise. + + + + Defines a that never matches. + Used when pattern is null + + + + + Defines a that always matches. + Used when pattern is '*' + + + + + Defines a that matches with a case-sensitive Equals + Used when pattern is a string without wildcards '?' '*' + + + + + Defines a that matches with a case-sensitive StartsWith + Used when pattern is a string like "*foobar" + + + + + Defines a that matches with a case-sensitive EndsWith + Used when pattern is a string like "foobar*" + + + + + Defines a that matches with a case-sensitive Contains + Used when pattern is a string like "*foobar*" + + + + + Defines a that matches with a complex wildcards combinations: + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + used when pattern is a string containing any number of '?' or '*' in any position + i.e. "*Server[*].Connection[?]" + + + + + Keeps logging configuration and provides simple API to modify it. + + This class is thread-safe..ToList() is used for that purpose. + + + + Variables defined in xml or in API. name is case case insensitive. + + + + + Gets the factory that will be configured + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete on NLog 4.1 and it may be removed in a future release. + + + + Gets the variables defined in the configuration. + + + + + Gets a collection of named targets specified in the configuration. + + + A list of named targets. + + + Unnamed targets (such as those wrapped by other targets) are not returned. + + + + + Gets the collection of file names which should be watched for changes by NLog. + + + + + Gets the collection of logging rules. + + + + + Gets or sets the default culture info to use as . + + + Specific culture info or null to use + + + + + Gets all targets. + + + + + Compare objects based on their name. + + This property is use to cache the comparer object. + + + + Defines methods to support the comparison of objects for equality based on their name. + + + + + Registers the specified target object. The name of the target is read from . + + + The target object with a non + + when is + + + + Registers the specified target object under a given name. + + Name of the target. + The target object. + when is + when is + + + + Finds the target with the specified name. + + + The name of the target to be found. + + + Found target or when the target is not found. + + + + + Finds the target with the specified name and specified type. + + + The name of the target to be found. + + Type of the target + + Found target or when the target is not found of not of type + + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for all loglevels. + + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Finds the logging rule with the specified name. + + The name of the logging rule to be found. + Found logging rule or when not found. + + + + Removes the specified named logging rule. + + The name of the logging rule to be removed. + Found one or more logging rule to remove, or when not found. + + + + Called by LogManager when one of the log configuration files changes. + + + A new instance of that represents the updated configuration. + + + + + Removes the specified named target. + + Name of the target. + + + + Installs target-specific objects on current system. + + The installation context. + + Installation typically runs with administrative permissions. + + + + + Uninstalls target-specific objects from current system. + + The installation context. + + Uninstallation typically runs with administrative permissions. + + + + + Closes all targets and releases any unmanaged resources. + + + + + Log to the internal (NLog) logger the information about the and associated with this instance. + + + The information are only recorded in the internal logger if Debug level is enabled, otherwise nothing is + recorded. + + + + + Validates the configuration. + + + + + Copies all variables from provided dictionary into current configuration variables. + + Master variables dictionary + + + + Replace a simple variable with a value. The original value is removed and thus we cannot redo this in a later stage. + + + + + + + Checks whether unused targets exist. If found any, just write an internal log at Warn level. + If initializing not started or failed, then checking process will be canceled + + + + + + + + Arguments for events. + + + + + Initializes a new instance of the class. + + The new configuration. + The old configuration. + + + + Gets the old configuration. + + The old configuration. + + + + Gets the new configuration. + + The new configuration. + + + + Gets the new configuration + + The new configuration. + + + + Gets the old configuration + + The old configuration. + + + + Gets the optional boolean attribute value. + + + Name of the attribute. + Default value to return if the attribute is not found or if there is a parse error + Boolean attribute value or default. + + + + Remove the namespace (before :) + + + x:a, will be a + + + + + + + Enables loading of NLog configuration from a file + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Loads NLog configuration from + + + + + Constructor + + + + + + Loads NLog configuration from provided config section + + + + + + + Builds list with unique keys, using last value of duplicates. High priority keys placed first. + + + + + + + Parse loglevel, but don't throw if exception throwing is disabled + + Name of attribute for logging. + Value of parse. + Used if there is an exception + + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Parse {Rules} xml element + + + Rules are added to this parameter. + + + + Parse {Logger} xml element + + + + + + Parse boolean + + Name of the property for logging. + value to parse + Default value to return if the parse failed + Boolean attribute value or default. + + + + Arguments for . + + + + + Initializes a new instance of the class. + + Whether configuration reload has succeeded. + + + + Initializes a new instance of the class. + + Whether configuration reload has succeeded. + The exception during configuration reload. + + + + Gets a value indicating whether configuration reload has succeeded. + + A value of true if succeeded; otherwise, false. + + + + Gets the exception which occurred during configuration reload. + + The exception. + + + + Enables FileWatcher for the currently loaded NLog Configuration File, + and supports automatic reload on file modification. + + + + + Represents a logging rule. An equivalent of <logger /> configuration element. + + + + + Create an empty . + + + + + Create an empty . + + + + + Create a new with a and which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a new with a which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a (disabled) . You should call or see cref="EnableLoggingForLevels"/> to enable logging. + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Target to be written to when the rule matches. + + + + Rule identifier to allow rule lookup + + + + + Gets a collection of targets that should be written to when this rule matches. + + + + + Gets a collection of child rules to be evaluated when this rule matches. + + + + + Gets a collection of filters to be checked before writing to targets. + + + + + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + + Gets or sets logger name pattern. + + + Logger name pattern used by to check if a logger name matches this rule. + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + + + + Gets the collection of log levels enabled by this rule. + + + + + Default action if none of the filters match + + + + + Enables logging for a particular level. + + Level to be enabled. + + + + Enables logging for a particular levels between (included) and . + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Disables logging for a particular level. + + Level to be disabled. + + + + Disables logging for particular levels between (included) and . + + Minimum log level to be disables. + Maximum log level to de disabled. + + + + Enables logging the levels between (included) and . All the other levels will be disabled. + + >Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Returns a string representation of . Used for debugging. + + + A that represents the current . + + + + + Checks whether te particular log level is enabled for this rule. + + Level to be checked. + A value of when the log level is enabled, otherwise. + + + + Checks whether given name matches the . + + String to be matched. + A value of when the name matches, otherwise. + + + + Default filtering with static level config + + + + + Factory for locating methods. + + + + + Initializes a new instance of the class. + + Helper method to extract relevant methods from type + + + + Scans the assembly for classes marked with expected class + and methods marked with expected and adds them + to the factory. + + The types to scan. + The prefix to use for names. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Scans a type for relevant methods with their symbolic names + + Include types that are marked with this attribute + Include methods that are marked with this attribute + Class Type to scan + Collection of methods with their symbolic names + + + + Clears contents of the factory. + + + + + Registers the definition of a single method. + + The method name. + The method info. + + + + Registers the definition of a single method. + + The method name. + The method info. + The precompiled method delegate. + + + + Tries to retrieve method by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Tries to retrieve method-delegate by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Retrieves method by name. + + Method name. + MethodInfo object. + + + + Retrieves method by name. + + Method name. + Method delegate object. + + + + Tries to get method definition. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Marks the layout or layout renderer depends on mutable objects from the LogEvent + + This can be or + + + + + Attaches a simple name to an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The name of the item. + + + + Gets the name of the item. + + The name of the item. + + + + Indicates NLog should not scan this property during configuration. + + + + + Initializes a new instance of the class. + + + + + Marks the object as configuration item for NLog. + + + + + Initializes a new instance of the class. + + + + + Represents simple XML element with case-insensitive attribute semantics. + + + + + Initializes a new instance of the class. + + The reader to initialize element from. + + + + Prevents a default instance of the class from being created. + + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + Last error occured during configuration read + + + + + Returns children elements with the specified element name. + + Name of the element. + Children elements with the specified element name. + + + + Asserts that the name of the element is among specified element names. + + The allowed names. + + + + Returns all parsing errors from current and all child elements. + + + + + Special attribute we could ignore + + + + + Default implementation of + + + + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Provides simple programmatic configuration API used for trivial logging cases. + + Warning, these methods will overwrite the current config. + + + + + Configures NLog for console logging so that all messages above and including + the level are output to the console. + + + + + Configures NLog for console logging so that all messages above and including + the specified level are output to the console. + + The minimal logging level. + + + + Configures NLog for to log to the specified target so that all messages + above and including the level are output. + + The target to log all messages to. + + + + Configures NLog for to log to the specified target so that all messages + above and including the specified level are output. + + The target to log all messages to. + The minimal logging level. + + + + Configures NLog for file logging so that all messages above and including + the level are written to the specified file. + + Log file name. + + + + Configures NLog for file logging so that all messages above and including + the specified level are written to the specified file. + + Log file name. + The minimal logging level. + + + + Value indicating how stack trace should be captured when processing the log event. + + + + + Stack trace should not be captured. + + + + + Stack trace should be captured without source-level information. + + + + + Stack trace should be captured including source-level information such as line numbers. + + + + + Capture maximum amount of the stack trace information supported on the platform. + + + + + Marks the layout or layout renderer as thread independent - it producing correct results + regardless of the thread it's running on. + + Without this attribute everything is rendered on the main thread. + + + If this attribute is set on a layout, it could be rendered on the another thread. + This could be more efficient as it's skipped when not needed. + + If context like HttpContext.Current is needed, which is only available on the main thread, this attribute should not be applied. + + See the AsyncTargetWrapper and BufferTargetWrapper with the , using + + Apply this attribute when: + - The result can we rendered in another thread. Delaying this could be more efficient. And/Or, + - The result should not be precalculated, for example the target sends some extra context information. + + + + + Marks the layout or layout renderer as thread safe - it producing correct results + regardless of the number of threads it's running on. + + Without this attribute then the target concurrency will be reduced + + + + + A class for configuring NLog through an XML configuration file + (App.config style or App.nlog style). + + Parsing of the XML file is also implemented in this class. + + + - This class is thread-safe..ToList() is used for that purpose. + - Update TemplateXSD.xml for changes outside targets + + + + + Initializes a new instance of the class. + + Configuration file to be read. + + + + Initializes a new instance of the class. + + Configuration file to be read. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + XML reader to read from. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + The XML contents. + Name of the XML file. + The to which to apply any applicable configuration values. + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + NLog LogFactory + + + + Gets the default object by parsing + the application configuration file (app.exe.config). + + + + + Did the Succeeded? true= success, false= error, null = initialize not started yet. + + + + + Gets or sets a value indicating whether all of the configuration files + should be watched for changes and reloaded automatically when changed. + + + + + Gets the collection of file names which should be watched for changes by NLog. + This is the list of configuration files processed. + If the autoReload attribute is not set it returns empty collection. + + + + + Re-reads the original configuration file and returns the new object. + + The new object. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Create XML reader for (xml config) file. + + filepath + reader or null if filename is empty. + + + + Initializes the configuration. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Checks whether any error during XML configuration parsing has occured. + If there are any and ThrowConfigExceptions or ThrowExceptions + setting is enabled - throws NLogConfigurationException, otherwise + just write an internal log at Warn level. + + Root NLog configuration xml element + + + + Add a file with configuration. Check if not already included. + + + + + + + Parse the root + + + path to config file. + The default value for the autoReload option. + + + + Parse {configuration} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parse {NLog} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Include (multiple) files by filemask, e.g. *.nlog + + base directory in case if is relative + relative or absolute fileMask + + + + + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language + described
here. + + + + + Gets or sets the condition expression. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + An abstract filter class. Provides a way to eliminate log messages + based on properties other than logger name and log level. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the action to be taken when filter matches. + + + + + + Gets the result of evaluating filter against given log event. + + The log event. + Filter result. + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Marks class as a layout renderer and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the filter. + + + + Filter result. + + + + + The filter doesn't want to decide whether to log or discard the message. + + + + + The message should be logged. + + + + + The message should not be logged. + + + + + The message should be logged and processing should be finished. + + + + + The message should not be logged and processing should be finished. + + + + + A base class for filters that are based on comparing a value to a layout. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout to be used to filter log messages. + + The layout. + + + + + Matches when the calculated layout contains the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets the substring to be matched. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets a string to compare the layout to. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches the provided filter-method + + + + + Initializes a new instance of the class. + + + + + + + + Matches when the calculated layout does NOT contain the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets the substring to be matched. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is NOT equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a string to compare the layout to. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the result of the calculated layout has been repeated a moment ago + + + + + How long before a filter expires, and logging is accepted again + + + + + + Max length of filter values, will truncate if above limit + + + + + + Applies the configured action to the initial logevent that starts the timeout period. + Used to configure that it should ignore all events until timeout. + + + + + + Max number of unique filter values to expect simultaneously + + + + + + Default number of unique filter values to expect, will automatically increase if needed + + + + + + Insert FilterCount value into when an event is no longer filtered + + + + + + Append FilterCount to the when an event is no longer filtered + + + + + + Reuse internal buffers, and doesn't have to constantly allocate new buffers + + + + + + Default buffer size for the internal buffers + + + + + + Can be used if has been enabled. + + + + + Initializes a new instance of the class. + + + + + Checks whether log event should be logged or not. In case the LogEvent has just been repeated. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Uses object pooling, and prunes stale filter items when the pool runs dry + + + + + Remove stale filter-value from the cache, and fill them into the pool for reuse + + + + + Renders the Log Event into a filter value, that is used for checking if just repeated + + + + + Repeated LogEvent detected. Checks if it should activate filter-action + + + + + Filter Value State (mutable) + + + + + Filter Lookup Key (immutable) + + + + + A fluent class to build log events for NLog. + + + + + Initializes a new instance of the class. + + The to send the log event. + + + + Initializes a new instance of the class. + + The to send the log event. + The for the log event. + + + + Gets the created by the builder. + + + + + Sets the information of the logging event. + + The exception information of the logging event. + current for chaining calls. + + + + Sets the level of the logging event. + + The level of the logging event. + current for chaining calls. + + + + Sets the logger name of the logging event. + + The logger name of the logging event. + current for chaining calls. + + + + Sets the log message on the logging event. + + The log message for the logging event. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + The fourth object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + An object that supplies culture-specific formatting information. + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets a per-event context property on the logging event. + + The name of the context property. + The value of the context property. + current for chaining calls. + + + + Sets multiple per-event context properties on the logging event. + + The properties to set. + current for chaining calls. + + + + Sets the timestamp of the logging event. + + The timestamp of the logging event. + current for chaining calls. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + current for chaining calls. + + + + Writes the log event to the underlying logger. + + + + + Writes the log event to the underlying logger. + + If condition is true, write log event; otherwise ignore event. + + + + Writes the log event to the underlying logger. + + If condition is true, write log event; otherwise ignore event. + + + + Extension methods for NLog . + + + + + Starts building a log event with the specified . + + The logger to write the log event to. + The log level. + current for chaining calls. + + + + Starts building a log event at the Trace level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Debug level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Info level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Warn level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Error level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Fatal level. + + The logger to write the log event to. + current for chaining calls. + + + + Global Diagnostics Context + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Global Diagnostics Context - a dictionary structure to hold per-application-instance values. + + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The item value, if defined; otherwise null. + + + + Returns all item names + + A collection of the names of all items in the Global Diagnostics Context. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Include context properties + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Interface for serialization of object values into JSON format + + + + + Serialization of an object into JSON format. + + The object to serialize to JSON. + Output destination. + Serialize succeeded (true/false) + + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format.s + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Logger with only generic methods (passing 'LogLevel' to methods) and core properties. + + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Extensions for NLog . + + + + + Writes the diagnostic message and exception at the specified level. + + A logger implementation that will handle the message. + The log level. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Allocates new builder and appends to the provided target builder on dispose + + + + + Access the new builder allocated + + + + + Helpers for . + + + + + Load from url + + file or path, including .dll + basepath, optional + + + + + Load from url + + name without .dll + + + + + Forward declare of system delegate type for use by other classes + + + + + Keeps track of pending operation count, and can notify when pending operation count reaches zero + + + + + Mark operation has started + + + + + Mark operation has completed + + Exception coming from the completed operation [optional] + + + + Registers an AsyncContinuation to be called when all pending operations have completed + + Invoked on completion + AsyncContinuation operation + + + + Clear o + + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Legacy attempt to skip async MoveNext, but caused source file line number to be lost + + + + + Gets the entire stack trace. + + + + + Finds first user stack frame in a stack trace + + The stack trace of the logging method invocation + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + Index of the first user stack frame or 0 if all stack frames are non-user + + + + This is only done for legacy reason, as the correct method-name and line-number should be extracted from the MoveNext-StackFrame + + The stack trace of the logging method invocation + Starting point for skipping async MoveNext-frames + + + + Assembly to skip? + + Find assembly via this frame. + true, we should skip. + + + + Is this the type of the logger? + + get type of this logger in this frame. + Type of the logger. + + + + + Memory optimized filtering + + Passing state too avoid delegate capture and memory-allocations. + + + + Internal configuration manager used to read .NET configuration files. + Just a wrapper around the BCL ConfigurationManager, but used to enable + unit testing. + + + + + Gets the wrapper around ConfigurationManager.AppSettings. + + + + + Provides untyped IDictionary interface on top of generic IDictionary. + + The type of the key. + The type of the value. + + + + Initializes a new instance of the DictionaryAdapter class. + + The implementation. + + + + Gets an object containing the values in the object. + + + + An object containing the values in the object. + + + + + Gets the number of elements contained in the . + + + + The number of elements contained in the . + + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + + + Gets an object that can be used to synchronize access to the . + + + + An object that can be used to synchronize access to the . + + + + + Gets a value indicating whether the object has a fixed size. + + + true if the object has a fixed size; otherwise, false. + + + + + Gets a value indicating whether the object is read-only. + + + true if the object is read-only; otherwise, false. + + + + + Gets an object containing the keys of the object. + + + + An object containing the keys of the object. + + + + + Gets or sets the with the specified key. + + Dictionary key. + Value corresponding to key or null if not found + + + + Adds an element with the provided key and value to the object. + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + + Removes all elements from the object. + + + + + Determines whether the object contains an element with the specified key. + + The key to locate in the object. + + True if the contains an element with the key; otherwise, false. + + + + + Returns an object for the object. + + + An object for the object. + + + + + Removes the element with the specified key from the object. + + The key of the element to remove. + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Wrapper IDictionaryEnumerator. + + + + + Initializes a new instance of the class. + + The wrapped. + + + + Gets both the key and the value of the current dictionary entry. + + + + A containing both the key and the value of the current dictionary entry. + + + + + Gets the key of the current dictionary entry. + + + + The key of the current element of the enumeration. + + + + + Gets the value of the current dictionary entry. + + + + The value of the current element of the enumeration. + + + + + Gets the current element in the collection. + + + + The current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + + True if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Ensures that IDictionary.GetEnumerator returns DictionaryEntry values + + + + + UTF-8 BOM 239, 187, 191 + + + + + Safe way to get environment variables. + + + + + Helper class for dealing with exceptions. + + + + + Mark this exception as logged to the . + + + + + + + Is this exception logged to the ? + + + trueif the has been logged to the . + + + + Determines whether the exception must be rethrown and logs the error to the if is false. + + Advised to log first the error to the before calling this method. + + The exception to check. + Target context of the exception. + trueif the must be rethrown, false otherwise. + + + + Determines whether the exception must be rethrown immediately, without logging the error to the . + + Only used this method in special cases. + + The exception to check. + trueif the must be rethrown, false otherwise. + + + + Object construction helper. + + + + + Adapter for to + + + + + Initializes a new instance of the class. + + The to wrap. + + + + Creates an AppDomainWrapper for the current + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Interface for fakeable the current . Not fully implemented, please methods/properties as necessary. + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + Abstract calls for the application environment + + + + + Gets current process name (excluding filename extension, if any). + + + + + Abstract calls to FileSystem + + + + Determines whether the specified file exists. + The file to check. + + + Returns the content of the specified file + The file to load. + + + + Base class for optimized file appenders. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Gets the path of the file, including file extension. + + The name of the file. + + + + Gets or sets the creation time for a file associated with the appender. The time returned is in Coordinated + Universal Time [UTC] standard. + + The creation time of the file. + + + + Gets or sets the creation time for a file associated with the appender. Synchronized by + The time format is based on + + + + + Gets the last time the file associated with the appender is opened. The time returned is in Coordinated + Universal Time [UTC] standard. + + The time the file was last opened. + + + + Gets the file creation parameters. + + The file creation parameters. + + + + Writes the specified bytes. + + The bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Creates the file stream. + + If set to true sets the file stream to allow shared writing. + If larger than 0 then it will be used instead of the default BufferSize for the FileStream. + A object which can be used to write to the file. + + + + Base class for optimized file appenders which require the usage of a mutex. + + It is possible to use this class as replacement of BaseFileAppender and the mutex functionality + is not enforced to the implementing subclasses. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Gets the mutually-exclusive lock for archiving files. + + The mutex for archiving. + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Creates a mutex that is sharable by more than one process. + + The prefix to use for the name of the mutex. + A object which is sharable by multiple processes. + + + + Implementation of which caches + file information. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Closes this instance of the appender. + + + + + Flushes this current appender. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Writes the specified bytes to a file. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Factory class which creates objects. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Maintains a collection of file appenders usually associated with file targets. + + + + + An "empty" instance of the class with zero size and empty list of appenders. + + + + + Initializes a new "empty" instance of the class with zero size and empty + list of appenders. + + + + + Initializes a new instance of the class. + + + The size of the list should be positive. No validations are performed during initialization as it is an + internal class. + + Total number of appenders allowed in list. + Factory used to create each appender. + Parameters used for creating a file. + + + + The archive file path pattern that is used to detect when archiving occurs. + + + + + Invalidates appenders for all files that were archived. + + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + Interface that provides parameters for create file function. + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + Gets or sets the log file buffer size in bytes. + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + Gets or sets the file attributes (Windows only). + + + + + Should archive mutex be created? + + + + + Should manual simple detection of file deletion be enabled? + + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + The archive file path pattern that is used to detect when archiving occurs. + + + + + Invalidates appenders for all files that were archived. + + + + + Interface implemented by all factories capable of creating file appenders. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + Instance of which can be used to write to the file. + + + + Provides a multi process-safe atomic file appends while + keeping the files open. + + + On Unix you can get all the appends to be atomic, even when multiple + processes are trying to write to the same file, because setting the file + pointer to the end of the file and appending can be made one operation. + On Win32 we need to maintain some synchronization between processes + (global named mutex is used for this) + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Closes this instance. + + + + + Flushes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Appender used to discard data for the FileTarget. + Used mostly for testing entire stack except the actual writing to disk. + Throws away all data. + + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Multi-process and multi-host file appender which attempts + to get exclusive write access and retries if it's not available. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Optimized single-process file appender which keeps the file open for exclusive write. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Provides a multi process-safe atomic file append while + keeping the files open. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Creates or opens a file in a special mode, so that writes are automatically + as atomic writes at the file end. + See also "UnixMultiProcessFileAppender" which does a similar job on *nix platforms. + + File to create or open + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Closes this instance. + + + + + Flushes this instance. + + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + A layout that represents a filePath. + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Cached invalid file names char array to avoid memory allocation every time Path.GetInvalidFileNameChars() is called. + + + + + not null when == false + + + + + non null is fixed, + + + + + is the cache-key, and when newly rendered filename matches the cache-key, + then it reuses the cleaned cache-value . + + + + + is the cache-value that is reused, when the newly rendered filename + matches the cache-key + + + + Initializes a new instance of the class. + + + + Render the raw filename from Layout + + The log event. + StringBuilder to minimize allocations [optional]. + String representation of a layout. + + + + Convert the raw filename to a correct filename + + The filename generated by Layout. + String representation of a correct filename. + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Convert object to string + + value + format for conversion. + + + If is null and isn't a already, then the will get a locked by + + + + + Interface for the wrapper around System.Configuration.ConfigurationManager. + + + + + Gets the wrapper around ConfigurationManager.AppSettings. + + + + + Format a log message + + + + + Format the message and return + + LogEvent with message to be formatted + formatted message + + + + Has the logevent properties? + + LogEvent with message to be formatted + False when logevent has no properties to be extracted + + + + Appends the logevent message to the provided StringBuilder + + LogEvent with message to be formatted + The to append the formatted message. + + + + Get the Raw, unformatted and unstrinyfied, value + + + + + Get the raw value + + + The value + RawValue supported? + + + + Interface implemented by layouts and layout renderers. + + + + + Renders the the value of layout or layout renderer in the context of the specified log event. + + The log event. + String representation of a layout. + + + + Supports mocking of SMTP Client code. + + + + + Specifies how outgoing email messages will be handled. + + + + + Gets or sets the name or IP address of the host used for SMTP transactions. + + + + + Gets or sets the port used for SMTP transactions. + + + + + Gets or sets a value that specifies the amount of time after which a synchronous Send call times out. + + + + + Gets or sets the credentials used to authenticate the sender. + + + + + Sends an e-mail message to an SMTP server for delivery. These methods block while the message is being transmitted. + + + System.Net.Mail.MailMessage + MailMessage + A MailMessage that contains the message to send. + + + + Gets or sets the folder where applications save mail messages to be processed by the local SMTP server. + + + + + Supports rendering as string value with limited or no allocations (preferred) + + + + + Renders the value of layout renderer in the context of the specified log event + + + null if not possible or unknown + + + + Supports object initialization and termination. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Render the event info as parse as short + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as int + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as bool + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Logger configuration. + + + + + Initializes a new instance of the class. + + The targets by level. + Use the old exception log handling of NLog 3.0? + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete before NLog 4.3.11 and it will be removed in NLog 5. + + + + Gets targets for the specified level. + + The level. + Chain of targets with attached filters. + + + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + New formatter + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + The MessageFormatter delegate + + + + + + + + Most-Recently-Used-Cache, that discards less frequently used items on overflow + + + + + Constructor + + Maximum number of items the cache will hold before discarding. + + + + Attempt to insert item into cache. + + Key of the item to be inserted in the cache. + Value of the item to be inserted in the cache. + true when the key does not already exist in the cache, false otherwise. + + + + Lookup existing item in cache. + + Key of the item to be searched in the cache. + Output value of the item found in the cache. + True when the key is found in the cache, false otherwise. + + + + Watches multiple files at the same time and raises an event whenever + a single change is detected in any of those files. + + + + + The types of changes to watch for. + + + + + Occurs when a change is detected in one of the monitored files. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Stops watching all files. + + + + + Stops watching the specified file. + + + + + + Watches the specified files for changes. + + The file names. + + + + Supports mocking of SMTP Client code. + + + Disabled Error CS0618 'SmtpClient' is obsolete: 'SmtpClient and its network of types are poorly designed, + we strongly recommend you use https://github.com/jstedfast/MailKit and https://github.com/jstedfast/MimeKit instead' + + + + + Network sender which uses HTTP or HTTPS POST. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Creates instances of objects for given URLs. + + + + + Creates a new instance of the network sender based on a network URL. + + URL that determines the network sender to be created. + The maximum queue size. + SSL protocols for TCP + KeepAliveTime for TCP + + A newly created network sender. + + + + + Interface for mocking socket calls. + + + + + A base class for all network senders. Supports one-way sending of messages + over various protocols. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Gets the address of the network endpoint. + + + + + Gets the last send time. + + + + + Initializes this network sender. + + + + + Closes the sender and releases any unmanaged resources. + + The continuation. + + + + Flushes any pending messages and invokes a continuation. + + The continuation. + + + + Send the given text over the specified protocol. + + Bytes to be sent. + Offset in buffer. + Number of bytes to send. + The asynchronous continuation. + + + + Closes the sender and releases any unmanaged resources. + + + + + Performs sender-specific initialization. + + + + + Performs sender-specific close operation. + + The continuation. + + + + Performs sender-specific flush. + + The continuation. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Parses the URI into an endpoint address. + + The URI to parse. + The address family. + Parsed endpoint. + + + + Default implementation of . + + + + + + + + A base class for network senders that can block or send out-of-order + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Performs sender-specific flush. + + The continuation. + + + + Socket proxy for mocking Socket code. + + + + + Initializes a new instance of the class. + + The address family. + Type of the socket. + Type of the protocol. + + + + Gets underlying socket instance. + + + + + Closes the wrapped socket. + + + + + Invokes ConnectAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendToAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Sends messages over a TCP network connection. + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + The address family. + + + + Creates the socket with given parameters. + + The host address. + The address family. + Type of the socket. + Type of the protocol. + Instance of which represents the socket. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Facilitates mocking of class. + + + + + Raises the Completed event. + + + + + Sends messages over the network as UDP datagrams. + + + + + Initializes a new instance of the class. + + URL. Must start with udp://. + The address family. + + + + Creates the socket. + + The address family. + Type of the socket. + Type of the protocol. + Implementation of to use. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Sends the specified text as a UDP datagram. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Scans (breadth-first) the object graph following all the edges whose are + instances have attached and returns + all objects implementing a specified interfaces. + + + + + Finds the objects which have attached which are reachable + from any of the given root objects when traversing the object graph over public properties. + + Type of the objects to return. + Also search the properties of the wanted objects. + The root objects. + Ordered list of objects implementing T. + + + ISet is not there in .net35, so using HashSet + + + + Helper for extracting propertyPath + + + + + Object Path to check + + + + + Try get value from , using , and set into + + + + + + + + Converts object into a List of property-names and -values using reflection + + + + + Scans properties for name (Skips string-compare and value-lookup until finding match) + + + + + Scans properties for name (Skips property value lookup until finding match) + + + + + Scans properties for name + + + + + Binder for retrieving value of + + + + + + + + Combine paths + + basepath, not null + optional dir + optional file + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Trims directory separators from the path + + path, could be null + never null + + + + Detects the platform the NLog is running on. + + + + + Gets the current runtime OS. + + + + + Gets a value indicating whether current OS is Win32-based (desktop or mobile). + + + + + Gets a value indicating whether current OS is Unix-based. + + + + + Gets a value indicating whether current runtime is Mono-based + + + + + Gets a value indicating whether current runtime supports use of mutex + + + + + Will creating a mutex succeed runtime? + "Cached" detection + + + + + Will creating a mutex succeed runtime? + + + + + Dictionary that combines the standard with the + MessageTemplate-properties extracted from the . + + The are returned as the first items + in the collection, and in positional order. + + + + + Value of the property + + + + + Is this a property of the message? + + + + + + + Value of the property + Is this a property of the message? + + + + The properties of the logEvent + + + + + The properties extracted from the message + + + + + Injects the list of message-template-parameter into the IDictionary-interface + + Message-template-parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check if the message-template-parameters can be used directly without allocating a dictionary + + Message-template-parameters + Are all parameter names unique (true / false) + + + + Attempt to insert the message-template-parameters into an empty dictionary + + Message-template-parameters + The initially empty dictionary + Message-template-parameters was inserted into dictionary without trouble (true/false) + + + + Attempt to override the existing dictionary values using the message-template-parameters + + Message-template-parameters + The already filled dictionary + List of unique message-template-parameters + + + + + + + + + + + + + + + + + + + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + + + + + + + + + + + + + + + + + Reflection helpers for accessing properties. + + + + + Set value parsed from string. + + object instance to set with property + name of the property on + The value to be parsed. + + + + + Get property info + + object which could have property + property name on + result when success. + success. + + + + Try parse of string to (Generic) list, comma separated. + + + If there is a comma in the value, then (single) quote the value. For single quotes, use the backslash as escape + + + + + Attempt to reuse the HashSet.Comparer from the original HashSet-object (Ex. StringComparer.OrdinalIgnoreCase) + + + + + Try get the property + + + + + Reflection helpers. + + + + + Gets all usable exported types from the given assembly. + + Assembly to scan. + Usable types from the given assembly. + Types which cannot be loaded are skipped. + + + + Is this a static class? + + + + This is a work around, as Type doesn't have this property. + From: https://stackoverflow.com/questions/1175888/determine-if-a-type-is-static + + + + + Optimized delegate for calling MethodInfo + + Object instance, use null for static methods. + Complete list of parameters that matches the method, including optional/default parameters. + + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Controls a single allocated AsyncLogEventInfo-List for reuse (only one active user) + + + + + Controls a single allocated char[]-buffer for reuse (only one active user) + + + + + Controls a single allocated StringBuilder for reuse (only one active user) + + + + + Controls a single allocated object for reuse (only one active user) + + + + Empty handle when is disabled + + + + Creates handle to the reusable char[]-buffer for active usage + + Handle to the reusable item, that can release it again + + + + Access the acquired reusable object + + + + + Controls a single allocated MemoryStream for reuse (only one active user) + + + + + Supported operating systems. + + + If you add anything here, make sure to add the appropriate detection + code to + + + + + Unknown operating system. + + + + + Unix/Linux operating systems. + + + + + Desktop versions of Windows (95,98,ME). + + + + + Windows NT, 2000, 2003 and future versions based on NT technology. + + + + + Macintosh Mac OSX + + + + + Simple character tokenizer. + + + + + Initializes a new instance of the class. + + The text to be tokenized. + + + + Current position in + + + + + Full text to be parsed + + + + + Check current char while not changing the position. + + + + + + Read the current char and change position + + + + + + Get the substring of the + + + + + + + + Implements a single-call guard around given continuation function. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + + + + Continuation function which implements the single-call guard. + + The exception. + + + + HashSet optimized for single item + + + + + + Insert single item on scope start, and remove on scope exit + + Item to insert in scope + Existing hashset to update + Force allocation of real hashset-container + HashSet EqualityComparer + + + + Add item to collection, if it not already exists + + Item to insert + + + + Clear hashset + + + + + Check if hashset contains item + + + Item exists in hashset (true/false) + + + + Remove item from hashset + + + Item removed from hashset (true/false) + + + + Copy items in hashset to array + + Destination array + Array offset + + + + Create hashset enumerator + + Enumerator + + + + Provides helpers to sort log events and associated continuations. + + + + + Key selector delegate. + + The type of the value. + The type of the key. + Value to extract key information from. + Key selected from log event. + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + The key comparer function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Single-Bucket optimized readonly dictionary. Uses normal internally Dictionary if multiple buckets are needed. + + Avoids allocating a new dictionary, when all items are using the same bucket + + The type of the key. + The type of the value. + + + + + + + + + + + + + + + + Allows direct lookup of existing keys. If trying to access non-existing key exception is thrown. + Consider to use instead for better safety. + + Key value for lookup + Mapped value found + + + + Non-Allocating struct-enumerator + + + + + + + + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + + + + Will always throw, as dictionary is readonly + + + + Utilities for dealing with values. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + StackFrame from the calling method + Fully qualified class name + + + + Returns the assembly from the provided StackFrame (If not internal assembly) + + Valid assembly, or null if assembly was internal + + + + Returns the classname from the provided StackFrame (If not from internal assembly) + + + Valid class name, or empty string if assembly was internal + + + + Stream helpers + + + + + Copy to output stream and skip BOM if encoding is UTF8 + + + + + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + .net35 doesn't have a .copyto + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + first bytes to skip (optional) + + + + Helpers for , which is used in e.g. layout renderers. + + + + + Renders the specified log event context item and appends it to the specified . + + append to this + value to be appended + format string. If @, then serialize the value with the Default JsonConverter. + provider, for example culture + + + + Appends int without using culture, and most importantly without garbage + + + value to append + + + + Appends uint without using culture, and most importantly without garbage + + Credits Gavin Pugh - https://www.gavpugh.com/2010/04/01/xnac-avoiding-garbage-when-working-with-stringbuilder/ + + + value to append + + + + Convert DateTime into UTC and format to yyyy-MM-ddTHH:mm:ss.fffffffZ - ISO 6801 date (Round-Trip-Time) + + + + + Clears the provider StringBuilder + + + + + + Copies the contents of the StringBuilder to the MemoryStream using the specified encoding (Without BOM/Preamble) + + StringBuilder source + MemoryStream destination + Encoding used for converter string into byte-stream + Helper char-buffer to minimize memory allocations + + + + Copies the contents of the StringBuilder to the destination StringBuilder + + StringBuilder source + StringBuilder destination + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle character to search for + + Index of the first occurrence (Else -1) + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle characters to search for + + Index of the first occurrence (Else -1) + + + + Compares the contents of two StringBuilders + + + Correct implementation of that also works when is not the same + + True when content is the same + + + + Compares the contents of a StringBuilder and a String + + True when content is the same + + + + Append a number and pad with 0 to 2 digits + + append to this + the number + + + + Append a number and pad with 0 to 4 digits + + append to this + the number + + + + Append a int type (byte, int) as string + + + + + Constructor + + Max number of items + Initial StringBuilder Size + Max StringBuilder Size + + + + Takes StringBuilder from pool + + Allow return to pool + + + + Releases StringBuilder back to pool at its right place + + + + + Keeps track of acquired pool item + + + + + Releases pool item back into pool + + + + + Helpers for . + + + + + IsNullOrWhiteSpace, including for .NET 3.5 + + + + + + + Split a string + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Represents target with a chain of filters which determine + whether logging should happen. + + + + + cached result as calculating is expensive. + + + + + Initializes a new instance of the class. + + The target. + The filter chain. + Default action if none of the filters match. + + + + Gets the target. + + The target. + + + + Gets the filter chain. + + The filter chain. + + + + Default action if none of the filters match. + + + + + Gets or sets the next item in the chain. + + The next item in the chain. + This is for example the 'target2' logger in writeTo='target1,target2' + + + + Gets the stack trace usage. + + A value that determines stack trace handling. + + + + Helper for dealing with thread-local storage. + + + + + Allocates the data slot for storing thread-local information. + + Allocated slot key. + + + + Gets the data for a slot in thread-local storage. + + Type of the data. + The slot to get data for. + Automatically create the object if it doesn't exist. + + Slot data (will create T if null). + + + + + Wraps with a timeout. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + The timeout. + + + + Continuation function which implements the timeout logic. + + The exception. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Transformation on a layout. Pre-calculated if the layout has a fixed value. + + + + + Create TransformedLayout. + + Layout + Transformation method + Optional renderer, otherwise is used + + + + + + + Create TransformedLayout. If is null, then the returns null + + Layout + Transformation method + Optional renderer, otherwise is used + null if is null + + + + + + + + + + URL Encoding helper. + + + + Allow UnreservedMarks instead of ReservedMarks, as specified by chosen RFC + + + Use RFC2396 standard (instead of RFC3986) + + + Should use lowercase when doing HEX escaping of special characters + + + Replace space ' ' with '+' instead of '%20' + + + Skip UTF8 encoding, and prefix special characters with '%u' + + + + Escape unicode string data for use in http-requests + + unicode string-data to be encoded + target for the encoded result + s for how to perform the encoding + + + + Convert the wide-char into utf8-bytes, and then escape + + + + + + + + + Is allowed? + + + + + + + + Is a-z / A-Z / 0-9 + + + + + + + Prevents the Xamarin linker from linking the target. + + + By applying this attribute all of the members of the target will be kept as if they had been referenced by the code. + + + + + Ensures that all members of this type are preserved + + + + + Flags the method as a method to preserve during linking if the container class is pulled in. + + + + + Helper class for XML + + + + + removes any unusual unicode characters that can't be encoded into XML + + + + + Cleans string of any invalid XML chars found + + unclean string + string with only valid XML chars + + + + Pretest, small text and not escape needed + + + + + + + + Converts object value to invariant format, and strips any invalid xml-characters + + Object value + Object value converted to string + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object value converted to string + + + + XML elements must follow these naming rules: + - Element names are case-sensitive + - Element names must start with a letter or underscore + - Element names can contain letters, digits, hyphens, underscores, and periods + - Element names cannot contain spaces + + + + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object TypeCode + Check and remove unusual unicode characters from the result string. + Object value converted to string + + + + Safe version of WriteAttributeString + + + + + + + + + + Safe version of WriteAttributeString + + + + + + + + Safe version of WriteElementSafeString + + + + + + + + + + Safe version of WriteCData + + + + + + + Interface for handling object transformation + + + + + Takes a dangerous (or massive) object and converts into a safe (or reduced) object + + + Null if unknown object, or object cannot be handled + + + + + Provides an interface to execute System.Actions without surfacing any exceptions raised for that action. + + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Render a message template property to a string + + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Log event context data. + + + + + Initializes a new instance of the class. + + + + + Gets or sets string that will be used to separate key/value pairs. + + + + + + Get or set if empty values should be included. + + A value is empty when null or in case of a string, null or empty string. + + + + + + Gets or sets the keys to exclude from the output. If omitted, none are excluded. + + + + + + Gets or sets how key/value pairs will be formatted. + + + + + + Renders all log event's properties and appends them to the specified . + + The to append the rendered data to. + Logging event. + + + + Designates a property of the class as an ambient property. + + + non-ambient: ${uppercase:${level}} + ambient : ${level:uppercase} + + + + + Initializes a new instance of the class. + + Ambient property name. + + + + Used to render the application domain name. + + + + + Create a new renderer + + + + + Create a new renderer + + + + + Format string. Possible values: "Short", "Long" or custom like {0} {1}. Default "Long" + The first parameter is the , the second the second the + This string is used in + + + + + + + + + + + + + + + Application setting. + + + Use this layout renderer to insert the value of an application setting + stored in the application's App.config or Web.config file. + + + ${appsetting:item=mysetting:default=mydefault} - produces "mydefault" if no appsetting + + + + + The AppSetting item-name + + + + + + The AppSetting item-name + + + + + The default value to render if the AppSetting value is null. + + + + + + + + + Renders the specified application setting or default value and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Renders the assembly version information for the entry assembly or a named assembly. + + + As this layout renderer uses reflection and version information is unlikely to change during application execution, + it is recommended to use it in conjunction with the . + + + The entry assembly can't be found in some cases e.g. ASP.NET, unit tests, etc. + + + + + Initializes a new instance of the class. + + + + + The (full) name of the assembly. If null, using the entry assembly. + + + + + + Gets or sets the type of assembly version to retrieve. + + + Some version type and platform combinations are not fully supported. + - UWP earlier than .NET Standard 1.5: Value for is always returned unless the parameter is specified. + - Silverlight: Value for is always returned. + + + + + + Gets or sets the custom format of the assembly version output. + + + Supported placeholders are 'major', 'minor', 'build' and 'revision'. + The default .NET template for version numbers is 'major.minor.build.revision'. See + https://docs.microsoft.com/en-gb/dotnet/api/system.version?view=netframework-4.7.2#remarks + for details. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders an assembly version and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets the assembly specified by , or entry assembly otherwise + + Found assembly + + + + Type of assembly version to retrieve. + + + + + Gets the assembly version. + + + + + Gets the file version. + + + + + Gets additional version information. + + + + + The current application domain's base directory. + + + + + cached + + + + + Use base dir of current process. Alternative one can just use ${processdir} + + + + + + Fallback to the base dir of current process, when AppDomain.BaseDirectory is Temp-Path (.NET Core 3 - Single File Publish) + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the base directory. + + + + + + Renders the application base directory and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site source file name. Full callsite + + + + + Gets or sets a value indicating whether to include source file path. + + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + + + + + + The call site (class name, method name and source information). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to render the class name. + + + + + + Gets or sets a value indicating whether to render the include the namespace with . + + + + + + Gets or sets a value indicating whether to render the method name. + + + + + + Gets or sets a value indicating whether the method name will be cleaned up if it is detected as an anonymous delegate. + + + + + + Gets or sets a value indicating whether the method and class names will be cleaned up if it is detected as an async continuation + (everything after an await-statement inside of an async method). + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets a value indicating whether to render the source file name and line number. + + + + + + Gets or sets a value indicating whether to include source file path. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site source line number. Full callsite + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + + + + + + A counter value (increases on each layout rendering). + + + + + Gets or sets the initial value of the counter. + + + + + + Gets or sets the value to be added to the counter after each layout rendering. + + + + + + Gets or sets the name of the sequence. Different named sequences can have individual values. + + + + + + + + + The current working directory of the application. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the current directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the current directory. + + + + + + + + + + + + Current date and time. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the date format. Can be any argument accepted by DateTime.ToString(format). + + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + + + + + + + + + + DB null for a database + + + + + + + + + + + The OS dependent directory separator + + + + + + + + + + + The environment variable. + + + + + Gets or sets the name of the environment variable. + + + + + + Gets or sets the default value to be used when the environment variable is not set. + + + + + + + + + + + + Thread identity information (username). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether username should be included. + + + + + + Gets or sets a value indicating whether domain name should be included. + + + + + + Gets or sets the default value to be used when the User is not set. + + + + + + Gets or sets the default value to be used when the Domain is not set. + + + + + + + + + + + + Log event context data. + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the name of the item. + + + + + + Renders the specified log event context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Log event context data. See . + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + + + + + + + + + + Exception information provided through + a call to one of the Logger.*Exception() methods. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the format of the output. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + + + Gets or sets the format of the output of inner exceptions. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + Gets or sets the separator used to concatenate parts specified in the Format. + + + + + + Gets or sets the separator used to concatenate exception data specified in the Format. + + + + + + Gets or sets the maximum number of inner exceptions to include in the output. + By default inner exceptions are not enabled for compatibility with NLog 1.0. + + + + + + Gets or sets the separator between inner exceptions. + + + + + + Gets or sets whether to render innermost Exception from + + + + + Gets the formats of the output of inner exceptions to be rendered in target. + + + + + + + Gets the formats of the output to be rendered in target. + + + + + + + + + + + + + Appends the Message of an Exception to the specified . + + The to append the rendered data to. + The exception containing the Message to append. + + + + Appends the method name from Exception's stack trace to the specified . + + The to append the rendered data to. + The Exception whose method name should be appended. + + + + Appends the stack trace from an Exception to the specified . + + The to append the rendered data to. + The Exception whose stack trace should be appended. + + + + Appends the result of calling ToString() on an Exception to the specified . + + The to append the rendered data to. + The Exception whose call to ToString() should be appended. + + + + Appends the type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose type should be appended. + + + + Appends the short type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose short type should be appended. + + + + Appends the application source of an Exception to the specified . + + The to append the rendered data to. + The Exception whose source should be appended. + + + + Appends the HResult of an Exception to the specified . + + The to append the rendered data to. + The Exception whose HResult should be appended. + + + + Appends the contents of an Exception's Data property to the specified . + + The to append the rendered data to. + The Exception whose Data property elements should be appended. + + + + Appends all the serialized properties of an Exception into the specified . + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Appends all the additional properties of an Exception like Data key-value-pairs + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Split the string and then compile into list of Rendering formats. + + + + + Renders contents of the specified file. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file. + + + + + + Gets or sets the encoding used in the file. + + The encoding. + + + + + Renders the contents of the specified file and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + Name used in config without ${}. E.g. "test" could be used as "${test}". + + + + + Method that renders the layout. + + + + + Format string for conversion from object to string. + + + + + + + + + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + The information about the garbage collector. + + + + + Gets or sets the property to retrieve. + + + + + + + + + Gets or sets the property of System.GC to retrieve. + + + + + Total memory allocated. + + + + + Total memory allocated (perform full garbage collection first). + + + + + Gets the number of Gen0 collections. + + + + + Gets the number of Gen1 collections. + + + + + Gets the number of Gen2 collections. + + + + + Maximum generation number supported by GC. + + + + + Render a Global Diagnostics Context item. See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + + + + Globally-unique identifier (GUID). + + + + + Gets or sets the GUID format as accepted by Guid.ToString() method. + + + + + + Generate the Guid from the NLog LogEvent (Will be the same for all targets) + + + + + + + + + + + + + + + The host name that the process is running on. + + + + + + + + Gets the host name and falls back to computer name if not available + + + + + Tries the lookup value. + + The lookup function. + Type of the lookup. + + + + + + + + Thread identity information (name and authentication information). + + + + + Gets or sets the separator to be used when concatenating + parts of identity information. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.Name. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.AuthenticationType. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.IsAuthenticated. + + + + + + + + + Retrieve network interfaces + + + + + Retrieve network interfaces + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Gets or sets the name of the parameter. + + + + + + Renders the specified installation parameter and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render environmental information related to logging events. + + + + + Gets the logging configuration this target is part of. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Renders the the value of layout renderer in the context of the specified log event. + + The log event. + String representation of a layout renderer. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Renders the value of layout renderer in the context of the specified log event. + + The log event. + The layout render output is appended to builder + + + + Renders the value of layout renderer in the context of the specified log event into . + + The to append the rendered data to. + Logging event. + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Get the for rendering the messages to a + + LogEvent with culture + Culture in on Layout level + + + + + Get the for rendering the messages to a , needed for date and number formats + + LogEvent with culture + Culture in on Layout level + + + is preferred + + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Marks class as a layout renderer and assigns a name to it. + + This attribute is not required when registering the layout in the API. + + + + Initializes a new instance of the class. + + Name of the layout renderer, without the `${ }` + + + + Format of the ${level} layout renderer output. + + + + + Render the LogLevel standard name. + + + + + Render the first character of the level. + + + + + Render the ordinal (aka number) for the level. + + + + + Render the LogLevel full name, expanding Warn / Info abbreviations + + + + + The log level. + + + + + Gets or sets a value indicating the output format of the level. + + + + + + + + + + + + + + + A string literal. + + + This is used to escape '${' sequence + as ;${literal:text=${}' + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The literal text value. + This is used by the layout compiler. + + + + Gets or sets the literal text. + + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The IP address from the network interface card (NIC) on the local machine + + + Skips loopback-adapters and tunnel-interfaces. Skips devices without any MAC-address + + + + + Get or set whether to prioritize IPv6 or IPv4 (default) + + + + + + + + + + + + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes the layout renderer. + + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets a value indicating whether the XML should use spaces for indentation. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDLC item separator. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the XML logging event and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The logger name. + + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + + + + + + + The date and time in a long, sortable format yyyy-MM-dd HH:mm:ss.ffff. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the date in the long format (yyyy-MM-dd HH:mm:ss.ffff) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The machine name that the process is running on. + + + + + + + + + + + Render a Mapped Diagnostic Context item, See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + Render a Mapped Diagnostic Logical Context item (based on CallContext). + See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + The formatted log message. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to log exception along with message. + + + + + + Gets or sets the string that separates message from the exception. + + + + + + Gets or sets whether it should render the raw message without formatting parameters + + + + + + + + + + + + Render a Nested Diagnostic Context item. + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested diagnostics context output. + + + + + + Renders the specified Nested Diagnostics Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render a Nested Diagnostic Logical Context item (Async scope) + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested logical context output. + + + + + + Renders the specified Nested Logical Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Timing Renderer (Async scope) + + + + + Gets or sets whether to only include the duration of the last scope created + + + + + + Gets or sets whether to just display the scope creation time, and not the duration + + + + + + Gets or sets the TimeSpan format. Can be any argument accepted by TimeSpan.ToString(format). + + + + + + Renders the timing details of the Nested Logical Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Retrieve network interfaces + + + + + Retrieve network interfaces + + + + + A newline literal. + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The directory where NLog.dll is located. + + + + + Initializes static members of the NLogDirLayoutRenderer class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The performance counter. + + + + + Gets or sets the name of the counter category. + + + + + + Gets or sets the name of the performance counter. + + + + + + Gets or sets the name of the performance counter instance (e.g. this.Global_). + + + + + + Gets or sets the name of the machine to read the performance counter from. + + + + + + Format string for conversion from float to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + If having multiple instances with the same process-name, then they will get different instance names + + + + + The executable directory from the FileName, + using the current process + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the process directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the process directory. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + The identifier of the current process. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + + + + The information about the running process. + + + + + Gets or sets the property to retrieve. + + + + + + Gets or sets the format-string to use if the property supports it (Ex. DateTime / TimeSpan / Enum) + + + + + + + + + + + + + + + Property of System.Diagnostics.Process to retrieve. + + + + + Base Priority. + + + + + Exit Code. + + + + + Exit Time. + + + + + Process Handle. + + + + + Handle Count. + + + + + Whether process has exited. + + + + + Process ID. + + + + + Machine name. + + + + + Handle of the main window. + + + + + Title of the main window. + + + + + Maximum Working Set. + + + + + Minimum Working Set. + + + + + Non-paged System Memory Size. + + + + + Non-paged System Memory Size (64-bit). + + + + + Paged Memory Size. + + + + + Paged Memory Size (64-bit).. + + + + + Paged System Memory Size. + + + + + Paged System Memory Size (64-bit). + + + + + Peak Paged Memory Size. + + + + + Peak Paged Memory Size (64-bit). + + + + + Peak Virtual Memory Size. + + + + + Peak Virtual Memory Size (64-bit).. + + + + + Peak Working Set Size. + + + + + Peak Working Set Size (64-bit). + + + + + Whether priority boost is enabled. + + + + + Priority Class. + + + + + Private Memory Size. + + + + + Private Memory Size (64-bit). + + + + + Privileged Processor Time. + + + + + Process Name. + + + + + Whether process is responding. + + + + + Session ID. + + + + + Process Start Time. + + + + + Total Processor Time. + + + + + User Processor Time. + + + + + Virtual Memory Size. + + + + + Virtual Memory Size (64-bit). + + + + + Working Set Size. + + + + + Working Set Size (64-bit). + + + + + The name of the current process. + + + + + Gets or sets a value indicating whether to write the full path to the process executable. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Renders the current process name (optionally with a full path). + + The to append the rendered data to. + Logging event. + + + + The process time in format HH:mm:ss.mmm. + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + Write timestamp to builder with format hh:mm:ss:fff + + + + + High precision timer, based on the value returned from QueryPerformanceCounter() optionally converted to seconds. + + + + + Gets or sets a value indicating whether to normalize the result by subtracting + it from the result of the first call (so that it's effectively zero-based). + + + + + + Gets or sets a value indicating whether to output the difference between the result + of QueryPerformanceCounter and the previous one. + + + + + + Gets or sets a value indicating whether to convert the result to seconds by dividing + by the result of QueryPerformanceFrequency(). + + + + + + Gets or sets the number of decimal digits to be included in output. + + + + + + Gets or sets a value indicating whether to align decimal point (emit non-significant zeros). + + + + + + + + + + + + A value from the Registry. + + + + + Create new renderer + + + + + Gets or sets the registry value name. + + + + + + Gets or sets the value to be output when the specified registry key or value is not found. + + + + + + Require escaping backward slashes in . Need to be backwards-compatible. + + When true: + + `\` in value should be configured as `\\` + `\\` in value should be configured as `\\\\`. + + Default value wasn't a Layout before and needed an escape of the slash + + + + + Gets or sets the registry view (see: https://msdn.microsoft.com/de-de/library/microsoft.win32.registryview.aspx). + Allowed values: Registry32, Registry64, Default + + + + + + Gets or sets the registry key. + + + HKCU\Software\NLogTest + + + Possible keys: +
    +
  • HKEY_LOCAL_MACHINE
  • +
  • HKLM
  • +
  • HKEY_CURRENT_USER
  • +
  • HKCU
  • +
  • HKEY_CLASSES_ROOT
  • +
  • HKEY_USERS
  • +
  • HKEY_CURRENT_CONFIG
  • +
  • HKEY_DYN_DATA
  • +
  • HKEY_PERFORMANCE_DATA
  • +
+
+ +
+ + + Reads the specified registry key and value and appends it to + the passed . + + The to append the rendered data to. + Logging event. Ignored. + + + + Has ? + + + + + Parse key to and subkey. + + full registry key name + Result of parsing, never null. + + + + Aliases for the hives. See https://msdn.microsoft.com/en-us/library/ctb3kd86(v=vs.110).aspx + + + + + The sequence ID + + + + + + + + + + + The short date in a sortable format yyyy-MM-dd. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the current short date string (yyyy-MM-dd) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + System special folder path (includes My Documents, My Music, Program Files, Desktop, and more). + + + + + Gets or sets the system special folder to use. + + + Full list of options is available at MSDN. + The most common ones are: +
    +
  • ApplicationData - roaming application data for current user.
  • +
  • CommonApplicationData - application data for all users.
  • +
  • MyDocuments - My Documents
  • +
  • DesktopDirectory - Desktop directory
  • +
  • LocalApplicationData - non roaming application data
  • +
  • Personal - user profile directory
  • +
  • System - System directory
  • +
+
+ +
+ + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Format of the ${stacktrace} layout renderer output. + + + + + Raw format (multiline - as returned by StackFrame.ToString() method). + + + + + Flat format (class and method names displayed in a single line). + + + + + Detailed flat format (method signatures displayed in a single line). + + + + + Stack trace renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the output format of the stack trace. + + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets the stack frame separator string. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A temporary directory. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The identifier of the current thread. + + + + + + + + The name of the current thread. + + + + + + + + The Ticks value of current date and time. + + + + + + + + + + + The time in a 24-hour, sortable format HH:mm:ss.mmmm. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + A renderer that puts into log a System.Diagnostics trace correlation id. + + + + + + + + + + + Render a NLog variable (xml or config) + + + + + Gets or sets the name of the NLog variable. + + + + + + Gets or sets the default value to be used when the variable is not set. + + Not used if Name is null + + + + + Initializes the layout renderer. + + + + + Try get the + + + + + + + Renders the specified variable and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Thread Windows identity information (username). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether domain name should be included. + + + + + + Gets or sets a value indicating whether username should be included. + + + + + + Renders the current thread windows identity information and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Applies caching to another layout output. + + + The value of the inner layout will be rendered only once and reused subsequently. + + + + + A value indicating when the cache is cleared. + + + + Never clear the cache. + + + Clear the cache whenever the is initialized. + + + Clear the cache whenever the is closed. + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether this is enabled. + + + + + + Gets or sets a value indicating when the cache is cleared. + + + + + + Cachekey. If the cachekey changes, resets the value. For example, the cachekey would be the current day.s + + + + + + Gets or sets a value indicating how many seconds the value should stay cached until it expires + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + + + + Filters characters not allowed in the file names by replacing them with safe character. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to modify the output of this renderer so it can be used as a part of file path + (illegal characters are replaced with '_'). + + + + + + + + + + + + Escapes output of another layout using JSON rules. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply JSON encoding. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + + + + + + + Left part of a text + + + + + Gets or sets the length in characters. + + + + + + Same as -property, so it can be used as ambient property. + + + ${message:truncate=80} + + + + + + + + + + + + Converts the result of another layout output to lower case. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Render the non-raw value of an object. + + For performance and/or full (formatted) control of the output. + + + + Gets or sets a value indicating whether to disable the IRawValue-interface + + A value of true if IRawValue-interface should be ignored; otherwise, false. + + + + + + + + + + + Render a single property of a object + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + Shortcut for + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + Only outputs the inner layout when exception has been defined for log message. + + + + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + ${onhasproperties:, Properties\: ${all-event-properties}} + + + + + + + + + + + Horizontal alignment for padding layout renderers. + + + + + When layout text is too long, align it to the left + (remove characters from the right). + + + + + When layout text is too long, align it to the right + (remove characters from the left). + + + + + Applies padding to another layout output. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of characters to pad the output to. + + + Positive padding values cause left padding, negative values + cause right padding to the desired width. + + + + + + Gets or sets the padding character. + + + + + + Gets or sets a value indicating whether to trim the + rendered text to the absolute value of the padding length. + + + + + + Gets or sets a value indicating whether a value that has + been truncated (when is true) + will be left-aligned (characters removed from the right) + or right-aligned (characters removed from the left). The + default is left alignment. + + RegistryLayoutRenderer + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Replaces a string in the output of another layout with another string. + + + ${replace:searchFor=\\n+:replaceWith=-:regex=true:inner=${message}} + + + + + Gets or sets the text to search for. + + The text search for. + + + + + Gets or sets a value indicating whether regular expressions should be used. + + A value of true if regular expressions should be used otherwise, false. + + + + + Gets or sets the replacement string. + + The replacement string. + + + + + Gets or sets the group name to replace when using regular expressions. + Leave null or empty to replace without using group name. + + The group name. + + + + + Gets or sets a value indicating whether to ignore case. + + A value of true if case should be ignored when searching; otherwise, false. + + + + + Gets or sets a value indicating whether to search for whole words. + + A value of true if whole words should be searched for; otherwise, false. + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Initializes the layout renderer. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + This class was created instead of simply using a lambda expression so that the "ThreadAgnosticAttributeTest" will pass + + + + + A match evaluator for Regular Expression based replacing + + Input string. + Group name in the regex. + Replace value. + Match from regex. + Groups replaced with . + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating the string that should be used for separating lines. + + + + + + + + + + + + Right part of a text + + + + + Gets or sets the length in characters. + + + + + + + + + + + + Decodes text "encrypted" with ROT-13. + + + See https://en.wikipedia.org/wiki/ROT13. + + + + + Gets or sets the layout to be wrapped. + + The layout to be wrapped. + This variable is for backwards compatibility + + + + + Encodes/Decodes ROT-13-encoded string. + + The string to be encoded/decoded. + Encoded/Decoded text. + + + + + + + + + + Encodes/Decodes ROT-13-encoded string. + + + + + Substring the result + + + ${substring:${level}:start=2:length=2} + ${substring:${level}:start=-2:length=2} + ${substring:Inner=${level}:start=2:length=2} + + + + + Initializes a new instance of the class. + + + + + Gets or sets the start index. + + Index + + + + + Gets or sets the length in characters. If null, then the whole string + + Index + + + + + + + + + + + Calculate start position + + 0 or positive number + + + + Calculate needed length + + 0 or positive number + + + + Trims the whitespace from the result of another layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + + + + + + + Converts the result of another layout output to upper case. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + ${level:uppercase} // [AmbientProperty] + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether upper case conversion should be applied. + + A value of true if upper case conversion should be applied otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Encodes the result of another layout output for use with URLs. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether spaces should be translated to '+' or '%20'. + + A value of true if space should be translated to '+'; otherwise, false. + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + + + Gets or sets the layout to be rendered when original layout produced empty result. + + + + + + + + + + + + + + + Only outputs the inner layout when the specified condition has been met. + + + + + Gets or sets the condition that must be met for the layout to be printed. + + + + + + If is not met, print this layout. + + + + + + + + + + + + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the line length for wrapping. + + + Only positive values are allowed + + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + Base class for s which wrapping other s. + + This has the property (which is default) and can be used to wrap. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + + + + + Gets or sets the wrapped layout. + + [DefaultParameter] so Inner: is not required if it's the first + + + + + + + + + Renders the inner message, processes it and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Appends the rendered output from -layout and transforms the added output (when necessary) + + Logging event. + The to append the rendered data to. + Start position for any necessary transformation of . + + + + Transforms the output of another layout. + + Logging event. + Output to be transform. + Transformed text. + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + Base class for s which wrapping other s. + + This expects the transformation to work on a + + + + + + + + Transforms the output of another layout. + + + Output to be transform. + + + + Transforms the output of another layout. + + Output to be transform. + + + + Renders the inner layout contents. + + + for the result + + + + + + + + + + + + + + + + + + Converts the result of another layout output to be XML-compliant. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply XML encoding. + + Ensures always valid XML, but gives a performance hit + + + + + Gets or sets a value indicating whether to transform newlines (\r\n) into ( ) + + + + + + + + + + + + A layout containing one or more nested layouts. + + + + + Initializes a new instance of the class. + + + + + Gets the inner layouts. + + + + + + Initializes the layout. + + + + + Formats the log event relying on inner layouts. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event relying on inner layouts. + + The logging event. + for the result + + + + Closes the layout. + + + + + Generate description of Compound Layout + + Compound Layout String Description + + + + A column in the CSV. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the column. + The layout of the column. + + + + Gets or sets the name of the column. + + + + + + Gets or sets the layout of the column. + + + + + + Gets or sets the override of Quoting mode + + + and are faster than the default + + + + + + Specifies allowed column delimiters. + + + + + Automatically detect from regional settings. + + + + + Comma (ASCII 44). + + + + + Semicolon (ASCII 59). + + + + + Tab character (ASCII 9). + + + + + Pipe character (ASCII 124). + + + + + Space character (ASCII 32). + + + + + Custom string, specified by the CustomDelimiter. + + + + + A specialized layout that renders CSV-formatted events. + + If is set, then the header generation with column names will be disabled. + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + Gets or sets a value indicating whether CVS should include header. + + A value of true if CVS should include header; otherwise, false. + + + + + Gets or sets the column delimiter. + + + + + + Gets or sets the quoting mode. + + + + + + Gets or sets the quote Character. + + + + + + Gets or sets the custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). + + + + + + Initializes the layout. + + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event for write. + + The logging event. + for the result + + + + Get the headers with the column names. + + + + + + Header with column names for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Generate description of CSV Layout + + CSV Layout String Description + + + + Specifies CSV quoting modes. + + + + + Quote all column (Fast) + + + + + Quote nothing (Very fast) + + + + + Quote only whose values contain the quote symbol or the separator (Slow) + + + + + JSON attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with json-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Json encoded. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A specialized layout that renders JSON-formatted events. + + + + + Initializes a new instance of the class. + + + + + Gets the array of attributes' configurations. + + + + + + Gets or sets the option to suppress the extra spaces in the output json + + + + + + Gets or sets the option to render the empty object value {} + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as JSON) + + + + + + List of property names to exclude when is true + + + + + + How far should the JSON serializer follow object references before backing off + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Formats the log event as a JSON document for writing. + + The logging event. + for the result + + + + Formats the log event as a JSON document for writing. + + The log event to be formatted. + A JSON string representation of the log event. + + + + Generate description of JSON Layout + + JSON Layout String Description + + + + Abstract interface that layouts must implement. + + + + + Is this layout initialized? See + + + + + Gets a value indicating whether this layout is thread-agnostic (can be rendered on any thread). + + + Layout is thread-agnostic if it has been marked with [ThreadAgnostic] attribute and all its children are + like that as well. + + Thread-agnostic layouts only use contents of for its output. + + + + + Gets the level of stack trace information required for rendering. + + + + + Gets the logging configuration this target is part of. + + + + + Converts a given text to a . + + Text to be converted. + object represented by the text. + + + + Implicitly converts the specified string to a . + + The layout string. + Instance of .' + + + + Implicitly converts the specified string to a . + + The layout string. + The NLog factories to use when resolving layout renderers. + Instance of . + + + + Implicitly converts the specified string to a . + + The layout string. + Whether should be thrown on parse errors (false = replace unrecognized tokens with a space). + Instance of . + + + + Create a from a lambda method. + + Method that renders the layout. + Tell if method is safe for concurrent threading. + Instance of . + + + + Precalculates the layout for the specified log event and stores the result + in per-log event cache. + + Only if the layout doesn't have [ThreadAgnostic] and doesn't contain layouts with [ThreadAgnostic]. + + The log event. + + Calling this method enables you to store the log event in a buffer + and/or potentially evaluate it in another thread even though the + layout may contain thread-dependent renderer. + + + + + Renders the event info in layout. + + The event info. + String representing log event. + + + + Optimized version of for internal Layouts. Works best + when override of is available. + + The event info. + Appends the string representing log event to target + Should rendering result be cached on LogEventInfo + + + + Valid default implementation of , when having implemented the optimized + + The logging event. + StringBuilder to help minimize allocations [optional]. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Optimized version of for internal Layouts, when + override of is available. + + + + + Try get value + + + rawValue if return result is true + false if we could not determine the rawValue + + + + Marks class as a layout renderer and assigns a format string to it. + + + + + Initializes a new instance of the class. + + Layout name. + + + + Parses layout strings. + + + + + Add to + + + + + + + Options available for + + + + + Default options + + + + + Layout renderer method can handle concurrent threads + + + + + Layout renderer method is agnostic to current thread context. This means it will render the same result indepdent of thread-context. + + + + + A specialized layout that supports header and footer. + + + + + Gets or sets the body layout (can be repeated multiple times). + + + + + + Gets or sets the header layout. + + + + + + Gets or sets the footer layout. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result. + + + + A specialized layout that renders Log4j-compatible XML events. + + + This layout is not meant to be used explicitly. Instead you can use ${log4jxmlevent} layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets the instance that renders log events. + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Represents a string with embedded placeholders that can render contextual information. + + + This layout is not meant to be used explicitly. Instead you can just use a string containing layout + renderers everywhere the layout is required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout string to parse. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + Whether should be thrown on parse errors. + + + + Original text before compile to Layout renderes + + + + + Gets or sets the layout text. + + + + + + Is the message fixed? (no Layout renderers used) + + + + + Get the fixed text. Only set when is true + + + + + Is the message a simple formatted string? (Can skip StringBuilder) + + + + + Gets a collection of objects that make up this layout. + + + + + Gets the level of stack trace information required for rendering. + + + + + Converts a text to a simple layout. + + Text to be converted. + A object. + + + + Escapes the passed text so that it can + be used literally in all places where + layout is normally expected without being + treated as layout. + + The text to be escaped. + The escaped text. + + Escaping is done by replacing all occurrences of + '${' with '${literal:text=${}' + + + + + Evaluates the specified text by expanding all layout renderers. + + The text to be evaluated. + Log event to be used for evaluation. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Evaluates the specified text by expanding all layout renderers + in new context. + + The text to be evaluated. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Returns a that represents the current object. + + + A that represents the current object. + + + + + + + + + + + + + + + + + + + + XML attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with xml-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A XML Element + + + + + + + + + + + Name of the element + + + + + + Value inside the element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + The name of the top XML node + The value of the top XML node + + + + Name of the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Value inside the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Auto indent and create new lines + + + + + + Gets the array of xml 'elements' configurations. + + + + + + Gets the array of 'attributes' configurations for the element + + + + + + Gets or sets whether a ElementValue with empty value should be included in the output + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as XML) + + + + + + List of property names to exclude when is true + + + + + + XML element name to use when rendering properties + + + Support string-format where {0} means property-key-name + + Skips closing element tag when having configured + + + + + + XML attribute name to use when rendering property-key + + When null (or empty) then key-attribute is not included + + + Will replace newlines in attribute-value with + + + + + + XML attribute name to use when rendering property-value + + When null (or empty) then value-attribute is not included and + value is formatted as XML-element-value + + + Skips closing element tag when using attribute for value + + Will replace newlines in attribute-value with + + + + + + XML element name to use for rendering IList-collections items + + + + + + How far should the XML serializer follow object references before backing off + + + + + + Initializes the layout. + + + + + Formats the log event as a XML document for writing. + + The logging event. + for the result + + + + Formats the log event as a XML document for writing. + + The log event to be formatted. + A XML string representation of the log event. + + + + write attribute, only if is not empty + + + + + rendered + + + + Generate description of XML Layout + + XML Layout String Description + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + + + + + + + Name of the root XML element + + + + + + Value inside the root XML element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Represents the logging event. + + + + + Gets the date of the first log event created. + + + + + The formatted log message. + + + + + The log message including any parameter placeholders + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + Exception information. + + + + Gets the unique identifier of log event which is automatically generated + and monotonously increasing. + + + + + Gets or sets the timestamp of the logging event. + + + + + Gets or sets the level of the logging event. + + + + + Gets a value indicating whether stack trace has been set for this event. + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Gets the entire stack trace. + + + + + Gets the callsite class name + + + + + Gets the callsite member function name + + + + + Gets the callsite source file path + + + + + Gets the callsite source file line number + + + + + Gets or sets the exception information. + + + + + Gets or sets the logger name. + + + + + Gets the logger short name. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the log message including any parameter placeholders. + + + + + Gets or sets the parameter values or null if no parameters have been specified. + + + + + Gets or sets the format provider that was provided while logging or + when no formatProvider was specified. + + + + + Gets or sets the message formatter for generating + Uses string.Format(...) when nothing else has been configured. + + + + + Gets the formatted message. + + + + + Checks if any per-event properties (Without allocation) + + + + + Gets the dictionary of per-event context properties. + + + + + Gets the dictionary of per-event context properties. + Internal helper for the PropertiesDictionary type. + + Create the event-properties dictionary, even if no initial template parameters + Provided when having parsed the message template and capture template parameters (else null) + + + + + Gets the named parameters extracted from parsing as MessageTemplate + + + + + Gets the dictionary of per-event context properties. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + The exception. + Instance of . + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates from this by attaching the specified asynchronous continuation. + + The asynchronous continuation. + Instance of with attached continuation. + + + + Returns a string representation of this log event. + + String representation of the log event. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace (Negative means NLog should skip stackframes from System-assemblies). + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Set the + + true = Always, false = Never, null = Auto Detect + + + + Specialized LogFactory that can return instances of custom logger types. + + Use this only when a custom Logger type is defined. + The type of the logger to be returned. Must inherit from . + + + + Gets the logger with type . + + The logger name. + An instance of . + + + + Gets a custom logger with the full name of the current class (so namespace and class name) and type . + + An instance of . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Overwrite possible file paths (including filename) for possible NLog config files. + When this property is null, the default file paths ( are used. + + + + + Occurs when logging changes. + + + + + Occurs when logging gets reloaded. + + + + + Initializes static members of the LogManager class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The config. + + + + Initializes a new instance of the class. + + The config loader + The custom AppEnvironmnet override + + + + Gets the current . + + + + + Gets or sets a value indicating whether exceptions should be thrown. See also . + + A value of true if exception should be thrown; otherwise, false. + By default exceptions are not thrown under any circumstances. + + + + Gets or sets a value indicating whether should be thrown. + + If null then is used. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. After setting this property all + existing loggers will be re-configured, so there is no need to call + manually. + + + + + Gets or sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets the default culture info to use as . + + + Specific culture info or null to use + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting + unmanaged resources. + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Creates a logger that discards all log messages. + + Null logger instance. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets the logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + The logger with type . + Type of the logger + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The type of the logger to create. The type must inherit from + The logger of type . + This is a slow-running method. Make sure you are not calling this method in a + loop. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + Name of the logger. + Type of the logger + The logger reference with type . Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The type of the logger to create. The type must inherit from . + The logger of type . Multiple calls to GetLogger with the + same argument aren't guaranteed to return the same logger reference. + + + + Loops through all loggers previously returned by GetLogger and recalculates their + target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time + will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flushes any pending log messages on all appenders. + + Config containing Targets to Flush + Flush completed notification (success / timeout) + Optional timeout that guarantees that completed notication is called. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Returns if logging is currently enabled. + + A value of if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Raises the event when the configuration is reloaded. + + Event arguments. + + + + Raises the event when the configuration is reloaded. + + Event arguments + + + + Currently this is disposing? + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Logger cache key. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Determines if two objects are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Determines if two objects of the same type are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Logger cache. + + + + + Inserts or updates. + + + + + + + Internal for unit tests + + + + + Enables logging in implementation. + + + + + Initializes a new instance of the class. + + The factory. + + + + Enables logging. + + + + + Logging methods which only are executed when the DEBUG conditional compilation symbol is set. + + Remarks: + The DEBUG conditional compilation symbol is default enabled (only) in a debug build. + + If the DEBUG conditional compilation symbol isn't set in the calling library, the compiler will remove all the invocations to these methods. + This could lead to better performance. + + See: https://msdn.microsoft.com/en-us/library/4xssyw96%28v=vs.90%29.aspx + + + Provides logging interface and utility functions. + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Initializes a new instance of the class. + + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Collection of context properties for the Logger. The logger will append it for all log events + + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Creates new logger that automatically appends the specified property to all log events (without changing current logger) + + Property Name + Property Value + New Logger object that automatically appends specified property + + + + Updates the specified context property for the current logger. The logger will append it for all log events. + + It could be rendered with ${event-properties:YOURNAME} + + With property, all properties could be changed. + + + Will affect all locations/contexts that makes use of the same named logger object. + + Property Name + Property Value + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Raises the event when the logger is reconfigured. + + Event arguments + + + + Implementation of logging engine. + + + + + Gets the filter result. + + The filter chain. + The log event. + default result if there are no filters, or none of the filters decides. + The result of the filter. + + + + Defines available log levels. + + + + + Trace log level. + + + + + Debug log level. + + + + + Info log level. + + + + + Warn log level. + + + + + Error log level. + + + + + Fatal log level. + + + + + Off log level. + + + + + Gets all the available log levels (Trace, Debug, Info, Warn, Error, Fatal, Off). + + + + + Gets all the log levels that can be used to log events (Trace, Debug, Info, Warn, Error, Fatal) + i.e LogLevel.Off is excluded. + + + + + Initializes a new instance of . + + The log level name. + The log level ordinal number. + + + + Gets the name of the log level. + + + + + Gets the ordinal of the log level. + + + + + Compares two objects + and returns a value indicating whether + the first one is equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal == level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is not equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal != level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than the second one. + + The first level. + The second level. + The value of level1.Ordinal > level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal >= level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than the second one. + + The first level. + The second level. + The value of level1.Ordinal < level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal <= level2.Ordinal. + + + + Gets the that corresponds to the specified ordinal. + + The ordinal. + The instance. For 0 it returns , 1 gives and so on. + + + + Returns the that corresponds to the supplied . + + The textual representation of the log level. + The enumeration value. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Determines whether the specified instance is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Compares the level to the other object. + + + The object object. + + + A value less than zero when this logger's is + less than the other logger's ordinal, 0 when they are equal and + greater than zero when this ordinal is greater than the + other ordinal. + + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Delegate used to set/get the culture in use. + + This delegate marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the instance used in the . + + Could be used to pass the to other methods + + + + Occurs when logging changes. + + + + + Occurs when logging gets reloaded. + + + + + Gets or sets a value indicating whether NLog should throw exceptions. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether should be thrown. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Gets or sets the global log threshold. Log events below this threshold are not logged. + + + + + Gets or sets the default culture to use. + + This property was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Adds the given assembly which will be skipped + when NLog is trying to find the calling method on stack trace. + + The assembly to skip. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The logger class. This class must inherit from . + The logger of type . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates a logger that discards all log messages. + + Null logger which discards all log messages. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + + + + Gets the specified named custom logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The logger class. This class must inherit from . + The logger of type . Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + The generic way for this method is + + + + Loops through all loggers previously returned by GetLogger. + and recalculates their target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Checks if logging is currently enabled. + + if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Dispose all targets, and shutdown logging. + + + + + Generates a formatted message from the log event + + Log event. + Formatted message + + + + Returns a log message. Used to defer calculation of + the log message until it's actually needed. + + Log message. + + + + Base implementation of a log receiver server which forwards received logs through or a given . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log factory. + + + + Processes the log messages. + + The events to process. + + + + Processes the log messages. + + The log events. + + + + Service contract for Log Receiver client. + + This class marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Service contract for Log Receiver server. + + + + + Processes the log messages. + + The events. + + + + Service contract for Log Receiver server. + + + + + Processes the log messages. + + The events. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Client of + + + + + Occurs when the log message processing has completed. + + + + + Occurs when Open operation has completed. + + + + + Occurs when Close operation has completed. + + + + + Enables the user to configure client and service credentials as well as service credential authentication settings for use on the client side of communication. + + + + + Gets the underlying implementation. + + + + + Gets the target endpoint for the service to which the WCF client can connect. + + + + + Opens the client asynchronously. + + + + + Opens the client asynchronously. + + User-specific state. + + + + Closes the client asynchronously. + + + + + Closes the client asynchronously. + + User-specific state. + + + + Processes the log messages asynchronously. + + The events to send. + + + + Processes the log messages asynchronously. + + The events to send. + User-specific state. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Instructs the inner channel to display a user interface if one is required to initialize the channel prior to using it. + + + + + Implementation of which forwards received logs through or a given . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log factory. + + + + Implementation of which forwards received logs through or a given . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log factory. + + + + Internal configuration of Log Receiver Service contracts. + + + + + Wire format for NLog Event. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the client-generated identifier of the event. + + + + + Gets or sets the ordinal of the log level. + + + + + Gets or sets the logger ordinal (index into . + + The logger ordinal. + + + + Gets or sets the time delta (in ticks) between the time of the event and base time. + + + + + Gets or sets the message string index. + + + + + Gets or sets the collection of layout values. + + + + + Gets the collection of indexes into array for each layout value. + + + + + Converts the to . + + The object this is part of.. + The logger name prefix to prepend in front of the logger name. + Converted . + + + + Wire format for NLog event package. + + + + + Gets or sets the name of the client. + + The name of the client. + + + + Gets or sets the base time (UTC ticks) for all events in the package. + + The base time UTC. + + + + Gets or sets the collection of layout names which are shared among all events. + + The layout names. + + + + Gets or sets the collection of logger names. + + The logger names. + + + + Gets or sets the list of events. + + The events. + + + + Converts the events to sequence of objects suitable for routing through NLog. + + The logger name prefix to prepend in front of each logger name. + + Sequence of objects. + + + + + Converts the events to sequence of objects suitable for routing through NLog. + + + Sequence of objects. + + + + + List of strings annotated for more terse serialization. + + + + + Initializes a new instance of the class. + + + + + Log Receiver Client using WCF. + + + This class marked as obsolete before NLog 4.3.11 and it will be removed in a future release. + + It provides an implementation of the legacy interface and it will be completely obsolete when the + ILogReceiverClient is removed. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Log Receiver Client facade. It allows the use either of the one way or two way + service contract using WCF through its unified interface. + + + Delegating methods are generated with Resharper. + 1. change ProxiedClient to private field (instead of public property) + 2. delegate members + 3. change ProxiedClient back to public property. + + + + + + The client getting proxied + + + + + Do we use one-way or two-way messaging? + + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + The binding. + The remote address. + + + + Causes a communication object to transition immediately from its current state into the closed state. + + + + + Begins an asynchronous operation to close a communication object. + + + The that references the asynchronous close operation. + + The delegate that receives notification of the completion of the asynchronous close operation.An object, specified by the application, that contains state information associated with the asynchronous close operation. was called on an object in the state.The default timeout elapsed before the was able to close gracefully. + + + + Begins an asynchronous operation to close a communication object with a specified timeout. + + + The that references the asynchronous close operation. + + The that specifies how long the send operation has to complete before timing out.The delegate that receives notification of the completion of the asynchronous close operation.An object, specified by the application, that contains state information associated with the asynchronous close operation. was called on an object in the state.The specified timeout elapsed before the was able to close gracefully. + + + + Begins an asynchronous operation to open a communication object. + + + The that references the asynchronous open operation. + + The delegate that receives notification of the completion of the asynchronous open operation.An object, specified by the application, that contains state information associated with the asynchronous open operation.The was unable to be opened and has entered the state.The default open timeout elapsed before the was able to enter the state and has entered the state. + + + + Begins an asynchronous operation to open a communication object within a specified interval of time. + + + The that references the asynchronous open operation. + + The that specifies how long the send operation has to complete before timing out.The delegate that receives notification of the completion of the asynchronous open operation.An object, specified by the application, that contains state information associated with the asynchronous open operation.The was unable to be opened and has entered the state.The specified timeout elapsed before the was able to enter the state and has entered the state. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Enables the user to configure client and service credentials as well as service credential authentication settings for use on the client side of communication. + + + + + Causes a communication object to transition from its current state into the closed state. + + The that specifies how long the send operation has to complete before timing out. was called on an object in the state.The timeout elapsed before the was able to close gracefully. + + + + Causes a communication object to transition from its current state into the closed state. + + was called on an object in the state.The default close timeout elapsed before the was able to close gracefully. + + + + Closes the client asynchronously. + + User-specific state. + + + + Closes the client asynchronously. + + + + + Occurs when Close operation has completed. + + + + + Occurs when the communication object completes its transition from the closing state into the closed state. + + + + + Occurs when the communication object first enters the closing state. + + + + + Instructs the inner channel to display a user interface if one is required to initialize the channel prior to using it. + + + + + Completes an asynchronous operation to close a communication object. + + The that is returned by a call to the method. was called on an object in the state.The timeout elapsed before the was able to close gracefully. + + + + Completes an asynchronous operation to open a communication object. + + The that is returned by a call to the method.The was unable to be opened and has entered the state.The timeout elapsed before the was able to enter the state and has entered the state. + + + + Gets the target endpoint for the service to which the WCF client can connect. + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Occurs when the communication object first enters the faulted state. + + + + + Gets the underlying implementation. + + + + + Causes a communication object to transition from the created state into the opened state. + + The was unable to be opened and has entered the state.The default open timeout elapsed before the was able to enter the state and has entered the state. + + + + Causes a communication object to transition from the created state into the opened state within a specified interval of time. + + The that specifies how long the send operation has to complete before timing out.The was unable to be opened and has entered the state.The specified timeout elapsed before the was able to enter the state and has entered the state. + + + + Opens the client asynchronously. + + + + + Opens the client asynchronously. + + User-specific state. + + + + Occurs when Open operation has completed. + + + + + Occurs when the communication object completes its transition from the opening state into the opened state. + + + + + Occurs when the communication object first enters the opening state. + + + + + Processes the log messages asynchronously. + + The events to send. + + + + Processes the log messages asynchronously. + + The events to send. + User-specific state. + + + + Occurs when the log message processing has completed. + + + + + Gets the current state of the communication-oriented object. + + + The value of the of the object. + + + + + Causes a communication object to transition from its current state into the closed state. + + + + + Abstract base class for the WcfLogReceiverXXXWay classes. It can only be + used internally (see internal constructor). It passes off any Channel usage + to the inheriting class. + + Type of the WCF service. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Occurs when the log message processing has completed. + + + + + Occurs when Open operation has completed. + + + + + Occurs when Close operation has completed. + + + + + Opens the client asynchronously. + + + + + Opens the client asynchronously. + + User-specific state. + + + + Closes the client asynchronously. + + + + + Closes the client asynchronously. + + User-specific state. + + + + Processes the log messages asynchronously. + + The events to send. + + + + Processes the log messages asynchronously. + + The events to send. + User-specific state. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Log Receiver Client using WCF. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Log Receiver Client using WCF. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + + + + + Gets the thread-local dictionary + + Must be true for any subsequent dictionary modification operation + + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The to use when converting a value to a . + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Returns all item names + + A set of the names of all items in current thread-MDC. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified exists in current thread MDC. + + + + Removes the specified from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Async version of Mapped Diagnostics Context - a logical context structure that keeps a dictionary + of strings and provides methods to output them in layouts. Allows for maintaining state across + asynchronous tasks and call contexts. + + + Ideally, these changes should be incorporated as a new version of the MappedDiagnosticsContext class in the original + NLog library so that state can be maintained for multiple threads in asynchronous situations. + + + + + Simulate ImmutableDictionary behavior (which is not yet part of all .NET frameworks). + In future the real ImmutableDictionary could be used here to minimize memory usage and copying time. + + Must be true for any subsequent dictionary modification operation + Prepare dictionary for additional inserts + + + + + Gets the current logical context named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current logical context named item, as . + + Item name. + The to use when converting a value to a string. + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current logical context named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Returns all item names + + A collection of the names of all items in current logical context. + + + + Checks whether the specified exists in current logical context. + + Item name. + A boolean indicating whether the specified exists in current logical context. + + + + Removes the specified from current logical context. + + Item name. + + + + Clears the content of current logical context. + + + + + Clears the content of current logical context. + + Free the full slot. + + + + Mapped Diagnostics Context + + This class marked as obsolete before NLog 2.0 and it may be removed in a future release. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified item exists in current thread MDC. + + + + Removes the specified item from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Mark a parameter of a method for message templating + + + + + Specifies which parameter of an annotated method should be treated as message-template-string + + + + + The name of the parameter that should be as treated as message-template-string + + + + + The type of the captured hole + + + + + Not decided + + + + + normal {x} + + + + + Serialize operator {@x} (aka destructure) + + + + + stringification operator {$x} + + + + + A hole that will be replaced with a value + + + + + Constructor + + + + Parameter name sent to structured loggers. + This is everything between "{" and the first of ",:}". + Including surrounding spaces and names that are numbers. + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + Type + + + + When the template is positional, this is the parsed name of this parameter. + For named templates, the value of Index is undefined. + + + Alignment to render the parameter, by default 0. + This is the parsed value between "," and the first of ":}" + + + + A fixed value + + + + Number of characters from the original template to copy at the current position. + This can be 0 when the template starts with a hole or when there are multiple consecutive holes. + + + Number of characters to skip in the original template at the current position. + 0 is a special value that mean: 1 escaped char, no hole. It can also happen last when the template ends with a literal. + + + + Combines Literal and Hole + + + + Literal + + + Hole + Uninitialized when = 0. + + + + Description of a single parameter extracted from a MessageTemplate + + + + + Parameter Name extracted from + This is everything between "{" and the first of ",:}". + + + + + Parameter Value extracted from the -array + + + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + + Parameter method that should be used to render the parameter + See also + + + + + Returns index for , when + + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + Parameter CaptureType + + + + Parameters extracted from parsing as MessageTemplate + + + + + + + + + + + Gets the parameters at the given index + + + + + Number of parameters + + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Indicates whether the template was parsed successful, and there are no unmatched parameters + + + + + Constructor for parsing the message template with parameters + + including any parameter placeholders + All + + + + Constructor for named parameters that already has been parsed + + + + + Create MessageTemplateParameter from + + + + + A message template + + + + The original template string. + This is the key passed to structured targets. + + + The list of literal parts, useful for string rendering. + It indicates the number of characters from the original string to print, + then there's a hole with how many chars to skip. + + "Hello {firstName} {lastName}!" + ------------------------------------- + ║P |S ║P|S ║P|S║ + ║6 |11 ║1|10 ║1|0║ + ║Hello |{firstName}║ |{lastName}║!║ + + "{x} * 2 = {2x}" + -------------------- + ║P|S ║P |S ║ + ║0|3 ║7 |4 ║ + ║{x}║ * 2 = |{2x}║ + + The tricky part is escaped braces. They are represented by a skip = 0, + which is interpreted as "move one char forward, no hole". + + "Escaped }} is fun." + ---------------------- + ║P |S║P |S║ + ║9 |0║8 |0║ + ║Escaped }|}║ is fun.|║ + + + + This list of holes. It's used both to fill the string rendering + and to send values along the template to structured targets. + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Create a template, which is already parsed + + + + + + + + + Create a template, which is already parsed + + + + + + + + This is for testing only: recreates from the parsed data. + + + + This is for testing only: rebuilds the hole + + Add to this string builder + ref for performance + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Gets the current literal/hole in the template + + + + + Clears the enumerator + + + + + Restarts the enumerator of the template + + + + + Moves to the next literal/hole in the template + + Found new element [true/false] + + + + Parse format after hole name/index. Handle the escaped { and } in the format. Don't read the last } + + + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Error when parsing a template. + + + + + Current index when the error occurred. + + + + + The template we were parsing + + + + + New exception + + The message to be shown. + Current index when the error occurred. + + + + + Render templates + + + + + Render a template to a string. + + The template. + Culture. + Parameters for the holes. + Do not fallback to StringBuilder.Format for positional templates. + The String Builder destination. + Parameters for the holes. + + + + Render a template to a string. + + The template. + The String Builder destination. + Culture. + Parameters for the holes. + Rendered template, never null. + + + + Convert Render or serialize a value, with optionally backwards-compatible with + + + + Singleton + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Format an object to a readable string, or if it's an object, serialize + + The value to convert + + + + + + + + Try serializing a scalar (string, int, NULL) or simple type (IFormattable) + + + + + Serialize Dictionary as JSON like structure, without { and } + + + "FirstOrder"=true, "Previous login"=20-12-2017 14:55:32, "number of tries"=1 + + + formatstring of an item + + + + + + + + + Convert a value to a string with format and append to . + + The value to convert. + Format sting for the value. + Format provider for the value. + Append to this + + + + Nested Diagnostics Context + + This class marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top object off the NDC stack. The object is removed from the stack. + + The top object from the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all objects on the NDC stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Nested Diagnostics Context - a thread-local structure that keeps a stack + of strings and provides methods to output them in layouts + + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object at the top of the NDC stack if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified object on current thread NDC. + + The object to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top message from the NDC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top object off the NDC stack. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Peeks the first object on the NDC stack + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. + + Array of objects on the stack. + + + + Resets the stack to the original count during . + + + + + Initializes a new instance of the class. + + The stack. + The previous count. + + + + Reverts the stack to original item count. + + + + + Async version of - a logical context structure that keeps a stack + Allows for maintaining scope across asynchronous tasks and call contexts. + + + + + Pushes the specified value on current stack + + The value to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified value on current stack + + The value to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDLC stack. + + The top message which is no longer on the stack. + this methods returns a object instead of string, this because of backwards-compatibility + + + + Pops the top message from the NDLC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top message off the current NDLC stack + + The object from the top of the NDLC stack, if defined; otherwise null. + + + + Peeks the top object on the current NDLC stack + + The object from the top of the NDLC stack, if defined; otherwise null. + + + + Peeks the current scope, and returns its start time + + Scope Creation Time + + + + Peeks the first scope, and returns its start time + + Scope Creation Time + + + + Clears current stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Exception thrown during NLog configuration. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The inner exception. + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Exception thrown during log event processing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + TraceListener which routes all messages through NLog. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the log factory to use when outputting messages (null - use LogManager). + + + + + Gets or sets the default log level. + + + + + Gets or sets the log which should be always used regardless of source level. + + + + + Gets or sets a value indicating whether flush calls from trace sources should be ignored. + + + + + Gets a value indicating whether the trace listener is thread safe. + + + true if the trace listener is thread safe; otherwise, false. The default is false. + + + + Gets or sets a value indicating whether to use auto logger name detected from the stack trace. + + + + + When overridden in a derived class, writes the specified message to the listener you create in the derived class. + + A message to write. + + + + When overridden in a derived class, writes a message to the listener you create in the derived class, followed by a line terminator. + + A message to write. + + + + When overridden in a derived class, closes the output stream so it no longer receives tracing or debugging output. + + + + + Emits an error message. + + A message to emit. + + + + Emits an error message and a detailed error message. + + A message to emit. + A detailed message to emit. + + + + Flushes the output (if is not true) buffer with the default timeout of 15 seconds. + + + + + Writes trace information, a data object and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + The trace data to emit. + + + + Writes trace information, an array of data objects and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + An array of objects to emit as data. + + + + Writes trace and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + + + + Writes trace information, a formatted array of objects and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + A format string that contains zero or more format items, which correspond to objects in the array. + An object array containing zero or more objects to format. + + + + Writes trace information, a message, and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + A message to write. + + + + Writes trace information, a message, a related activity identity and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + A numeric identifier for the event. + A message to write. + A object identifying a related activity. + + + + Gets the custom attributes supported by the trace listener. + + + A string array naming the custom attributes supported by the trace listener, or null if there are no custom attributes. + + + + + Translates the event type to level from . + + Type of the event. + Translated log level. + + + + Process the log event + The log level. + The name of the logger. + The log message. + The log parameters. + The event id. + The event type. + The related activity id. + + + + + It works as a normal but it discards all messages which an application requests + to be logged. + + It effectively implements the "Null Object" pattern for objects. + + + + + Initializes a new instance of . + + The factory class to be used for the creation of this logger. + + + + Extension methods to setup LogFactory options + + + + + Gets the logger with the full name of the current class, so namespace and class name. + + + + + Gets the specified named logger. + + + + + Configures loading of NLog extensions for Targets and LayoutRenderers + + + + + Configures the output of NLog for diagnostics / troubleshooting + + + + + Configures serialization and transformation of LogEvents + + + + + Loads NLog config created by the method + + + + + Loads NLog config provided in + + + + + Loads NLog config from filename if provided, else fallback to scanning for NLog.config + + + + + Loads NLog config from XML in + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Enable/disables autoloading of NLog extensions by scanning and loading available assemblies + + + Enabled by default, and gives a huge performance hit during startup. Recommended to disable this when running in the cloud. + + + + + Registers NLog extensions from the assembly. + + + + + Registers NLog extensions from the assembly type name + + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + MethodInfo extracted by reflection - typeof(MyClass).GetMethod("MyFunc", BindingFlags.Static). + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + Lambda method. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + Lambda method. + + + + Extension methods to setup NLog options + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Overrides the active with a new custom implementation + + + + + Overrides the active with a new custom implementation + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Specifies the way archive numbering is performed. + + + + + Sequence style numbering. The most recent archive has the highest number. + + + + + Rolling style numbering (the most recent is always #0 then #1, ..., #N. + + + + + Date style numbering. Archives will be stamped with the prior period + (Year, Month, Day, Hour, Minute) datetime. + + + + + Date and sequence style numbering. + Archives will be stamped with the prior period (Year, Month, Day) datetime. + The most recent archive has the highest number (in combination with the date). + + + + + Abstract Target with async Task support + + + + + How many milliseconds to delay the actual write operation to optimize for batching + + + + + How many seconds a Task is allowed to run before it is cancelled. + + + + + How many attempts to retry the same Task, before it is aborted + + + + + How many milliseconds to wait before next retry (will double with each retry) + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Task Scheduler used for processing async Tasks + + + + + Constructor + + + + + Initializes the internal queue for pending logevents + + + + + Override this to create the actual logging task + + Example of how to override this method, and call custom async method + + protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) + { + return CustomWriteAsync(logEvent, token); + } + + private async Task CustomWriteAsync(LogEventInfo logEvent, CancellationToken token) + { + await MyLogMethodAsync(logEvent, token).ConfigureAwait(false); + } + + + The log event. + The cancellation token + + + + + Override this to create the actual logging task for handling batch of logevents + + A batch of logevents. + The cancellation token + + + + + Handle cleanup after failed write operation + + Exception from previous failed Task + The cancellation token + Number of retries remaining + Time to sleep before retrying + Should attempt retry + + + + Schedules the LogEventInfo for async writing + + The log event. + + + + Write to queue without locking + + + + + + Schedules notification of when all messages has been written + + + + + + Closes Target by updating CancellationToken + + + + + Releases any managed resources + + + + + + Checks the internal queue for the next to create a new task for + + Used for race-condition validation between task-completion and timeout + Signals whether previousTask completed an almost full BatchSize + + + + Generates recursive task-chain to perform retry of writing logevents with increasing retry-delay + + + + + Creates new task to handle the writing of the input + + LogEvents to write + New Task created [true / false] + + + + Handles that scheduled task has completed (successfully or failed), and starts the next pending task + + Task just completed + AsyncContinuation to notify of success or failure + + + + Timer method, that is fired when pending task fails to complete within timeout + + + + + + Sends log messages to the remote instance of Chainsaw application from log4j. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a name. + + Name of the target. + + + + Color formatting for using ANSI Color Codes + + + + + Not using bold to get light colors, as it has to be cleared + + + + + Not using bold to get light colors, as it has to be cleared (And because it only works for text, and not background) + + + + + Resets both foreground and background color. + + + + + ANSI have 8 color-codes (30-37) by default. The "bright" (or "intense") color-codes (90-97) are extended values not supported by all terminals + + + + + Color formatting for using + and + + + + + Writes log messages to the console with customizable coloring. + + Documentation on NLog Wiki + + + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default.In multithreaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether the error stream (stderr) should be used instead of the output stream (stdout). + + + + + + Gets or sets a value indicating whether to use default row highlighting rules. + + + The default rules are: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConditionForeground ColorBackground Color
level == LogLevel.FatalRedNoChange
level == LogLevel.ErrorYellowNoChange
level == LogLevel.WarnMagentaNoChange
level == LogLevel.InfoWhiteNoChange
level == LogLevel.DebugGrayNoChange
level == LogLevel.TraceDarkGrayNoChange
+
+ +
+ + + The encoding for writing messages to the . + + Has side effect + + + + + Gets or sets a value indicating whether to auto-check if the console is available. + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-check if the console has been redirected to file + - Disables coloring logic when System.Console.IsOutputRedirected = true + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + + Enables output using ANSI Color Codes + + + + + + Gets the row highlighting rules. + + + + + + Gets the word highlighting rules. + + + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified log event to the console highlighting entries + and words based on a set of defined rules. + + Log event. + + + + Colored console output color. + + + Note that this enumeration is defined to be binary compatible with + .NET 2.0 System.ConsoleColor + some additions + + + + + Black Color (#000000). + + + + + Dark blue Color (#000080). + + + + + Dark green Color (#008000). + + + + + Dark Cyan Color (#008080). + + + + + Dark Red Color (#800000). + + + + + Dark Magenta Color (#800080). + + + + + Dark Yellow Color (#808000). + + + + + Gray Color (#C0C0C0). + + + + + Dark Gray Color (#808080). + + + + + Blue Color (#0000FF). + + + + + Green Color (#00FF00). + + + + + Cyan Color (#00FFFF). + + + + + Red Color (#FF0000). + + + + + Magenta Color (#FF00FF). + + + + + Yellow Color (#FFFF00). + + + + + White Color (#FFFFFF). + + + + + Don't change the color. + + + + + The row-highlighting condition. + + + + + Initializes static members of the ConsoleRowHighlightingRule class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The condition. + Color of the foreground. + Color of the background. + + + + Gets the default highlighting rule. Doesn't change the color. + + + + + Gets or sets the condition that must be met in order to set the specified foreground and background color. + + + + + + Gets or sets the foreground color. + + + + + + Gets or sets the background color. + + + + + + Checks whether the specified log event matches the condition (if any). + + + Log event. + + + A value of if the condition is not defined or + if it matches, otherwise. + + + + + Writes log messages to the console. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default. In multi threaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Gets or sets a value indicating whether to send the log messages to the standard error instead of the standard output. + + + + + + The encoding for writing messages to the . + + Has side effect + + + + + Gets or sets a value indicating whether to auto-check if the console is available + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + + Gets or sets whether to enable batch writing using char[]-buffers, instead of using + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified logging event to the Console.Out or + Console.Error depending on the value of the Error flag. + + The logging event. + + Note that the Error option is not supported on .NET Compact Framework. + + + + + + + + Write to output + + + + + Highlighting rule for Win32 colorful console. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The text to be matched.. + Color of the foreground. + Color of the background. + + + + Gets or sets the regular expression to be matched. You must specify either text or regex. + + + + + + Gets or sets the condition that must be met before scanning the row for highlight of words + + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets the text to be matched. You must specify either text or regex. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Gets or sets the foreground color. + + + + + + Gets or sets the background color. + + + + + + Gets the compiled regular expression that matches either Text or Regex property. Only used when is true. + + + + + Information about database command + parameters. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the type of the command. + + The type of the command. + + + + + Gets or sets the connection string to run the command against. If not provided, connection string from the target is used. + + + + + + Gets or sets the command text. + + + + + + Gets or sets a value indicating whether to ignore failures. + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a database named or positional parameter. + + + + + + Information about object-property for the database-connection-object + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name for the object-property + + + + + + Gets or sets the value to assign on the object-property + + + + + + Gets or sets the type of the object-property + + + + + + Gets or sets convert format of the property value + + + + + + Gets or sets the culture used for parsing property string-value for type-conversion + + + + + + Represents a parameter to a Database target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the parameter. + The parameter layout. + + + + Gets or sets the database parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets the database parameter DbType. + + + + + + Gets or sets the database parameter size. + + + + + + Gets or sets the database parameter precision. + + + + + + Gets or sets the database parameter scale. + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets convert format of the database parameter value. + + + + + + Gets or sets the culture used for parsing parameter string-value for type-conversion + + + + + + Writes log messages to the database using an ADO.NET provider. + + + - NETSTANDARD cannot load connectionstrings from .config + + Documentation on NLog Wiki + + + The configuration is dependent on the database type, because + there are different methods of specifying connection string, SQL + command and command parameters. + + MS SQL Server using System.Data.SqlClient: + + Oracle using System.Data.OracleClient: + + Oracle using System.Data.OleDBClient: + + To set up the log target programmatically use code like this (an equivalent of MSSQL configuration): + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets the name of the database provider. + + + + The parameter name should be a provider invariant name as registered in machine.config or app.config. Common values are: + +
    +
  • System.Data.SqlClient - SQL Sever Client
  • +
  • System.Data.SqlServerCe.3.5 - SQL Sever Compact 3.5
  • +
  • System.Data.OracleClient - Oracle Client from Microsoft (deprecated in .NET Framework 4)
  • +
  • Oracle.DataAccess.Client - ODP.NET provider from Oracle
  • +
  • System.Data.SQLite - System.Data.SQLite driver for SQLite
  • +
  • Npgsql - Npgsql driver for PostgreSQL
  • +
  • MySql.Data.MySqlClient - MySQL Connector/Net
  • +
+ (Note that provider invariant names are not supported on .NET Compact Framework). + + Alternatively the parameter value can be be a fully qualified name of the provider + connection type (class implementing ) or one of the following tokens: + +
    +
  • sqlserver, mssql, microsoft or msde - SQL Server Data Provider
  • +
  • oledb - OLEDB Data Provider
  • +
  • odbc - ODBC Data Provider
  • +
+
+ +
+ + + Gets or sets the name of the connection string (as specified in <connectionStrings> configuration section. + + + + + + Gets or sets the connection string. When provided, it overrides the values + specified in DBHost, DBUserName, DBPassword, DBDatabase. + + + + + + Gets or sets the connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used. + + + + + + Gets the installation DDL commands. + + + + + + Gets the uninstallation DDL commands. + + + + + + Gets or sets a value indicating whether to keep the + database connection open between the log events. + + + + + + Obsolete - value will be ignored! The logging code always runs outside of transaction. + + Gets or sets a value indicating whether to use database transactions. + Some data providers require this. + + + + This option was removed in NLog 4.0 because the logging code always runs outside of transaction. + This ensures that the log gets written to the database if you rollback the main transaction because of an error and want to log the error. + + + + + Gets or sets the database host name. If the ConnectionString is not provided + this value will be used to construct the "Server=" part of the + connection string. + + + + + + Gets or sets the database user name. If the ConnectionString is not provided + this value will be used to construct the "User ID=" part of the + connection string. + + + + + + Gets or sets the database password. If the ConnectionString is not provided + this value will be used to construct the "Password=" part of the + connection string. + + + + + + Gets or sets the database name. If the ConnectionString is not provided + this value will be used to construct the "Database=" part of the + connection string. + + + + + + Gets or sets the text of the SQL command to be run on each log level. + + + Typically this is a SQL INSERT statement or a stored procedure call. + It should use the database-specific parameters (marked as @parameter + for SQL server or :parameter for Oracle, other data providers + have their own notation) and not the layout renderers, + because the latter is prone to SQL injection attacks. + The layout renderers should be specified as <parameter /> elements instead. + + + + + + Gets or sets the type of the SQL command to be run on each log level. + + + This specifies how the command text is interpreted, as "Text" (default) or as "StoredProcedure". + When using the value StoredProcedure, the commandText-property would + normally be the name of the stored procedure. TableDirect method is not supported in this context. + + + + + + Gets the collection of parameters. Each item contains a mapping + between NLog layout and a database named or positional parameter. + + + + + + Gets the collection of properties. Each item contains a mapping + between NLog layout and a property on the DbConnection instance + + + + + + Gets the collection of properties. Each item contains a mapping + between NLog layout and a property on the DbCommand instance + + + + + + Configures isolated transaction batch writing. If supported by the database, then it will improve insert performance. + + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Set the to use it for opening connections to the database. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the database. It creates + a new database command, prepares parameters for it by calculating + layouts and executes the command. + + The logging event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Write logEvent to database + + + + + Build the connectionstring from the properties. + + + Using at first, and falls back to the properties , + , and + + Event to render the layout inside the properties. + + + + + Escape quotes and semicolons. + See https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms722656(v=vs.85)#setting-values-that-use-reserved-characters + + + + + Create database parameter + + Current command. + Parameter configuration info. + + + + Extract parameter value from the logevent + + Current logevent. + Parameter configuration info. + + + + Create Default Value of Type + + + + + + + A descriptor for an archive created with the DateAndSequence numbering mode. + + + + + The full name of the archive file. + + + + + The parsed date contained in the file name. + + + + + The parsed sequence number contained in the file name. + + + + + Determines whether produces the same string as the current instance's date once formatted with the current instance's date format. + + The date to compare the current object's date to. + True if the formatted dates are equal, otherwise False. + + + + Initializes a new instance of the class. + + + + + Writes log messages to the attached managed debugger. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the attached debugger. + + The logging event. + + + + Mock target - useful for testing. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + Increases the number of messages. + + The logging event. + + + + Default class for serialization of values to JSON format. + + + + + Singleton instance of the serializer. + + + + + Private. Use + + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + Serialized value. + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + serialisation options + Serialized value. + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + The objects in path (Avoid cyclic reference loop). + The current depth (level) of recursion. + Object serialized successfully (true/false). + + + + No quotes needed for this type? + + + + + Checks the object if it is numeric + + TypeCode for the object + Accept fractional types as numeric type. + + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + all options + JSON escaped string + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + Should non-ascii characters be encoded + + JSON escaped string + + + + Writes log message to the Event Log. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Max size in characters (limitation of the EventLog API). + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Initializes a new instance of the class. + + . to be used as Source. + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the machine on which Event Log service is running. + + + + + + Gets or sets the layout that renders event ID. + + + + + + Gets or sets the layout that renders event Category. + + + + + + Optional entry type. When not set, or when not convertible to then determined by + + + + + + Gets or sets the value to be used as the event Source. + + + By default this is the friendly name of the current AppDomain. + + + + + + Gets or sets the name of the Event Log to write to. This can be System, Application or any user-defined name. + + + + + + Gets or sets the message length limit to write to the Event Log. + + MaxMessageLength cannot be zero or negative + + + + + Gets or sets the maximum Event log size in kilobytes. + + + MaxKilobytes cannot be less than 64 or greater than 4194240 or not a multiple of 64. + If null, the value will not be specified while creating the Event log. + + + + + + Gets or sets the action to take if the message is larger than the option. + + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Initializes the target. + + + + + Writes the specified logging event to the event log. + + The logging event. + + + + Get the entry type for logging the message. + + The logging event - for rendering the + + + + Get the source, if and only if the source is fixed. + + null when not + Internal for unit tests + + + + (re-)create an event source, if it isn't there. Works only with fixed source names. + + The source name. If source is not fixed (see , then pass null or . + always throw an Exception when there is an error + + + + A wrapper for Windows event log. + + + + + A wrapper for the property . + + + + + A wrapper for the property . + + + + + A wrapper for the property . + + + + + A wrapper for the property . + + + + + Indicates whether an event log instance is associated. + + + + + A wrapper for the method . + + + + + Creates a new association with an instance of the event log. + + + + + A wrapper for the static method . + + + + + A wrapper for the static method . + + + + + A wrapper for the static method . + + + + + A wrapper for the static method . + + + + + The implementation of , that uses Windows . + + + + + + + + + + + + + + + + + + + + + + + + Creates a new association with an instance of Windows . + + + + + + + + + + + + + + + + + Action that should be taken if the message is greater than + the max message size allowed by the Event Log. + + + + + Truncate the message before writing to the Event Log. + + + + + Split the message and write multiple entries to the Event Log. + + + + + Discard of the message. It will not be written to the Event Log. + + + + + Check if cleanup should be performed on initialize new file + + Skip cleanup when initializing new file, just after having performed archive operation + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Characters determining the start of the . + + + + + Characters determining the end of the . + + + + + File name which is used as template for matching and replacements. + It is expected to contain a pattern to match. + + + + + The begging position of the + within the . -1 is returned + when no pattern can be found. + + + + + The ending position of the + within the . -1 is returned + when no pattern can be found. + + + + + Replace the pattern with the specified String. + + + + + + + Archives the log-files using a date style numbering. Archives will be stamped with the + prior period (Year, Month, Day, Hour, Minute) datetime. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Archives the log-files using a date and sequence style numbering. Archives will be stamped + with the prior period (Year, Month, Day) datetime. The most recent archive has the highest number (in + combination with the date). + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Parse filename with date and sequence pattern + + + dateformat for archive + + the found pattern. When failed, then default + the found pattern. When failed, then default + + + + + Archives the log-files using the provided base-archive-filename. If the base-archive-filename causes + duplicate archive filenames, then sequence-style is automatically enforced. + + Example: + Base Filename trace.log + Next Filename trace.0.log + + The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Dynamically converts a non-template archiveFilePath into a correct archiveFilePattern. + Before called the original IFileArchiveMode, that has been wrapped by this + + + + + Determines if the file name as contains a numeric pattern i.e. {#} in it. + + Example: + trace{#}.log Contains the numeric pattern. + trace{###}.log Contains the numeric pattern. + trace{#X#}.log Contains the numeric pattern (See remarks). + trace.log Does not contain the pattern. + + Occasionally, this method can identify the existence of the {#} pattern incorrectly. + File name to be checked. + when the pattern is found; otherwise. + + + + Archives the log-files using a rolling style numbering (the most recent is always #0 then + #1, ..., #N. + + When the number of archive files exceed the obsolete archives + are deleted. + + + + + Replaces the numeric pattern i.e. {#} in a file name with the parameter value. + + File name which contains the numeric pattern. + Value which will replace the numeric pattern. + File name with the value of in the position of the numeric pattern. + + + + Archives the log-files using a sequence style numbering. The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Modes of archiving files based on time. + + + + + Don't archive based on time. + + + + + AddToArchive every year. + + + + + AddToArchive every month. + + + + + AddToArchive daily. + + + + + AddToArchive every hour. + + + + + AddToArchive every minute. + + + + + AddToArchive every Sunday. + + + + + AddToArchive every Monday. + + + + + AddToArchive every Tuesday. + + + + + AddToArchive every Wednesday. + + + + + AddToArchive every Thursday. + + + + + AddToArchive every Friday. + + + + + AddToArchive every Saturday. + + + + + Type of filepath + + + + + Detect of relative or absolute + + + + + Relative path + + + + + Absolute path + + Best for performance + + + + Writes log messages to one or more files. + + Documentation on NLog Wiki + + + + Default clean up period of the initialized files. When a file exceeds the clean up period is removed from the list. + + Clean up period is defined in days. + + + + The maximum number of initialized files before clean up procedures are initiated, + to keep the number of initialized files to a minimum. Chose 25 to cater for monthly rolling of log-files. + + + + + This value disables file archiving based on the size. + + + + + Holds the initialized files each given time by the instance. Against each file, the last write time is stored. + + Last write time is store in local time (no UTC). + + + + List of the associated file appenders with the instance. + + + + + The number of initialized files at any one time. + + + + + The maximum number of archive files that should be kept. + + + + + The maximum days of archive files that should be kept. + + + + + The filename as target + + + + + The archive file name as target + + + + + The date of the previous log event. + + + + + The file name of the previous log event. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the name of the file to write to. + + + This FileName string is a layout which may include instances of layout renderers. + This lets you use a single target to write to multiple files. + + + The following value makes NLog write logging events to files based on the log level in the directory where + the application runs. + ${basedir}/${level}.log + All Debug messages will go to Debug.log, all Info messages will go to Info.log and so on. + You can combine as many of the layout renderers as you want to produce an arbitrary log file name. + + + + + + Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. + If set to false, nothing gets written when the filename is wrong. + + + + + + Is the an absolute or relative path? + + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + + Gets or sets a value indicating whether to delete old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + + + + + + Gets or sets a value indicating whether to replace file contents on each write instead of appending log message at the end. + + + + + + Gets or sets a value indicating whether to keep log file open instead of opening and closing it on each logging event. + + + Setting this property to True helps improve performance. + + + + + + Gets or sets the maximum number of log file names that should be stored as existing. + + + The bigger this number is the longer it will take to write each log record. The smaller the number is + the higher the chance that the clean function will be run when no new files have been opened. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + + Gets or sets the file attributes (Windows only). + + + + + + Gets or sets the line ending mode. + + + + + + Gets or sets a value indicating whether to automatically flush the file buffers after each log message. + + + + + + Gets or sets the number of files to be kept open. Setting this to a higher value may improve performance + in a situation where a single File target is writing to many files + (such as splitting by level or by logger). + + + The files are managed on a LRU (least recently used) basis, which flushes + the files that have not been used for the longest period of time should the + cache become full. As a rule of thumb, you shouldn't set this parameter to + a very high value. A number like 10-15 shouldn't be exceeded, because you'd + be keeping a large number of files open which consumes system resources. + + + + + + Gets or sets the maximum number of seconds that files are kept open. If this number is negative the files are + not automatically closed after a period of inactivity. + + + + + + Gets or sets the maximum number of seconds before open files are flushed. If this number is negative or zero + the files are not flushed by timer. + + + + + + Gets or sets the log file buffer size in bytes. + + + + + + Gets or sets the file encoding. + + + + + + Gets or sets whether or not this target should just discard all data that its asked to write. + Mostly used for when testing NLog Stack except final write + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on different network hosts. + + + This effectively prevents files from being kept open. + + + + + + Gets or sets a value indicating whether to write BOM (byte order mark) in created files + + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + The actual delay is a random value between 0 and the value specified + in this parameter. On each failed attempt the delay base is doubled + up to times. + + + Assuming that ConcurrentWriteAttemptDelay is 10 the time to wait will be:

+ a random value between 0 and 10 milliseconds - 1st attempt
+ a random value between 0 and 20 milliseconds - 2nd attempt
+ a random value between 0 and 40 milliseconds - 3rd attempt
+ a random value between 0 and 80 milliseconds - 4th attempt
+ ...

+ and so on. + + + + +

+ Gets or sets a value indicating whether to archive old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + After archiving the old file, the current log file will be empty. + + +
+ + + Gets or sets a value of the file size threshold to archive old log file on startup. + + + This option won't work if is set to false + Default value is 0 which means that the file is archived as soon as archival on + startup is enabled. + + + + + + Gets or sets a value specifying the date format to use when archiving files. + + + This option works only when the "ArchiveNumbering" parameter is set either to Date or DateAndSequence. + + + + + + Gets or sets the size in bytes above which log files will be automatically archived. + + Warning: combining this with isn't supported. We cannot create multiple archive files, if they should have the same name. + Choose: + + + Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. + + + + + + Gets or sets a value indicating whether to automatically archive log files every time the specified time passes. + + + Files are moved to the archive as part of the write operation if the current period of time changes. For example + if the current hour changes from 10 to 11, the first write that will occur + on or after 11:00 will trigger the archiving. +

+ Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. +

+
+ +
+ + + Is the an absolute or relative path? + + + + + + Gets or sets the name of the file to be used for an archive. + + + It may contain a special placeholder {#####} + that will be replaced with a sequence of numbers depending on + the archiving strategy. The number of hash characters used determines + the number of numerical digits to be used for numbering files. + + + + + + Gets or sets the maximum number of archive files that should be kept. + + + + + + Gets or sets the maximum days of archive files that should be kept. + + + + + + Gets or sets the way file archives are numbered. + + + + + + Used to compress log files during archiving. + This may be used to provide your own implementation of a zip file compressor, + on platforms other than .Net4.5. + Defaults to ZipArchiveFileCompressor on .Net4.5 and to null otherwise. + + + + + + Gets or sets a value indicating whether to compress archive files into the zip archive format. + + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + + Gets or sets a value indicating whether file creation calls should be synchronized by a system global mutex. + + + + + + Gets or sets a value indicating whether the footer should be written only when the file is archived. + + + + + + Gets the characters that are appended after each line. + + + + + Refresh the ArchiveFilePatternToWatch option of the . + The log file must be watched for archiving when multiple processes are writing to the same + open file. + + + + + Removes records of initialized files that have not been + accessed in the last two days. + + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Removes records of initialized files that have not been + accessed after the specified date. + + The cleanup threshold. + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Flushes all pending file operations. + + The asynchronous continuation. + + The timeout parameter is ignored, because file APIs don't provide + the needed functionality. + + + + + Returns the suitable appender factory ( ) to be used to generate the file + appenders associated with the instance. + + The type of the file appender factory returned depends on the values of various properties. + + suitable for this instance. + + + + Initializes file logging by creating data structures that + enable efficient multi-file logging. + + + + + Closes the file(s) opened for writing. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Get full filename (=absolute) and cleaned if needed. + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes the specified array of logging events to a file specified in the FileName + parameter. + + An array of objects. + + This function makes use of the fact that the events are batched by sorting + the requests by filename. This optimizes the number of open/close calls + and can help improve performance. + + + + + Returns estimated size for memory stream, based on events count and first event size in bytes. + + Count of events + Bytes count of first event + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Gets the bytes to be written to the file. + + Log event. + Array of bytes that are ready to be written. + + + + Modifies the specified byte array before it gets sent to a file. + + The byte array. + The modified byte array. The function can do the modification in-place. + + + + Gets the bytes to be written to the file. + + The log event to be formatted. + to help format log event. + Optional temporary char-array to help format log event. + Destination for the encoded result. + + + + Formats the log event for write. + + The log event to be formatted. + for the result. + + + + Modifies the specified byte array before it gets sent to a file. + + The LogEvent being written + The byte array. + + + + Archives fileName to archiveFileName. + + File name to be archived. + Name of the archive file. + + + + Gets the correct formatting to be used based on the value of for converting values which will be inserting into file + names during archiving. + + This value will be computed only when a empty value or is passed into + + Date format to used irrespectively of value. + Formatting for dates. + + + + Calculate the DateTime of the requested day of the week. + + The DateTime of the previous log event. + The next occuring day of the week to return a DateTime for. + The DateTime of the next occuring dayOfWeek. + For example: if previousLogEventTimestamp is Thursday 2017-03-02 and dayOfWeek is Sunday, this will return + Sunday 2017-03-05. If dayOfWeek is Thursday, this will return *next* Thursday 2017-03-09. + + + + Invokes the archiving process after determining when and which type of archiving is required. + + File name to be checked and archived. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + + + + Gets the pattern that archive files will match + + Filename of the log file + Log event that the instance is currently processing. + A string with a pattern that will match the archive file names + + + + Archives the file if it should be archived. + + The file name to check for. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + True when archive operation of the file was completed (by this target or a concurrent target) + + + + Closes any active file-appenders that matches the input filenames. + File-appender is requested to invalidate/close its filehandle, but keeping its archive-mutex alive + + + + + Indicates if the automatic archiving process should be executed. + + File name to be written. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the correct filename to archive + + + + + + Gets the file name for archiving, or null if archiving should not occur based on file size. + + File name to be written. + The size in bytes of the next chunk of data to be written in the file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the file name for archiving, or null if archiving should not occur based on date/time. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Truncates the input-time, so comparison of low resolution times (like dates) are not affected by ticks + + High resolution Time + Time Resolution Level + Truncated Low Resolution Time + + + + Evaluates which parts of a file should be written (header, content, footer) based on various properties of + instance and writes them. + + File name to be written. + Raw sequence of to be written into the content part of the file. + File has just been opened. + + + + Initialise a file to be used by the instance. Based on the number of initialized + files and the values of various instance properties clean up and/or archiving processes can be invoked. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file (DateTime.MinValue if just initialized). + + + + Writes the file footer and finalizes the file in instance internal structures. + + File name to close. + Indicates if the file is being finalized for archiving. + + + + Writes the footer information to a file. + + The file path to write to. + + + + Decision logic whether to archive logfile on startup. + and properties. + + File name to be written. + Decision whether to archive or not. + + + + Invokes the archiving and clean up of older archive file based on the values of + and + properties respectively. + + File name to be written. + Log event that the instance is currently processing. + + + + Creates the file specified in and writes the file content in each entirety i.e. + Header, Content and Footer. + + The name of the file to be written. + Sequence of to be written in the content section of the file. + First attempt to write? + This method is used when the content of the log file is re-written on every write. + + + + Writes the header information and byte order mark to a file. + + File appender associated with the file. + + + + The sequence of to be written in a file after applying any formatting and any + transformations required from the . + + The layout used to render output message. + Sequence of to be written. + Usually it is used to render the header and hooter of the files. + + + + Controls the text and color formatting for + + + + + Creates a TextWriter for the console to start building a colored text message + + Active console stream + Optional StringBuilder to optimize performance + TextWriter for the console + + + + Releases the TextWriter for the console after having built a colored text message (Restores console colors) + + Colored TextWriter + Active console stream + Original foreground color for console (If changed) + Original background color for console (If changed) + Flush TextWriter + + + + Changes foreground color for the Colored TextWriter + + Colored TextWriter + New foreground color for the console + Old previous backgroundColor color for the console + Old foreground color for the console + + + + Changes backgroundColor color for the Colored TextWriter + + Colored TextWriter + New backgroundColor color for the console + Old previous backgroundColor color for the console + Old backgroundColor color for the console + + + + Restores console colors back to their original state + + Colored TextWriter + Original foregroundColor color for the console + Original backgroundColor color for the console + + + + Writes multiple characters to console in one operation (faster) + + Colored TextWriter + Output Text + Start Index + End Index + + + + Writes single character to console + + Colored TextWriter + Output Text + + + + Writes whole string and completes with newline + + Colored TextWriter + Output Text + + + + Default row highlight rules for the console printer + + + + + Check if cleanup should be performed on initialize new file + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Create a wildcard file-mask that allows one to find all files belonging to the same archive. + + Base archive file pattern + Wildcard file-mask + + + + Search directory for all existing files that are part of the same archive. + + Base archive file pattern + + + + + Generate the next archive filename for the archive. + + Base archive file pattern + File date of archive + Existing files in the same archive + + + + + Return all files that should be removed from the provided archive. + + Base archive file pattern + Existing files in the same archive + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + + + + may be configured to compress archived files in a custom way + by setting before logging your first event. + + + + + Create archiveFileName by compressing fileName. + + Absolute path to the log file to compress. + Absolute path to the compressed archive file to create. + + + + Interface for serialization of values, maybe even objects to JSON format. + Useful for wrappers for existing serializers. + + + + + Returns a serialization of an object + into JSON format. + + The object to serialize to JSON. + Serialized value (null = Serialize failed). + + + + Options for JSON serialisation + + + + + Add quotes around object keys? + + + + + Format provider for value + + + + + Format string for value + + + + + Should non-ascii characters be encoded + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + Serialize enum as string value + + + + + Should dictionary keys be sanitized. All characters must either be letters, numbers or underscore character (_). + + Any other characters will be converted to underscore character (_) + + + + + How far down the rabbit hole should the Json Serializer go with object-reflection before stopping + + + + Initializes a new instance of the class. + + + + Line ending mode. + + + + + Insert platform-dependent end-of-line sequence after each line. + + + + + Insert CR LF sequence (ASCII 13, ASCII 10) after each line. + + + + + Insert CR character (ASCII 13) after each line. + + + + + Insert LF character (ASCII 10) after each line. + + + + + Insert null terminator (ASCII 0) after each line. + + + + + Do not insert any line ending. + + + + + Gets the name of the LineEndingMode instance. + + + + + Gets the new line characters (value) of the LineEndingMode instance. + + + + + Initializes a new instance of . + + The mode name. + The new line characters to be used. + + + + Returns the that corresponds to the supplied . + + + The textual representation of the line ending mode, such as CRLF, LF, Default etc. + Name is not case sensitive. + + The value, that corresponds to the . + There is no line ending mode with the specified name. + + + + Compares two objects and returns a + value indicating whether the first one is equal to the second one. + + The first level. + The second level. + The value of mode1.NewLineCharacters == mode2.NewLineCharacters. + + + + Compares two objects and returns a + value indicating whether the first one is not equal to the second one. + + The first mode + The second mode + The value of mode1.NewLineCharacters != mode2.NewLineCharacters. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms + and data structures like a hash table. + + + + + Determines whether the specified is + equal to this instance. + + The to compare with + this instance. + + Value of true if the specified + is equal to this instance; otherwise, false. + + + The parameter is null. + + + + Indicates whether the current object is equal to another object of the same type. + true if the current object is equal to the parameter; otherwise, false. + An object to compare with this object. + + + + Provides a type converter to convert objects to and from other representations. + + + + + Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. + + + true if this converter can perform the conversion; otherwise, false. + + An that provides a format context. A that represents the type you want to convert from. + + + + Converts the given object to the type of this converter, using the specified context and culture information. + + + An that represents the converted value. + + An that provides a format context. The to use as the current culture. The to convert. The conversion cannot be performed. + + + + Sends log messages to a NLog Receiver Service (using WCF or Web Services). + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets the endpoint address. + + The endpoint address. + + + + + Gets or sets the name of the endpoint configuration in WCF configuration file. + + The name of the endpoint configuration. + + + + + Gets or sets a value indicating whether to use binary message encoding. + + + + + + Gets or sets a value indicating whether to use a WCF service contract that is one way (fire and forget) or two way (request-reply) + + + + + + Gets or sets the client ID. + + The client ID. + + + + + Gets the list of parameters. + + The parameters. + + + + + Gets or sets a value indicating whether to include per-event properties in the payload sent to the server. + + + + + + Called when log events are being sent (test hook). + + The events. + The async continuations. + True if events should be sent, false to stop processing them. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Append" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Add value to the , returns ordinal in + + + lookup so only unique items will be added to + value to add + + + + + Creating a new instance of WcfLogReceiverClient + + Inheritors can override this method and provide their own + service configuration - binding and endpoint address + + This method marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Creating a new instance of IWcfLogReceiverClient + + Inheritors can override this method and provide their own + service configuration - binding and endpoint address + + + virtual is used by end users + + + + Sends log messages by email using SMTP protocol. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ Mail target works best when used with BufferingWrapper target + which lets you send multiple log messages in single mail +

+

+ To set up the buffered mail target in the configuration file, + use the following syntax: +

+ +

+ To set up the buffered mail target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets the mailSettings/smtp configuration from app.config in cases when we need those configuration. + E.g when UseSystemNetMailSettings is enabled and we need to read the From attribute from system.net/mailSettings/smtp + + Internal for mocking + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets sender's email address (e.g. joe@domain.com). + + + + + + Gets or sets recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets a value indicating whether to add new lines between log entries. + + A value of true if new lines should be added; otherwise, false. + + + + + Gets or sets the mail subject. + + + + + + Gets or sets mail message body (repeated for each log message send in one mail). + + Alias for the Layout property. + + + + + Gets or sets encoding to be used for sending e-mail. + + + + + + Gets or sets a value indicating whether to send message as HTML instead of plain text. + + + + + + Gets or sets SMTP Server to be used for sending. + + + + + + Gets or sets SMTP Authentication mode. + + + + + + Gets or sets the username used to connect to SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + + Gets or sets the password used to authenticate against SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + + Gets or sets a value indicating whether SSL (secure sockets layer) should be used when communicating with SMTP server. + + . + + + + Gets or sets the port number that SMTP Server is listening on. + + + + + + Gets or sets a value indicating whether the default Settings from System.Net.MailSettings should be used. + + + + + + Specifies how outgoing email messages will be handled. + + + + + + Gets or sets the folder where applications save mail messages to be processed by the local SMTP server. + + + + + + Gets or sets the priority used for sending mails. + + + + + + Gets or sets a value indicating whether NewLine characters in the body should be replaced with
tags. +
+ Only happens when is set to true. + +
+ + + Gets or sets a value indicating the SMTP client timeout. + + Warning: zero is not infinite waiting + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Renders an array logging events. + + Array of logging events. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Create mail and send with SMTP + + event printed in the body of the event + + + + Create buffer for body + + all events + first event for header + last event for footer + + + + + Set properties of + + last event for username/password + client to set properties on + Configure not at , as the properties could have layout renderers. + + + + Handle if it is a virtual directory. + + + + + + + Create key for grouping. Needed for multiple events in one mail message + + event for rendering layouts + string to group on + + + + Append rendered to + + append to this + event for rendering + append if not null + + + + Create the mail message with the addresses, properties and body. + + + + + Render and add the addresses to + + Addresses appended to this list + layout with addresses, ; separated + event for rendering the + added a address? + + + + Writes log messages to an ArrayList in memory for programmatic retrieval. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the list of logs gathered in the . + + + + + Gets or sets the max number of items to have in memory + + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + A parameter to MethodCall. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout to use for parameter value. + + + + Initializes a new instance of the class. + + Name of the parameter. + The layout. + + + + Initializes a new instance of the class. + + The name of the parameter. + The layout. + The type of the parameter. + + + + Gets or sets the name of the parameter. + + + + + + Gets or sets the type of the parameter. Obsolete alias for + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets the class name. + + + + + + Gets or sets the method name. The method must be public and static. + + Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx + e.g. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Initializes a new instance of the class. + + Name of the target. + Method to call on logevent. + + + + Initializes the target. + + + + + Calls the specified Method. + + Method parameters. + The logging event. + + + + Calls the specified Method. + + Method parameters. + + + + The base class for all targets which call methods (local or remote). + Manages parameters and type coercion. + + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + + + + Prepares an array of parameters to be passed based on the logging event and calls DoInvoke(). + + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Sends log messages over the network. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ To print the results, use any application that's able to receive messages over + TCP or UDP. NetCat is + a simple but very powerful command-line tool that can be used for that. This image + demonstrates the NetCat tool receiving log messages from Network target. +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will be very slow. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+

+ There are two specialized versions of the Network target: Chainsaw + and NLogViewer which write to instances of Chainsaw log4j viewer + or NLogViewer application respectively. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6) (not supported on Windows Phone 7.0)
  • +
  • tcp4://host:port - force TCP/IPv4 (not supported on Windows Phone 7.0)
  • +
  • tcp6://host:port - force TCP/IPv6 (not supported on Windows Phone 7.0)
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6, not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp4://host:port - force UDP/IPv4 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp6://host:port - force UDP/IPv6 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • http://host:port/pageName - HTTP using POST verb
  • +
  • https://host:port/pageName - HTTPS using POST verb
  • +
+ For SOAP-based webservice support over HTTP use WebService target. +
+ +
+ + + Gets or sets a value indicating whether to keep connection open whenever possible. + + + + + + Gets or sets a value indicating whether to append newline at the end of log message. + + + + + + Gets or sets the end of line value if a newline is appended at the end of log message . + + + + + + Gets or sets the maximum message size in bytes. + + + + + + Gets or sets the size of the connection cache (number of connections which are kept alive). + + + + + + Gets or sets the maximum current connections. 0 = no maximum. + + + + + + Gets or sets the action that should be taken if the will be more connections than . + + + + + + Gets or sets the maximum queue size. + + + + + + Gets or sets the action that should be taken if the message is larger than + maxMessageSize. + + + + + + Gets or sets the encoding to be used. + + + + + + Get or set the SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Sends the + rendered logging event over the network optionally concatenating it with a newline character. + + The logging event. + + + + Try to remove. + + + + + removed something? + + + + Gets the bytes to be written. + + Log event. + Byte array. + + + + The action to be taken when there are more connections then the max. + + + + + Just allow it. + + + + + Discard the connection item. + + + + + Block until there's more room in the queue. + + + + + Action that should be taken if the message overflows. + + + + + Report an error. + + + + + Split the message into smaller pieces. + + + + + Discard the entire message. + + + + + Represents a parameter to a NLogViewer target. + + + + + Initializes a new instance of the class. + + + + + Gets or sets viewer parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + Sends log messages to the remote instance of NLog Viewer. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include stack contents. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDLC item separator. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets the layout renderer which produces Log4j-compatible XML events. + + + + + Gets or sets the instance of that is used to format log messages. + + + + + + Discards log messages. Used mainly for debugging and benchmarking. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets a value indicating whether to perform layout calculation. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Does nothing. Optionally it calculates the layout text but + discards the results. + + The logging event. + + + + Outputs log messages through the OutputDebugString() Win32 API. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Outputs the rendered logging event through the OutputDebugString() Win32 API. + + The logging event. + + + + Increments specified performance counter on each write. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+ + TODO: + 1. Unable to create a category allowing multiple counter instances (.Net 2.0 API only, probably) + 2. Is there any way of adding new counters without deleting the whole category? + 3. There should be some mechanism of resetting the counter (e.g every day starts from 0), or auto-switching to + another counter instance (with dynamic creation of new instance). This could be done with layouts. + +
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets a value indicating whether performance counter should be automatically created. + + + + + + Gets or sets the name of the performance counter category. + + + + + + Gets or sets the name of the performance counter. + + + + + + Gets or sets the performance counter instance name. + + + + + + Gets or sets the counter help text. + + + + + + Gets or sets the performance counter type. + + + + + + The value by which to increment the counter. + + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Increments the configured performance counter. + + Log event. + + + + Closes the target and releases any unmanaged resources. + + + + + Ensures that the performance counter has been initialized. + + True if the performance counter is operational, false otherwise. + + + + SMTP authentication modes. + + + + + No authentication. + + + + + Basic - username and password. + + + + + NTLM Authentication. + + + + + Represents logging target. + + + + Are all layouts in this target thread-agnostic, if so we don't precalculate the layouts + + + + The Max StackTraceUsage of all the in this Target + + + + + Gets or sets the name of the target. + + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers + Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + Gets the object which can be used to synchronize asynchronous operations that must rely on the . + + + + + Gets the logging configuration this target is part of. + + + + + Gets a value indicating whether the target has been initialized. + + + + + Can be used if has been enabled. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Closes the target. + + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Calls the on each volatile layout + used by this target. + This method won't prerender if all layouts in this target are thread-agnostic. + + + The log event. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Writes the log to the target. + + Log event to write. + + + + Writes the array of log events. + + The log events. + + + + Writes the array of log events. + + The log events. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Closes the target and releases any unmanaged resources. + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Writes async log event to the log target. + + Async Log event to be written out. + + + + Writes a log event to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Log event to be written out. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + NOTE! Obsolete, instead override WriteAsyncThreadSafe(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target, in a thread safe manner. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Writes an array of logging events to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Merges (copies) the event context properties from any event info object stored in + parameters of the given event info object. + + The event info object to perform the merge to. + + + + Renders the event info in layout. + + The layout. + The event info. + String representing log event. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Should the exception be rethrown? + + + Upgrade to private protected when using C# 7.2 + + + + Marks class as a logging target and assigns a name to it. + + This attribute is not required when registering the target in the API. + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets a value indicating whether to the target is a wrapper target (used to generate the target summary documentation page). + + + + + Gets or sets a value indicating whether to the target is a compound target (used to generate the target summary documentation page). + + + + + Attribute details for + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Gets or sets when an empty value should cause the property to be included + + + + + Gets or sets the type of the property. + + + + + Represents target that supports context capture using MDLC, MDC, NDLC and NDC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets or sets a value indicating whether to include contents of the dictionary + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the + + + + + + Gets the array of custom attributes to be passed into the logevent context + + + + + + Constructor + + + + + + + + Check if logevent has properties (or context properties) + + + True if properties should be included + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Dictionary with any context properties for the logEvent (Null if none found) + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Optional prefilled dictionary + Dictionary with any context properties for the logEvent (Null if none found) + + + + Creates combined dictionary of all configured properties for logEvent + + + Dictionary with all collected properties for logEvent + + + + Creates combined dictionary of all configured properties for logEvent + + + Optional prefilled dictionary + Dictionary with all collected properties for logEvent + + + + Generates a new unique name, when duplicate names are detected + + LogEvent that triggered the duplicate name + Duplicate item name + Item Value + Dictionary of context values + New (unique) value (or null to skip value). If the same value is used then the item will be overwritten + + + + Returns the captured snapshot of for the + + + Dictionary with MDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with MDLC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDLC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with GDC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDC key + MDC value + Snapshot of MDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDLC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDLC key + MDLC value + Snapshot of MDLC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDC value + Snapshot of NDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDLC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDLC value + Snapshot of NDLC value + Include object value in snapshot + + + + Take snapshot of a single object value + + Log event + Key Name (null when NDC / NDLC) + Object Value + Snapshot of value + Include object value in snapshot + + + Internal Layout that allows capture of MDC context + + + Internal Layout that allows capture of NDC context + + + Internal Layout that allows capture of MDLC context + + + Internal Layout that allows capture of NDLC context + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the layout used to format log messages. + + + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the text to be rendered. + + + + + + Gets or sets the footer. + + + + + + Gets or sets the header. + + + + + + Gets or sets the layout with header and footer. + + The layout with header and footer. + + + + Sends log messages through System.Diagnostics.Trace. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Always use independent of + + + + + + Forward to (Instead of ) + + + Trace.Fail can have special side-effects, and give fatal exceptions, message dialogs or Environment.FailFast + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Writes the specified logging event to the facility. + + Redirects the log message depending on and . + When is false: + - writes to + - writes to + - writes to + - writes to + - writes to + - writes to + + The logging event. + + + + Web service protocol. + + + + + Use SOAP 1.1 Protocol. + + + + + Use SOAP 1.2 Protocol. + + + + + Use HTTP POST Protocol. + + + + + Use HTTP GET Protocol. + + + + + Do an HTTP POST of a JSON document. + + + + + Do an HTTP POST of an XML document. + + + + + Web Service Proxy Configuration Type + + + + + Default proxy configuration from app.config (System.Net.WebRequest.DefaultWebProxy) + + + Example of how to configure default proxy using app.config + + <system.net> + <defaultProxy enabled = "true" useDefaultCredentials = "true" > + <proxy usesystemdefault = "True" /> + </defaultProxy> + </system.net> + + + + + + Automatic use of proxy with authentication (cached) + + + + + Disables use of proxy (fast) + + + + + Custom proxy address (cached) + + + + + Calls the specified web service on each log message. + + Documentation on NLog Wiki + + The web service must implement a method that accepts a number of string parameters. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

The example web service that works with this example is shown below

+ +
+
+ + + dictionary that maps a concrete implementation + to a specific -value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target + + + + Gets or sets the web service URL. + + + + + + Gets or sets the Web service method name. Only used with Soap. + + + + + + Gets or sets the Web service namespace. Only used with Soap. + + + + + + Gets or sets the protocol to be used when calling web service. + + + + + + Gets or sets the proxy configuration when calling web service + + + + + + Gets or sets the custom proxy address, include port separated by a colon + + + + + + Should we include the BOM (Byte-order-mark) for UTF? Influences the property. + + This will only work for UTF-8. + + + + + + Gets or sets the encoding. + + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Gets or sets the name of the root XML element, + if POST of XML document chosen. + If so, this property must not be null. + (see and ). + + + + + + Gets or sets the (optional) root namespace of the XML document, + if POST of XML document chosen. + (see and ). + + + + + + Gets the array of parameters to be passed. + + + + + + Indicates whether to pre-authenticate the HttpWebRequest (Requires 'Authorization' in parameters) + + + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Invokes the web service method. + + Parameters to be passed. + The logging event. + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Builds the URL to use when calling the web service for a message, depending on the WebServiceProtocol. + + + + + + + Write from input to output. Fix the UTF-8 bom + + + + + + + + + base class for POST formatters, that + implement former PrepareRequest() method, + that creates the content for + the requested kind of HTTP request + + + + + Win32 file attributes. + + + For more information see https://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/createfile.asp. + + + + + Read-only file. + + + + + Hidden file. + + + + + System file. + + + + + File should be archived. + + + + + Device file. + + + + + Normal file. + + + + + File is temporary (should be kept in cache and not + written to disk if possible). + + + + + Sparse file. + + + + + Reparse point. + + + + + Compress file contents. + + + + + File should not be indexed by the content indexing service. + + + + + Encrypted file. + + + + + The system writes through any intermediate cache and goes directly to disk. + + + + + The system opens a file with no system caching. + + + + + Delete file after it is closed. + + + + + A file is accessed according to POSIX rules. + + + + + Asynchronous request queue. + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Gets the number of requests currently in the queue. + + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + Queue was empty before enqueue + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued (-1 means everything). + The array of log events. + + + + Dequeues into a preallocated array, instead of allocating a new one + + Maximum number of items to be dequeued + Preallocated list + + + + Clears the queue. + + + + + Gets or sets the request limit. + + + + + Gets or sets the action to be taken when there's no more room in + the queue and another request is enqueued. + + + + + Notifies about log event that was dropped when set to + + + + + Notifies when queue size is growing over + + + + + Raise event when queued element was dropped because of queue overflow + + Dropped queue item + + + + Raise event when RequestCount overflow + + current requests count + + + + Provides asynchronous, buffered execution of target writes. + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queueing + messages and processing them in a separate thread. You should wrap targets + that spend a non-trivial amount of time in their Write() method with asynchronous + target to speed up logging. +

+

+ Because asynchronous logging is quite a common scenario, NLog supports a + shorthand notation for wrapping all targets with AsyncWrapper. Just add async="true" to + the <targets/> element in the configuration file. +

+ + + ... your targets go here ... + + ]]> +
+ +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of requests in the queue. + The action to be taken when the queue overflows. + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Gets or sets the time in milliseconds to sleep between batches. (1 or less means trigger on new activity) + + + + + + Raise event when Target cannot store LogEvent. + Event arg contains lost LogEvents + + + + + Raises when event queue grow. + Queue can grow when was set to + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the limit of full s to write before yielding into + Performance is better when writing many small batches, than writing a single large batch + + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + + Gets the queue of lazy writer thread requests. + + + + + Schedules a flush of pending events in the queue (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target by starting the lazy writer timer. + + + + + Shuts down the lazy writer timer. + + + + + Starts the lazy writer thread which periodically writes + queued log messages. + + + + + Attempts to start an instant timer-worker-thread which can write + queued log messages. + + Returns true when scheduled a timer-worker-thread + + + + Stops the lazy writer thread. + + + + + Adds the log event to asynchronous queue to be processed by + the lazy writer thread. + + The log event. + + The is called + to ensure that the log event can be processed in another thread. + + + + + Write to queue without locking + + + + + + The action to be taken when the queue overflows. + + + + + Grow the queue. + + + + + Discard the overflowing item. + + + + + Block until there's more room in the queue. + + + + + Causes a flush on a wrapped target if LogEvent satisfies the . + If condition isn't set, flushes on each write. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Gets or sets the condition expression. Log events who meet this condition will cause + a flush on the wrapped target. + + + + + + Delay the flush until the LogEvent has been confirmed as written + + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + The wrapped target. + Name of the target + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes the target. + + + + + Forwards the call to the .Write() + and calls on it if LogEvent satisfies + the flush condition or condition is null. + + Logging event to be written out. + + + + Schedules a flush operation, that triggers when all pending flush operations are completed (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + The action to take when the buffer overflows. + + + + Gets or sets the number of log events to be buffered. + + + + + + Gets or sets the timeout (in milliseconds) after which the contents of buffer will be flushed + if there's no write in the specified period of time. Use -1 to disable timed flushes. + + + + + + Gets or sets a value indicating whether to use sliding timeout. + + + This value determines how the inactivity period is determined. If sliding timeout is enabled, + the inactivity timer is reset after each write, if it is disabled - inactivity timer will + count from the first event written to the buffer. + + + + + + Gets or sets the action to take if the buffer overflows. + + + Setting to will replace the + oldest event with new events without sending events down to the wrapped target, and + setting to will flush the + entire buffer to the wrapped target. + + + + + + Flushes pending events in the buffer (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target. + + + + + Closes the target by flushing pending events in the buffer (if any). + + + + + Adds the specified log event to the buffer and flushes + the buffer in case the buffer gets full. + + The log event. + + + + The action to be taken when the buffer overflows. + + + + + Flush the content of the buffer. + + + + + Discard the oldest item. + + + + + A base class for targets which wrap other (multiple) targets + and provide various forms of target routing. + + + + + Initializes a new instance of the class. + + The targets. + + + + Gets the collection of targets managed by this compound target. + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Writes logging event to the log target. + + Logging event to be written out. + + + + Flush any pending log messages for all wrapped targets. + + The asynchronous continuation. + + + + Concurrent Asynchronous request queue based on + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Gets the number of requests currently in the queue. + + + Only for debugging purposes + + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + Queue was empty before enqueue + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued (-1 means everything). + The array of log events. + + + + Dequeues into a preallocated array, instead of allocating a new one + + Maximum number of items to be dequeued + Preallocated list + + + + Clears the queue. + + + + + Provides fallback-on-error. + + Documentation on NLog Wiki + +

This example causes the messages to be written to server1, + and if it fails, messages go to server2.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Gets or sets a value indicating whether to return to the first target after any successful write. + + + + + + + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + The method remembers the last-known-successful target + and starts the iteration from it. + If is set, the method + resets the target to the first target + stored in . + + + + + Filtering rule for . + + + + + Initializes a new instance of the FilteringRule class. + + + + + Initializes a new instance of the FilteringRule class. + + Condition to be tested against all events. + Filter to apply to all log events when the first condition matches any of them. + + + + Gets or sets the condition to be tested. + + + + + + Gets or sets the resulting filter to be applied when the condition matches. + + + + + + Filters log entries based on a condition. + + Documentation on NLog Wiki + +

This example causes the messages not contains the string '1' to be ignored.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The condition. + + + + Initializes a new instance of the class. + + The wrapped target. + The condition. + + + + Gets or sets the condition expression. Log events who meet this condition will be forwarded + to the wrapped target. + + + + + + Gets or sets the filter. Log events who evaluates to will be discarded + + + + + + + + + Checks the condition against the passed log event. + If the condition is met, the log event is forwarded to + the wrapped target. + + Log event. + + + + + + + Impersonates another user for the duration of the write. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Gets or sets username to change context to. + + + + + + Gets or sets the user account password. + + + + + + Gets or sets Windows domain name to change context to. + + + + + + Gets or sets the Logon Type. + + + + + + Gets or sets the type of the logon provider. + + + + + + Gets or sets the required impersonation level. + + + + + + Gets or sets a value indicating whether to revert to the credentials of the process instead of impersonating another user. + + + + + + Initializes the impersonation context. + + + + + Closes the impersonation context. + + + + + Changes the security context, forwards the call to the .Write() + and switches the context back to original. + + The log event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Changes the security context, forwards the call to the .Write() + and switches the context back to original. + + Log events. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Helper class which reverts the given + to its original value as part of . + + + + + Initializes a new instance of the class. + + The windows impersonation context. + + + + Reverts the impersonation context. + + + + + Limits the number of messages written per timespan to the wrapped target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of messages written per interval. + Interval in which the maximum number of messages can be written. + + + + Gets or sets the maximum allowed number of messages written per . + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets or sets the interval in which messages will be written up to the number of messages. + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets the DateTime when the current will be reset. + + + + + + Gets the number of written in the current . + + + + + + Initializes the target and resets the current Interval and . + + + + + Writes log event to the wrapped target if the current is lower than . + If the is already reached, no log event will be written to the wrapped target. + resets when the current is expired. + + Log event to be written out. + + + + Arguments for events. + + + + + + + + Instance of that was dropped by + + + + + Raises by when + queue is full + and set to + By default queue doubles it size. + + + + + Contains items count and new queue size. + + Required queue size + Current queue size + + + + New queue size + + + + + Current requests count + + + + + Logon provider. + + + + + Use the standard logon provider for the system. + + + The default security provider is negotiate, unless you pass NULL for the domain name and the user name + is not in UPN format. In this case, the default provider is NTLM. + NOTE: Windows 2000/NT: The default security provider is NTLM. + + + + + Filters buffered log entries based on a set of conditions that are evaluated on a group of events. + + Documentation on NLog Wiki + + PostFilteringWrapper must be used with some type of buffering target or wrapper, such as + AsyncTargetWrapper, BufferingWrapper or ASPNetBufferingWrapper. + + +

+ This example works like this. If there are no Warn,Error or Fatal messages in the buffer + only Info messages are written to the file, but if there are any warnings or errors, + the output includes detailed trace (levels >= Debug). You can plug in a different type + of buffering wrapper (such as ASPNetBufferingWrapper) to achieve different + functionality. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Gets or sets the default filter to be applied when no specific rule matches. + + + + + + Gets the collection of filtering rules. The rules are processed top-down + and the first rule that matches determines the filtering condition to + be applied to log events. + + + + + + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Evaluates all filtering rules to find the first one that matches. + The matching rule determines the filtering condition to be applied + to all items in a buffer. If no condition matches, default filter + is applied to the array of log events. + + Array of log events to be post-filtered. + + + + Evaluate all the rules to get the filtering condition + + + + + + + Sends log messages to a randomly selected target. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt + chosen randomly on a per-message basis. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the log event to one of the sub-targets. + The sub-target is randomly chosen. + + The log event. + + + + Repeats each log event the specified number of times. + + Documentation on NLog Wiki + +

This example causes each log message to be repeated 3 times.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The repeat count. + + + + Initializes a new instance of the class. + + The wrapped target. + The repeat count. + + + + Gets or sets the number of times to repeat each log message. + + + + + + Forwards the log message to the by calling the method times. + + The log event. + + + + Retries in case of write error. + + Documentation on NLog Wiki + +

This example causes each write attempt to be repeated 3 times, + sleeping 1 second between attempts if first one fails.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Initializes a new instance of the class. + + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Gets or sets the number of retries that should be attempted on the wrapped target in case of a failure. + + + + + + Gets or sets the time to wait between retries in milliseconds. + + + + + + Special SyncObject to allow closing down Target while busy retrying + + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Writes the specified log event to the wrapped target in a thread-safe manner. + + The log event. + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Distributes log events to targets in a round-robin fashion. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt. + Each odd message is written to file2.txt, each even message goes to file1.txt. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Ensures forwarding happens without holding lock + + + + + + Forwards the write to one of the targets from + the collection. + + The log event. + + The writes are routed in a round-robin fashion. + The first log event goes to the first target, the second + one goes to the second target and so on looping to the + first target when there are no more targets available. + In general request N goes to Targets[N % Targets.Count]. + + + + + Impersonation level. + + + + + Anonymous Level. + + + + + Identification Level. + + + + + Impersonation Level. + + + + + Delegation Level. + + + + + Logon type. + + + + + Interactive Logon. + + + This logon type is intended for users who will be interactively using the computer, such as a user being logged on + by a terminal server, remote shell, or similar process. + This logon type has the additional expense of caching logon information for disconnected operations; + therefore, it is inappropriate for some client/server applications, + such as a mail server. + + + + + Network Logon. + + + This logon type is intended for high performance servers to authenticate plaintext passwords. + The LogonUser function does not cache credentials for this logon type. + + + + + Batch Logon. + + + This logon type is intended for batch servers, where processes may be executing on behalf of a user without + their direct intervention. This type is also for higher performance servers that process many plaintext + authentication attempts at a time, such as mail or Web servers. + The LogonUser function does not cache credentials for this logon type. + + + + + Logon as a Service. + + + Indicates a service-type logon. The account provided must have the service privilege enabled. + + + + + Network Clear Text Logon. + + + This logon type preserves the name and password in the authentication package, which allows the server to make + connections to other network servers while impersonating the client. A server can accept plaintext credentials + from a client, call LogonUser, verify that the user can access the system across the network, and still + communicate with other servers. + NOTE: Windows NT: This value is not supported. + + + + + New Network Credentials. + + + This logon type allows the caller to clone its current token and specify new credentials for outbound connections. + The new logon session has the same local identifier but uses different credentials for other network connections. + NOTE: This logon type is supported only by the LOGON32_PROVIDER_WINNT50 logon provider. + NOTE: Windows NT: This value is not supported. + + + + + Writes log events to all targets. + + Documentation on NLog Wiki + +

This example causes the messages to be written to both file1.txt or file2.txt +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the specified log event to all sub-targets. + + The log event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Base class for targets wrap other (single) targets. + + + + + Gets or sets the target that is wrapped by this target. + + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Current local time retrieved directly from DateTime.Now. + + + + + Gets current local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Current UTC time retrieved directly from DateTime.UtcNow. + + + + + Gets current UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Fast time source that updates current time only once per tick (15.6 milliseconds). + + + + + Gets raw uncached time from derived time source. + + + + + Gets current time cached for one system tick (15.6 milliseconds). + + + + + Fast local time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Fast UTC time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Defines source of current time. + + + + + Gets current time. + + + + + Gets or sets current global time source used in all log events. + + + Default time source is . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to the same form + as time values originated from this source. + + + + There are situations when NLog have to compare the time originated from TimeSource + to the time originated externally in the system. + To be able to provide meaningful result of such comparisons the system time must be expressed in + the same form as TimeSource time. + + + Examples: + - If the TimeSource provides time values of local time, it should also convert the provided + to the local time. + - If the TimeSource shifts or skews its time values, it should also apply + the same transform to the given . + + + + + + Marks class as a time source and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the time source. + + + diff --git a/packages/NLog.4.7.2/lib/net45/NLog.dll b/packages/NLog.4.7.2/lib/net45/NLog.dll new file mode 100644 index 0000000000000000000000000000000000000000..f4fa23912bcc8ba4f2fd80d40bce88a44b9445b6 GIT binary patch literal 869888 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%0A9d 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®=9~XIPHn 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 + + + NLog + + + +

+ Indicates that the value of the marked element could be null sometimes, + so the check for null is necessary before its usage. + + + [CanBeNull] object Test() => null; + + void UseTest() { + var p = Test(); + var s = p.ToString(); // Warning: Possible 'System.NullReferenceException' + } + + + + + Indicates that the value of the marked element could never be null. + + + [NotNull] object Foo() { + return null; // Warning: Possible 'null' assignment + } + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can never be null. + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can be null. + + + + + Indicates that the marked method builds string by format pattern and (optional) arguments. + Parameter, which contains format string, should be given in constructor. The format string + should be in -like form. + + + [StringFormatMethod("message")] + void ShowError(string message, params object[] args) { /* do something */ } + + void Foo() { + ShowError("Failed: {0}"); // Warning: Non-existing argument in format string + } + + + + + Specifies which parameter of an annotated method should be treated as format-string + + + + + For a parameter that is expected to be one of the limited set of values. + Specify fields of which type should be used as values for this parameter. + + + + + Indicates that the function argument should be string literal and match one + of the parameters of the caller function. For example, ReSharper annotates + the parameter of . + + + void Foo(string param) { + if (param == null) + throw new ArgumentNullException("par"); // Warning: Cannot resolve symbol + } + + + + + Indicates that the method is contained in a type that implements + System.ComponentModel.INotifyPropertyChanged interface and this method + is used to notify that some property value changed. + + + The method should be non-static and conform to one of the supported signatures: + + NotifyChanged(string) + NotifyChanged(params string[]) + NotifyChanged{T}(Expression{Func{T}}) + NotifyChanged{T,U}(Expression{Func{T,U}}) + SetProperty{T}(ref T, T, string) + + + + public class Foo : INotifyPropertyChanged { + public event PropertyChangedEventHandler PropertyChanged; + + [NotifyPropertyChangedInvocator] + protected virtual void NotifyChanged(string propertyName) { ... } + + string _name; + + public string Name { + get { return _name; } + set { _name = value; NotifyChanged("LastName"); /* Warning */ } + } + } + + Examples of generated notifications: + + NotifyChanged("Property") + NotifyChanged(() => Property) + NotifyChanged((VM x) => x.Property) + SetProperty(ref myField, value, "Property") + + + + + + Describes dependency between method input and output. + + +

Function Definition Table syntax:

+ + FDT ::= FDTRow [;FDTRow]* + FDTRow ::= Input => Output | Output <= Input + Input ::= ParameterName: Value [, Input]* + Output ::= [ParameterName: Value]* {halt|stop|void|nothing|Value} + Value ::= true | false | null | notnull | canbenull + + If method has single input parameter, it's name could be omitted.
+ Using halt (or void/nothing, which is the same) for method output + means that the methods doesn't return normally (throws or terminates the process).
+ Value canbenull is only applicable for output parameters.
+ You can use multiple [ContractAnnotation] for each FDT row, or use single attribute + with rows separated by semicolon. There is no notion of order rows, all rows are checked + for applicability and applied per each program state tracked by R# analysis.
+
+ + + [ContractAnnotation("=> halt")] + public void TerminationMethod() + + + [ContractAnnotation("halt <= condition: false")] + public void Assert(bool condition, string text) // regular assertion method + + + [ContractAnnotation("s:null => true")] + public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty() + + + // A method that returns null if the parameter is null, + // and not null if the parameter is not null + [ContractAnnotation("null => null; notnull => notnull")] + public object Transform(object data) + + + [ContractAnnotation("=> true, result: notnull; => false, result: null")] + public bool TryParse(string s, out Person result) + + +
+ + + Indicates that marked element should be localized or not. + + + [LocalizationRequiredAttribute(true)] + class Foo { + string str = "my string"; // Warning: Localizable string + } + + + + + Indicates that the value of the marked type (or its derivatives) + cannot be compared using '==' or '!=' operators and Equals() + should be used instead. However, using '==' or '!=' for comparison + with null is always permitted. + + + [CannotApplyEqualityOperator] + class NoEquality { } + + class UsesNoEquality { + void Test() { + var ca1 = new NoEquality(); + var ca2 = new NoEquality(); + if (ca1 != null) { // OK + bool condition = ca1 == ca2; // Warning + } + } + } + + + + + When applied to a target attribute, specifies a requirement for any type marked + with the target attribute to implement or inherit specific type or types. + + + [BaseTypeRequired(typeof(IComponent)] // Specify requirement + class ComponentAttribute : Attribute { } + + [Component] // ComponentAttribute requires implementing IComponent interface + class MyComponent : IComponent { } + + + + + Indicates that the marked symbol is used implicitly (e.g. via reflection, in external library), + so this symbol will not be marked as unused (as well as by other usage inspections). + + + + + Should be used on attributes and causes ReSharper to not mark symbols marked with such attributes + as unused (as well as by other usage inspections) + + + + Only entity marked with attribute considered used. + + + Indicates implicit assignment to a member. + + + + Indicates implicit instantiation of a type with fixed constructor signature. + That means any unused constructor parameters won't be reported as such. + + + + Indicates implicit instantiation of a type. + + + + Specify what is considered used implicitly when marked + with or . + + + + Members of entity marked with attribute are considered used. + + + Entity marked with attribute and all its members considered used. + + + + This attribute is intended to mark publicly available API + which should not be removed and so is treated as used. + + + + + Tells code analysis engine if the parameter is completely handled when the invoked method is on stack. + If the parameter is a delegate, indicates that delegate is executed while the method is executed. + If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + + + + + Indicates that a method does not make any observable state changes. + The same as System.Diagnostics.Contracts.PureAttribute. + + + [Pure] int Multiply(int x, int y) => x * y; + + void M() { + Multiply(123, 42); // Waring: Return value of pure method is not used + } + + + + + Indicates that the return value of method invocation must be used. + + + + + Indicates the type member or parameter of some type, that should be used instead of all other ways + to get the value that type. This annotation is useful when you have some "context" value evaluated + and stored somewhere, meaning that all other ways to get this value must be consolidated with existing one. + + + class Foo { + [ProvidesContext] IBarService _barService = ...; + + void ProcessNode(INode node) { + DoSomething(node, node.GetGlobalServices().Bar); + // ^ Warning: use value of '_barService' field + } + } + + + + + Indicates that a parameter is a path to a file or a folder within a web project. + Path can be relative or absolute, starting from web root (~). + + + + + An extension method marked with this attribute is processed by ReSharper code completion + as a 'Source Template'. When extension method is completed over some expression, it's source code + is automatically expanded like a template at call site. + + + Template method body can contain valid source code and/or special comments starting with '$'. + Text inside these comments is added as source code when the template is applied. Template parameters + can be used either as additional method parameters or as identifiers wrapped in two '$' signs. + Use the attribute to specify macros for parameters. + + + In this example, the 'forEach' method is a source template available over all values + of enumerable types, producing ordinary C# 'foreach' statement and placing caret inside block: + + [SourceTemplate] + public static void forEach<T>(this IEnumerable<T> xs) { + foreach (var x in xs) { + //$ $END$ + } + } + + + + + + Allows specifying a macro for a parameter of a source template. + + + You can apply the attribute on the whole method or on any of its additional parameters. The macro expression + is defined in the property. When applied on a method, the target + template parameter is defined in the property. To apply the macro silently + for the parameter, set the property value = -1. + + + Applying the attribute on a source template method: + + [SourceTemplate, Macro(Target = "item", Expression = "suggestVariableName()")] + public static void forEach<T>(this IEnumerable<T> collection) { + foreach (var item in collection) { + //$ $END$ + } + } + + Applying the attribute on a template method parameter: + + [SourceTemplate] + public static void something(this Entity x, [Macro(Expression = "guid()", Editable = -1)] string newguid) { + /*$ var $x$Id = "$newguid$" + x.ToString(); + x.DoSomething($x$Id); */ + } + + + + + + Allows specifying a macro that will be executed for a source template + parameter when the template is expanded. + + + + + Allows specifying which occurrence of the target parameter becomes editable when the template is deployed. + + + If the target parameter is used several times in the template, only one occurrence becomes editable; + other occurrences are changed synchronously. To specify the zero-based index of the editable occurrence, + use values >= 0. To make the parameter non-editable when the template is expanded, use -1. + > + + + + Identifies the target parameter of a source template if the + is applied on a template method. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC action. If applied to a method, the MVC action name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC area. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is + an MVC controller. If applied to a method, the MVC controller name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC Master. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC model type. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is an MVC + partial view. If applied to a method, the MVC partial view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Allows disabling inspections for MVC views within a class or a method. + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC display template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.DisplayExtensions.DisplayForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC editor template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.EditorExtensions.EditorForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC template. + Use this attribute for custom wrappers similar to + System.ComponentModel.DataAnnotations.UIHintAttribute(System.String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component. If applied to a method, the MVC view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Controller.View(Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component name. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component view. If applied to a method, the MVC view component view name is default. + + + + + ASP.NET MVC attribute. When applied to a parameter of an attribute, + indicates that this parameter is an MVC action name. + + + [ActionName("Foo")] + public ActionResult Login(string returnUrl) { + ViewBag.ReturnUrl = Url.Action("Foo"); // OK + return RedirectToAction("Bar"); // Error: Cannot resolve action + } + + + + + Razor attribute. Indicates that a parameter or a method is a Razor section. + Use this attribute for custom wrappers similar to + System.Web.WebPages.WebPageBase.RenderSection(String). + + + + + Indicates how method, constructor invocation or property access + over collection type affects content of the collection. + + + + Method does not use or modify content of the collection. + + + Method only reads content of the collection but does not modify it. + + + Method can change content of the collection but does not add new elements. + + + Method can add new elements to the collection. + + + + Indicates that the marked method is assertion method, i.e. it halts control flow if + one of the conditions is satisfied. To set the condition, mark one of the parameters with + attribute. + + + + + Indicates the condition parameter of the assertion method. The method itself should be + marked by attribute. The mandatory argument of + the attribute is the assertion type. + + + + + Specifies assertion type. If the assertion method argument satisfies the condition, + then the execution continues. Otherwise, execution is assumed to be halted. + + + + Marked parameter should be evaluated to true. + + + Marked parameter should be evaluated to false. + + + Marked parameter should be evaluated to null value. + + + Marked parameter should be evaluated to not null value. + + + + Indicates that the marked method unconditionally terminates control flow execution. + For example, it could unconditionally throw exception. + + + + + Indicates that method is pure LINQ method, with postponed enumeration (like Enumerable.Select, + .Where). This annotation allows inference of [InstantHandle] annotation for parameters + of delegate type by analyzing LINQ method chains. + + + + + Indicates that IEnumerable, passed as parameter, is not enumerated. + + + + + Indicates that parameter is regular expression pattern. + + + + + Prevents the Member Reordering feature from tossing members of the marked class. + + + The attribute must be mentioned in your member reordering patterns + + + + + XAML attribute. Indicates the type that has ItemsSource property and should be treated + as ItemsControl-derived type, to enable inner items DataContext type resolve. + + + + + XAML attribute. Indicates the property of some BindingBase-derived type, that + is used to bind some item of ItemsControl-derived type. This annotation will + enable the DataContext type resolve for XAML bindings for such properties. + + + Property should have the tree ancestor of the ItemsControl type or + marked with the attribute. + + + + + Support implementation of + + + + + + + + + + + + + + + + + Asynchronous continuation delegate - function invoked at the end of asynchronous + processing. + + Exception during asynchronous processing or null if no exception + was thrown. + + + + Helpers for asynchronous operations. + + + + + Iterates over all items in the given collection and runs the specified action + in sequence (each action executes only after the preceding one has completed without an error). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Repeats the specified asynchronous action multiple times and invokes asynchronous continuation at the end. + + The repeat count. + The asynchronous continuation to invoke at the end. + The action to invoke. + + + + Modifies the continuation by pre-pending given action to execute just before it. + + The async continuation. + The action to pre-pend. + Continuation which will execute the given action before forwarding to the actual continuation. + + + + Attaches a timeout to a continuation which will invoke the continuation when the specified + timeout has elapsed. + + The asynchronous continuation. + The timeout. + Wrapped continuation. + + + + Iterates over all items in the given collection and runs the specified action + in parallel (each action executes on a thread from thread pool). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Runs the specified asynchronous action synchronously (blocks until the continuation has + been invoked). + + The action. + + Using this method is not recommended because it will block the calling thread. + + + + + Wraps the continuation with a guard which will only make sure that the continuation function + is invoked only once. + + The asynchronous continuation. + Wrapped asynchronous continuation. + + + + Gets the combined exception from all exceptions in the list. + + The exceptions. + Combined exception or null if no exception was thrown. + + + + Disposes the Timer, and waits for it to leave the Timer-callback-method + + The Timer object to dispose + Timeout to wait (TimeSpan.Zero means dispose without waiting) + Timer disposed within timeout (true/false) + + + + Asynchronous action. + + Continuation to be invoked at the end of action. + + + + Asynchronous action with one argument. + + Type of the argument. + Argument to the action. + Continuation to be invoked at the end of action. + + + + Represents the logging event with asynchronous continuation. + + + + + Initializes a new instance of the struct. + + The log event. + The continuation. + + + + Gets the log event. + + + + + Gets the continuation. + + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + A value of true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + String Conversion Helpers + + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + Output value + Default value + Returns false if the input value could not be parsed + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + The type of the enum + Output value. Null if parse failed + + + + Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. A parameter specifies whether the operation is case-sensitive. The return value indicates whether the conversion succeeded. + + The enumeration type to which to convert value. + The string representation of the enumeration name or underlying value to convert. + true to ignore case; false to consider case. + When this method returns, result contains an object of type TEnum whose value is represented by value if the parse operation succeeds. If the parse operation fails, result contains the default value of the underlying type of TEnum. Note that this value need not be a member of the TEnum enumeration. This parameter is passed uninitialized. + true if the value parameter was converted successfully; otherwise, false. + Wrapper because Enum.TryParse is not present in .net 3.5 + + + + Enum.TryParse implementation for .net 3.5 + + + + Don't uses reflection + + + + Enables to extract extra context details for + + + + + Name of context + + + + + The current LogFactory next to LogManager + + + + + NLog internal logger. + + Writes to file, console or custom text writer (see ) + + + Don't use as that can lead to recursive calls - stackoverflow + + + + + Gets a value indicating whether internal log includes Trace messages. + + + + + Gets a value indicating whether internal log includes Debug messages. + + + + + Gets a value indicating whether internal log includes Info messages. + + + + + Gets a value indicating whether internal log includes Warn messages. + + + + + Gets a value indicating whether internal log includes Error messages. + + + + + Gets a value indicating whether internal log includes Fatal messages. + + + + + Logs the specified message without an at the Trace level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + Log message. + + + + Logs the specified message without an at the Trace level. + will be only called when logging is enabled for level Trace. + + Function that returns the log message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Trace level. + will be only called when logging is enabled for level Trace. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Debug level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Debug level. + + Log message. + + + + Logs the specified message without an at the Debug level. + will be only called when logging is enabled for level Debug. + + Function that returns the log message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Debug level. + will be only called when logging is enabled for level Debug. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Info level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Info level. + + Log message. + + + + Logs the specified message without an at the Info level. + will be only called when logging is enabled for level Info. + + Function that returns the log message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Info level. + will be only called when logging is enabled for level Info. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Warn level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Warn level. + + Log message. + + + + Logs the specified message without an at the Warn level. + will be only called when logging is enabled for level Warn. + + Function that returns the log message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Warn level. + will be only called when logging is enabled for level Warn. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Error level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Error level. + + Log message. + + + + Logs the specified message without an at the Error level. + will be only called when logging is enabled for level Error. + + Function that returns the log message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Error level. + will be only called when logging is enabled for level Error. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Fatal level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Fatal level. + + Log message. + + + + Logs the specified message without an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Function that returns the log message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Exception to be logged. + Function that returns the log message. + + + + Initializes static members of the InternalLogger class. + + + + + Set the config of the InternalLogger with defaults and config. + + + + + Gets or sets the minimal internal log level. + + If set to , then messages of the levels , and will be written. + + + + Gets or sets a value indicating whether internal messages should be written to the console output stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the console error stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the .Trace + + + + + Gets or sets the file path of the internal log file. + + A value of value disables internal logging to a file. + + + + Gets or sets the text writer that will receive internal logs. + + + + + Event written to the internal log. + Please note that the event is not triggered when then event hasn't the minimal log level set by + + + + + Gets or sets a value indicating whether timestamp should be included in internal log output. + + + + + Is there an thrown when writing the message? + + + + + Logs the specified message without an at the specified level. + + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the specified level. + + Log level. + Log message. + + + + Logs the specified message without an at the specified level. + will be only called when logging is enabled for level . + + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + will be only called when logging is enabled for level . + + Exception to be logged. + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Log message. + + + + Write to internallogger. + + optional exception to be logged. + level + message + optional args for + + + + Create log line with timestamp, exception message etc (if configured) + + + + + Determine if logging should be avoided because of exception type. + + The exception to check. + true if logging should be avoided; otherwise, false. + + + + Determine if logging is enabled for given LogLevel + + The for the log event. + true if logging is enabled; otherwise, false. + + + + Determine if logging is enabled. + + true if logging is enabled; otherwise, false. + + + + Write internal messages to the log file defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged only when the property is true, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged when the property is true, otherwise the + method has no effect. + + + + + Write internal messages to the . + + A message to write. + + Works when property set to true. + The is used in Debug and Release configuration. + The works only in Debug configuration and this is reason why is replaced by . + in DEBUG + + + + + Logs the assembly version and file version of the given Assembly. + + The assembly to log. + + + + A message has been written to the internal logger + + + + + The rendered message + + + + + The log level + + + + + The exception. Could be null. + + + + + The type that triggered this internal log event, for example the FileTarget. + This property is not always populated. + + + + + The context name that triggered this internal log event, for example the name of the Target. + This property is not always populated. + + + + + + + + A cyclic buffer of object. + + + + + Initializes a new instance of the class. + + Buffer size. + Whether buffer should grow as it becomes full. + The maximum number of items that the buffer can grow to. + + + + Gets the capacity of the buffer + + + + + Gets the number of items in the buffer + + + + + Adds the specified log event to the buffer. + + Log event. + The number of items in the buffer. + + + + Gets the array of events accumulated in the buffer and clears the buffer as one atomic operation. + + Events in the buffer. + + + + Condition and expression. + + + + + Initializes a new instance of the class. + + Left hand side of the AND expression. + Right hand side of the AND expression. + + + + Gets the left hand side of the AND expression. + + + + + Gets the right hand side of the AND expression. + + + + + Returns a string representation of this expression. + + A concatenated '(Left) and (Right)' string. + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the conjunction operator. + + + + Exception during evaluation of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Base class for representing nodes in condition expression trees. + + + + + Converts condition text to a condition expression tree. + + Condition text to be converted. + Condition expression tree. + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition layout expression (represented by a string literal + with embedded ${}). + + + + + Initializes a new instance of the class. + + The layout. + + + + Gets the layout. + + The layout. + + + + Returns a string representation of this expression. + + String literal in single quotes. + + + + Evaluates the expression by calculating the value + of the layout in the specified evaluation context. + + Evaluation context. + The value of the layout. + + + + Condition level expression (represented by the level keyword). + + + + + Returns a string representation of the expression. + + The 'level' string. + + + + Evaluates to the current log level. + + Evaluation context. Ignored. + The object representing current log level. + + + + Condition literal expression (numeric, LogLevel.XXX, true or false). + + + + + Initializes a new instance of the class. + + Literal value. + + + + Gets the literal value. + + The literal value. + + + + Returns a string representation of the expression. + + The literal value. + + + + Evaluates the expression. + + Evaluation context. + The literal value as passed in the constructor. + + + + Condition logger name expression (represented by the logger keyword). + + + + + Returns a string representation of this expression. + + A logger string. + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + Returns a string representation of this expression. + + The 'message' string. + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Initializes a new instance of the class. + + Condition method name. + + + + Condition method invocation expression (represented by method(p1,p2,p3) syntax). + + + + + Initializes a new instance of the class. + + Name of the condition method. + of the condition method. + Precompiled delegate of the condition method. + The method parameters. + + + + Gets the method info. + + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + A bunch of utility methods (mostly predicates) which can be used in + condition expressions. Partially inspired by XPath 1.0. + + + + + Compares two values for equality. + + The first value. + The second value. + true when two objects are equal, false otherwise. + + + + Compares two strings for equality. + + The first string. + The second string. + Optional. If true, case is ignored; if false (default), case is significant. + true when two strings are equal, false otherwise. + + + + Gets or sets a value indicating whether the second string is a substring of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a substring of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a prefix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a suffix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Returns the length of a string. + + A string whose lengths is to be evaluated. + The length of the string. + + + + Indicates whether the specified regular expression finds a match in the specified input string. + + The string to search for a match. + The regular expression pattern to match. + A string consisting of the desired options for the test. The possible values are those of the separated by commas. + true if the regular expression finds a match; otherwise, false. + + + + + + + + + + + Marks the class as containing condition methods. + + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Gets the expression to be negated. + + The expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition or expression. + + + + + Initializes a new instance of the class. + + Left hand side of the OR expression. + Right hand side of the OR expression. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + Exception during parsing of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Condition parser. Turns a string representation of condition expression + into an expression tree. + + + + + Initializes a new instance of the class. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + Instance of used to resolve references to condition methods and layout renderers. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + + Try stringed keyword to + + + + success? + + + + Parse number + + negative number? minus should be parsed first. + + + + + Condition relational (==, !=, <, <=, + > or >=) expression. + + + + + Initializes a new instance of the class. + + The left expression. + The right expression. + The relational operator. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Gets the relational operator. + + The operator. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Compares the specified values using specified relational operator. + + The first value. + The second value. + The relational operator. + Result of the given relational operator. + + + + Promote values to the type needed for the comparision, e.g. parse a string to int. + + + + + + + Promotes to type + + + + success? + + + + Try to promote both values. First try to promote to , + when failed, try to . + + + + + + Get the order for the type for comparision. + + + index, 0 to max int. Lower is first + + + + Dictionary from type to index. Lower index should be tested first. + + + + + Build the dictionary needed for the order of the types. + + + + + + Get the string representing the current + + + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + Hand-written tokenizer for conditions. + + + + + Initializes a new instance of the class. + + The string reader. + + + + Gets the type of the token. + + The type of the token. + + + + Gets the token value. + + The token value. + + + + Gets the value of a string token. + + The string token value. + + + + Asserts current token type and advances to the next token. + + Expected token type. + If token type doesn't match, an exception is thrown. + + + + Asserts that current token is a keyword and returns its value and advances to the next token. + + Keyword value. + + + + Gets or sets a value indicating whether current keyword is equal to the specified value. + + The keyword. + + A value of true if current keyword is equal to the specified value; otherwise, false. + + + + + Gets or sets a value indicating whether the tokenizer has reached the end of the token stream. + + + A value of true if the tokenizer has reached the end of the token stream; otherwise, false. + + + + + Gets or sets a value indicating whether current token is a number. + + + A value of true if current token is a number; otherwise, false. + + + + + Gets or sets a value indicating whether the specified token is of specified type. + + The token type. + + A value of true if current token is of specified type; otherwise, false. + + + + + Gets the next token and sets and properties. + + + + + Try the comparison tokens (greater, smaller, greater-equals, smaller-equals) + + current char + is match + + + + Try the logical tokens (and, or, not, equals) + + current char + is match + + + + Mapping between characters and token types for punctuations. + + + + + Initializes a new instance of the CharToTokenType struct. + + The character. + Type of the token. + + + + Token types for condition expressions. + + + + + Marks the class or a member as advanced. Advanced classes and members are hidden by + default in generated documentation. + + + + + Initializes a new instance of the class. + + + + + Identifies that the output of layout or layout render does not change for the lifetime of the current appdomain. + + + A layout(renderer) could be converted to a literal when: + - The layout and all layout properties are SimpleLayout or [AppDomainFixedOutput] + + Recommendation: Apply this attribute to a layout or layout-renderer which have the result only changes by properties of type Layout. + + + + + Used to mark configurable parameters which are arrays. + Specifies the mapping between XML elements and .NET types. + + + + + Initializes a new instance of the class. + + The type of the array item. + The XML element name that represents the item. + + + + Gets the .NET type of the array item. + + + + + Gets the XML element name. + + + + + An assembly is trying to load. + + + + + New event args + + + + + + The assembly that is trying to load. + + + + + NLog configuration section handler class for configuring NLog from App.config. + + + + + Creates a configuration section handler. + + Parent object. + Configuration context object. + Section XML node. + The created section handler object. + + + + Constructs a new instance the configuration item (target, layout, layout renderer, etc.) given its type. + + Type of the item. + Created object of the specified type. + + + + Provides registration information for named items (targets, layouts, layout renderers, etc.) managed by NLog. + + Everything of an assembly could be loaded by + + + + + Called before the assembly will be loaded. + + + + + Initializes a new instance of the class. + + The assemblies to scan for named items. + + + + Gets or sets default singleton instance of . + + + This property implements lazy instantiation so that the is not built before + the internal logger is configured. + + + + + Gets or sets the creator delegate used to instantiate configuration objects. + + + By overriding this property, one can enable dependency injection or interception for created objects. + + + + + Gets the factory. + + The target factory. + + + + Gets the factory. + + The filter factory. + + + + gets the factory + + not using due to backwards-compatibility. + + + + + Gets the factory. + + The layout renderer factory. + + + + Gets the factory. + + The layout factory. + + + + Gets the ambient property factory. + + The ambient property factory. + + + + Legacy interface, no longer used by the NLog engine + + + + + Gets or sets the JSON serializer to use with or + + + + + Gets or sets the string serializer to use with + + + + + Gets or sets the custom object-type transformation for use in , or + + + + + Gets or sets the parameter converter to use with , or + + + + + Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) + + + - Null (Auto Detect) : NLog-parser checks for positional parameters, and will then fallback to string.Format-rendering. + - True: Always performs the parsing of and rendering of using the NLog-parser (Allows custom formatting with ) + - False: Always performs parsing and rendering using string.Format (Fastest if not using structured logging) + + + + + Gets the time source factory. + + The time source factory. + + + + Gets the condition method factory. + + The condition method factory. + + + + Gets the condition method factory (precompiled) + + The condition method factory. + + + + Registers named items from the assembly. + + The assembly. + + + + Registers named items from the assembly. + + The assembly. + Item name prefix. + + + + Call Preload for NLogPackageLoader + + + Every package could implement a class "NLogPackageLoader" (namespace not important) with the public static method "Preload" (no arguments) + This method will be called just before registering all items in the assembly. + + + + + + Call the Preload method for . The Preload method must be static. + + + + + + Clears the contents of all factories. + + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Builds the default configuration item factory. + + Default factory. + + + + Registers items in NLog.Extended.dll using late-bound types, so that we don't need a reference to NLog.Extended.dll. + + + + + Attribute used to mark the default parameters for layout renderers. + + + + + Initializes a new instance of the class. + + + + + Dynamic filtering with a positive list of enabled levels + + + + + Dynamic filtering with a minlevel and maxlevel range + + + + + Format of the exception output to the specific target. + + + + + Appends the Message of an Exception to the specified target. + + + + + Appends the type of an Exception to the specified target. + + + + + Appends the short type of an Exception to the specified target. + + + + + Appends the result of calling ToString() on an Exception to the specified target. + + + + + Appends the method name from Exception's stack trace to the specified target. + + + + + Appends the stack trace from an Exception to the specified target. + + + + + Appends the contents of an Exception's Data property to the specified target. + + + + + Destructure the exception (usually into JSON) + + + + + Appends the from the application or the object that caused the error. + + + + + Appends the from the application or the object that caused the error. + + + + + Appends any additional properties that specific type of Exception might have. + + + + + Factory for class-based items. + + The base type of each item. + The type of the attribute used to annotate items. + + + + Scans the assembly. + + The types to scan. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the item based on a type name. + + Name of the item. + Name of the type. + + + + Clears the contents of the factory. + + + + + Registers a single type definition. + + The item name. + The type of the item. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Creates an item instance. + + The name of the item. + Created item. + + + + Factory specialized for s. + + + + + Clear all func layouts + + + + + Register a layout renderer with a callback function. + + Name of the layoutrenderer, without ${}. + the renderer that renders the value. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides means to populate factories of named items (such as targets, layouts, layout renderers, etc.). + + + + + Implemented by objects which support installation and uninstallation. + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Interface for accessing configuration details + + + + + Name of the config section + + + + + Configuration Key/Value Pairs + + + + + Child config sections + + + + + Interface for loading NLog + + + + + Finds and loads the NLog configuration + + LogFactory that owns the NLog configuration + Name of NLog.config file (optional) + NLog configuration (or null if none found) + + + + Notifies when LoggingConfiguration has been successfully applied + + LogFactory that owns the NLog configuration + NLog Config + + + + Get file paths (including filename) for the possible NLog config files. + + Name of NLog.config file (optional) + The file paths to the possible config file + + + + Level enabled flags for each LogLevel ordinal + + + + + Converts the filter into a simple + + + + + Represents a factory of named items (such as targets, layouts, layout renderers, etc.). + + Base type for each item instance. + Item definition type (typically or ). + + + + Registers new item definition. + + Name of the item. + Item definition. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Creates item instance. + + Name of the item. + Newly created item instance. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides context for install/uninstall operations. + + + + + Mapping between log levels and console output colors. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log output. + + + + Gets or sets the installation log level. + + + + + Gets or sets a value indicating whether to ignore failures during installation. + + + + + Whether installation exceptions should be rethrown. If IgnoreFailures is set to true, + this property has no effect (there are no exceptions to rethrow). + + + + + Gets the installation parameters. + + + + + Gets or sets the log output. + + + + + Logs the specified trace message. + + The message. + The arguments. + + + + Logs the specified debug message. + + The message. + The arguments. + + + + Logs the specified informational message. + + The message. + The arguments. + + + + Logs the specified warning message. + + The message. + The arguments. + + + + Logs the specified error message. + + The message. + The arguments. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Creates the log event which can be used to render layouts during installation/uninstallations. + + Log event info object. + + + + Convert object-value into specified type + + + + + Parses the input value and converts into the wanted type + + Input Value + Wanted Type + Format to use when parsing + Culture to use when parsing + Output value with wanted type + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for extension loading + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for enabling NLog + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + LoggingConfiguration being built + + + + + Interface for fluent setup of LogFactory options for logevent serialization + + + + + LogFactory under configuration + + + + + Encapsulates and the logic to match the actual logger name + All subclasses defines immutable objects. + Concrete subclasses defines various matching rules through + + + + + Creates a concrete based on . + + + Rules used to select the concrete implementation returned: + + if is null => returns (never matches) + if doesn't contains any '*' nor '?' => returns (matches only on case sensitive equals) + if == '*' => returns (always matches) + if doesn't contain '?' + + if contains exactly 2 '*' one at the beginning and one at the end (i.e. "*foobar*) => returns + if contains exactly 1 '*' at the beginning (i.e. "*foobar") => returns + if contains exactly 1 '*' at the end (i.e. "foobar*") => returns + + + returns + + + + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + A concrete + + + + Returns the argument passed to + + + + + Checks whether given name matches the logger name pattern. + + String to be matched. + A value of when the name matches, otherwise. + + + + Defines a that never matches. + Used when pattern is null + + + + + Defines a that always matches. + Used when pattern is '*' + + + + + Defines a that matches with a case-sensitive Equals + Used when pattern is a string without wildcards '?' '*' + + + + + Defines a that matches with a case-sensitive StartsWith + Used when pattern is a string like "*foobar" + + + + + Defines a that matches with a case-sensitive EndsWith + Used when pattern is a string like "foobar*" + + + + + Defines a that matches with a case-sensitive Contains + Used when pattern is a string like "*foobar*" + + + + + Defines a that matches with a complex wildcards combinations: + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + used when pattern is a string containing any number of '?' or '*' in any position + i.e. "*Server[*].Connection[?]" + + + + + Keeps logging configuration and provides simple API to modify it. + + This class is thread-safe..ToList() is used for that purpose. + + + + Variables defined in xml or in API. name is case case insensitive. + + + + + Gets the factory that will be configured + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete on NLog 4.1 and it may be removed in a future release. + + + + Gets the variables defined in the configuration. + + + + + Gets a collection of named targets specified in the configuration. + + + A list of named targets. + + + Unnamed targets (such as those wrapped by other targets) are not returned. + + + + + Gets the collection of file names which should be watched for changes by NLog. + + + + + Gets the collection of logging rules. + + + + + Gets or sets the default culture info to use as . + + + Specific culture info or null to use + + + + + Gets all targets. + + + + + Compare objects based on their name. + + This property is use to cache the comparer object. + + + + Defines methods to support the comparison of objects for equality based on their name. + + + + + Registers the specified target object. The name of the target is read from . + + + The target object with a non + + when is + + + + Registers the specified target object under a given name. + + Name of the target. + The target object. + when is + when is + + + + Finds the target with the specified name. + + + The name of the target to be found. + + + Found target or when the target is not found. + + + + + Finds the target with the specified name and specified type. + + + The name of the target to be found. + + Type of the target + + Found target or when the target is not found of not of type + + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for all loglevels. + + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Finds the logging rule with the specified name. + + The name of the logging rule to be found. + Found logging rule or when not found. + + + + Removes the specified named logging rule. + + The name of the logging rule to be removed. + Found one or more logging rule to remove, or when not found. + + + + Called by LogManager when one of the log configuration files changes. + + + A new instance of that represents the updated configuration. + + + + + Removes the specified named target. + + Name of the target. + + + + Installs target-specific objects on current system. + + The installation context. + + Installation typically runs with administrative permissions. + + + + + Uninstalls target-specific objects from current system. + + The installation context. + + Uninstallation typically runs with administrative permissions. + + + + + Closes all targets and releases any unmanaged resources. + + + + + Log to the internal (NLog) logger the information about the and associated with this instance. + + + The information are only recorded in the internal logger if Debug level is enabled, otherwise nothing is + recorded. + + + + + Validates the configuration. + + + + + Copies all variables from provided dictionary into current configuration variables. + + Master variables dictionary + + + + Replace a simple variable with a value. The original value is removed and thus we cannot redo this in a later stage. + + + + + + + Checks whether unused targets exist. If found any, just write an internal log at Warn level. + If initializing not started or failed, then checking process will be canceled + + + + + + + + Arguments for events. + + + + + Initializes a new instance of the class. + + The new configuration. + The old configuration. + + + + Gets the old configuration. + + The old configuration. + + + + Gets the new configuration. + + The new configuration. + + + + Gets the new configuration + + The new configuration. + + + + Gets the old configuration + + The old configuration. + + + + Gets the optional boolean attribute value. + + + Name of the attribute. + Default value to return if the attribute is not found or if there is a parse error + Boolean attribute value or default. + + + + Remove the namespace (before :) + + + x:a, will be a + + + + + + + Enables loading of NLog configuration from a file + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Loads NLog configuration from + + + + + Constructor + + + + + + Loads NLog configuration from provided config section + + + + + + + Builds list with unique keys, using last value of duplicates. High priority keys placed first. + + + + + + + Parse loglevel, but don't throw if exception throwing is disabled + + Name of attribute for logging. + Value of parse. + Used if there is an exception + + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Parse {Rules} xml element + + + Rules are added to this parameter. + + + + Parse {Logger} xml element + + + + + + Parse boolean + + Name of the property for logging. + value to parse + Default value to return if the parse failed + Boolean attribute value or default. + + + + Arguments for . + + + + + Initializes a new instance of the class. + + Whether configuration reload has succeeded. + + + + Initializes a new instance of the class. + + Whether configuration reload has succeeded. + The exception during configuration reload. + + + + Gets a value indicating whether configuration reload has succeeded. + + A value of true if succeeded; otherwise, false. + + + + Gets the exception which occurred during configuration reload. + + The exception. + + + + Enables FileWatcher for the currently loaded NLog Configuration File, + and supports automatic reload on file modification. + + + + + Represents a logging rule. An equivalent of <logger /> configuration element. + + + + + Create an empty . + + + + + Create an empty . + + + + + Create a new with a and which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a new with a which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a (disabled) . You should call or see cref="EnableLoggingForLevels"/> to enable logging. + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Target to be written to when the rule matches. + + + + Rule identifier to allow rule lookup + + + + + Gets a collection of targets that should be written to when this rule matches. + + + + + Gets a collection of child rules to be evaluated when this rule matches. + + + + + Gets a collection of filters to be checked before writing to targets. + + + + + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + + Gets or sets logger name pattern. + + + Logger name pattern used by to check if a logger name matches this rule. + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + + + + Gets the collection of log levels enabled by this rule. + + + + + Default action if none of the filters match + + + + + Enables logging for a particular level. + + Level to be enabled. + + + + Enables logging for a particular levels between (included) and . + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Disables logging for a particular level. + + Level to be disabled. + + + + Disables logging for particular levels between (included) and . + + Minimum log level to be disables. + Maximum log level to de disabled. + + + + Enables logging the levels between (included) and . All the other levels will be disabled. + + >Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Returns a string representation of . Used for debugging. + + + A that represents the current . + + + + + Checks whether te particular log level is enabled for this rule. + + Level to be checked. + A value of when the log level is enabled, otherwise. + + + + Checks whether given name matches the . + + String to be matched. + A value of when the name matches, otherwise. + + + + Default filtering with static level config + + + + + Factory for locating methods. + + + + + Initializes a new instance of the class. + + Helper method to extract relevant methods from type + + + + Scans the assembly for classes marked with expected class + and methods marked with expected and adds them + to the factory. + + The types to scan. + The prefix to use for names. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Scans a type for relevant methods with their symbolic names + + Include types that are marked with this attribute + Include methods that are marked with this attribute + Class Type to scan + Collection of methods with their symbolic names + + + + Clears contents of the factory. + + + + + Registers the definition of a single method. + + The method name. + The method info. + + + + Registers the definition of a single method. + + The method name. + The method info. + The precompiled method delegate. + + + + Tries to retrieve method by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Tries to retrieve method-delegate by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Retrieves method by name. + + Method name. + MethodInfo object. + + + + Retrieves method by name. + + Method name. + Method delegate object. + + + + Tries to get method definition. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Marks the layout or layout renderer depends on mutable objects from the LogEvent + + This can be or + + + + + Attaches a simple name to an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The name of the item. + + + + Gets the name of the item. + + The name of the item. + + + + Indicates NLog should not scan this property during configuration. + + + + + Initializes a new instance of the class. + + + + + Marks the object as configuration item for NLog. + + + + + Initializes a new instance of the class. + + + + + Represents simple XML element with case-insensitive attribute semantics. + + + + + Initializes a new instance of the class. + + The reader to initialize element from. + + + + Prevents a default instance of the class from being created. + + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + Last error occured during configuration read + + + + + Returns children elements with the specified element name. + + Name of the element. + Children elements with the specified element name. + + + + Asserts that the name of the element is among specified element names. + + The allowed names. + + + + Returns all parsing errors from current and all child elements. + + + + + Special attribute we could ignore + + + + + Default implementation of + + + + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Provides simple programmatic configuration API used for trivial logging cases. + + Warning, these methods will overwrite the current config. + + + + + Configures NLog for console logging so that all messages above and including + the level are output to the console. + + + + + Configures NLog for console logging so that all messages above and including + the specified level are output to the console. + + The minimal logging level. + + + + Configures NLog for to log to the specified target so that all messages + above and including the level are output. + + The target to log all messages to. + + + + Configures NLog for to log to the specified target so that all messages + above and including the specified level are output. + + The target to log all messages to. + The minimal logging level. + + + + Configures NLog for file logging so that all messages above and including + the level are written to the specified file. + + Log file name. + + + + Configures NLog for file logging so that all messages above and including + the specified level are written to the specified file. + + Log file name. + The minimal logging level. + + + + Value indicating how stack trace should be captured when processing the log event. + + + + + Stack trace should not be captured. + + + + + Stack trace should be captured without source-level information. + + + + + Stack trace should be captured including source-level information such as line numbers. + + + + + Capture maximum amount of the stack trace information supported on the platform. + + + + + Marks the layout or layout renderer as thread independent - it producing correct results + regardless of the thread it's running on. + + Without this attribute everything is rendered on the main thread. + + + If this attribute is set on a layout, it could be rendered on the another thread. + This could be more efficient as it's skipped when not needed. + + If context like HttpContext.Current is needed, which is only available on the main thread, this attribute should not be applied. + + See the AsyncTargetWrapper and BufferTargetWrapper with the , using + + Apply this attribute when: + - The result can we rendered in another thread. Delaying this could be more efficient. And/Or, + - The result should not be precalculated, for example the target sends some extra context information. + + + + + Marks the layout or layout renderer as thread safe - it producing correct results + regardless of the number of threads it's running on. + + Without this attribute then the target concurrency will be reduced + + + + + A class for configuring NLog through an XML configuration file + (App.config style or App.nlog style). + + Parsing of the XML file is also implemented in this class. + + + - This class is thread-safe..ToList() is used for that purpose. + - Update TemplateXSD.xml for changes outside targets + + + + + Initializes a new instance of the class. + + Configuration file to be read. + + + + Initializes a new instance of the class. + + Configuration file to be read. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + XML reader to read from. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + The XML contents. + Name of the XML file. + The to which to apply any applicable configuration values. + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + NLog LogFactory + + + + Gets the default object by parsing + the application configuration file (app.exe.config). + + + + + Did the Succeeded? true= success, false= error, null = initialize not started yet. + + + + + Gets or sets a value indicating whether all of the configuration files + should be watched for changes and reloaded automatically when changed. + + + + + Gets the collection of file names which should be watched for changes by NLog. + This is the list of configuration files processed. + If the autoReload attribute is not set it returns empty collection. + + + + + Re-reads the original configuration file and returns the new object. + + The new object. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Create XML reader for (xml config) file. + + filepath + reader or null if filename is empty. + + + + Initializes the configuration. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Checks whether any error during XML configuration parsing has occured. + If there are any and ThrowConfigExceptions or ThrowExceptions + setting is enabled - throws NLogConfigurationException, otherwise + just write an internal log at Warn level. + + Root NLog configuration xml element + + + + Add a file with configuration. Check if not already included. + + + + + + + Parse the root + + + path to config file. + The default value for the autoReload option. + + + + Parse {configuration} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parse {NLog} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Include (multiple) files by filemask, e.g. *.nlog + + base directory in case if is relative + relative or absolute fileMask + + + + + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language + described
here. + + + + + Gets or sets the condition expression. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + An abstract filter class. Provides a way to eliminate log messages + based on properties other than logger name and log level. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the action to be taken when filter matches. + + + + + + Gets the result of evaluating filter against given log event. + + The log event. + Filter result. + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Marks class as a layout renderer and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the filter. + + + + Filter result. + + + + + The filter doesn't want to decide whether to log or discard the message. + + + + + The message should be logged. + + + + + The message should not be logged. + + + + + The message should be logged and processing should be finished. + + + + + The message should not be logged and processing should be finished. + + + + + A base class for filters that are based on comparing a value to a layout. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout to be used to filter log messages. + + The layout. + + + + + Matches when the calculated layout contains the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets the substring to be matched. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets a string to compare the layout to. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches the provided filter-method + + + + + Initializes a new instance of the class. + + + + + + + + Matches when the calculated layout does NOT contain the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets the substring to be matched. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is NOT equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a string to compare the layout to. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the result of the calculated layout has been repeated a moment ago + + + + + How long before a filter expires, and logging is accepted again + + + + + + Max length of filter values, will truncate if above limit + + + + + + Applies the configured action to the initial logevent that starts the timeout period. + Used to configure that it should ignore all events until timeout. + + + + + + Max number of unique filter values to expect simultaneously + + + + + + Default number of unique filter values to expect, will automatically increase if needed + + + + + + Insert FilterCount value into when an event is no longer filtered + + + + + + Append FilterCount to the when an event is no longer filtered + + + + + + Reuse internal buffers, and doesn't have to constantly allocate new buffers + + + + + + Default buffer size for the internal buffers + + + + + + Can be used if has been enabled. + + + + + Initializes a new instance of the class. + + + + + Checks whether log event should be logged or not. In case the LogEvent has just been repeated. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Uses object pooling, and prunes stale filter items when the pool runs dry + + + + + Remove stale filter-value from the cache, and fill them into the pool for reuse + + + + + Renders the Log Event into a filter value, that is used for checking if just repeated + + + + + Repeated LogEvent detected. Checks if it should activate filter-action + + + + + Filter Value State (mutable) + + + + + Filter Lookup Key (immutable) + + + + + A global logging class using caller info to find the logger. + + + + + Starts building a log event with the specified . + + The log level. + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Trace level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Debug level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Info level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Warn level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Error level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Fatal level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + A fluent class to build log events for NLog. + + + + + Initializes a new instance of the class. + + The to send the log event. + + + + Initializes a new instance of the class. + + The to send the log event. + The for the log event. + + + + Gets the created by the builder. + + + + + Sets the information of the logging event. + + The exception information of the logging event. + current for chaining calls. + + + + Sets the level of the logging event. + + The level of the logging event. + current for chaining calls. + + + + Sets the logger name of the logging event. + + The logger name of the logging event. + current for chaining calls. + + + + Sets the log message on the logging event. + + The log message for the logging event. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + The fourth object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + An object that supplies culture-specific formatting information. + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets a per-event context property on the logging event. + + The name of the context property. + The value of the context property. + current for chaining calls. + + + + Sets multiple per-event context properties on the logging event. + + The properties to set. + current for chaining calls. + + + + Sets the timestamp of the logging event. + + The timestamp of the logging event. + current for chaining calls. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + current for chaining calls. + + + + Writes the log event to the underlying logger. + + The method or property name of the caller to the method. This is set at by the compiler. + The full path of the source file that contains the caller. This is set at by the compiler. + The line number in the source file at which the method is called. This is set at by the compiler. + + + + Writes the log event to the underlying logger if the condition delegate is true. + + If condition is true, write log event; otherwise ignore event. + The method or property name of the caller to the method. This is set at by the compiler. + The full path of the source file that contains the caller. This is set at by the compiler. + The line number in the source file at which the method is called. This is set at by the compiler. + + + + Writes the log event to the underlying logger if the condition is true. + + If condition is true, write log event; otherwise ignore event. + The method or property name of the caller to the method. This is set at by the compiler. + The full path of the source file that contains the caller. This is set at by the compiler. + The line number in the source file at which the method is called. This is set at by the compiler. + + + + Extension methods for NLog . + + + + + Starts building a log event with the specified . + + The logger to write the log event to. + The log level. + current for chaining calls. + + + + Starts building a log event at the Trace level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Debug level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Info level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Warn level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Error level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Fatal level. + + The logger to write the log event to. + current for chaining calls. + + + + Global Diagnostics Context + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Global Diagnostics Context - a dictionary structure to hold per-application-instance values. + + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The item value, if defined; otherwise null. + + + + Returns all item names + + A collection of the names of all items in the Global Diagnostics Context. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Include context properties + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Interface for serialization of object values into JSON format + + + + + Serialization of an object into JSON format. + + The object to serialize to JSON. + Output destination. + Serialize succeeded (true/false) + + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format.s + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Logger with only generic methods (passing 'LogLevel' to methods) and core properties. + + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Extensions for NLog . + + + + + Writes the diagnostic message and exception at the specified level. + + A logger implementation that will handle the message. + The log level. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Allocates new builder and appends to the provided target builder on dispose + + + + + Access the new builder allocated + + + + + Helpers for . + + + + + Load from url + + file or path, including .dll + basepath, optional + + + + + Load from url + + name without .dll + + + + + Forward declare of system delegate type for use by other classes + + + + + Keeps track of pending operation count, and can notify when pending operation count reaches zero + + + + + Mark operation has started + + + + + Mark operation has completed + + Exception coming from the completed operation [optional] + + + + Registers an AsyncContinuation to be called when all pending operations have completed + + Invoked on completion + AsyncContinuation operation + + + + Clear o + + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Legacy attempt to skip async MoveNext, but caused source file line number to be lost + + + + + Gets the entire stack trace. + + + + + Finds first user stack frame in a stack trace + + The stack trace of the logging method invocation + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + Index of the first user stack frame or 0 if all stack frames are non-user + + + + This is only done for legacy reason, as the correct method-name and line-number should be extracted from the MoveNext-StackFrame + + The stack trace of the logging method invocation + Starting point for skipping async MoveNext-frames + + + + Assembly to skip? + + Find assembly via this frame. + true, we should skip. + + + + Is this the type of the logger? + + get type of this logger in this frame. + Type of the logger. + + + + + Memory optimized filtering + + Passing state too avoid delegate capture and memory-allocations. + + + + Internal configuration manager used to read .NET configuration files. + Just a wrapper around the BCL ConfigurationManager, but used to enable + unit testing. + + + + + Gets the wrapper around ConfigurationManager.AppSettings. + + + + + Provides untyped IDictionary interface on top of generic IDictionary. + + The type of the key. + The type of the value. + + + + Initializes a new instance of the DictionaryAdapter class. + + The implementation. + + + + Gets an object containing the values in the object. + + + + An object containing the values in the object. + + + + + Gets the number of elements contained in the . + + + + The number of elements contained in the . + + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + + + Gets an object that can be used to synchronize access to the . + + + + An object that can be used to synchronize access to the . + + + + + Gets a value indicating whether the object has a fixed size. + + + true if the object has a fixed size; otherwise, false. + + + + + Gets a value indicating whether the object is read-only. + + + true if the object is read-only; otherwise, false. + + + + + Gets an object containing the keys of the object. + + + + An object containing the keys of the object. + + + + + Gets or sets the with the specified key. + + Dictionary key. + Value corresponding to key or null if not found + + + + Adds an element with the provided key and value to the object. + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + + Removes all elements from the object. + + + + + Determines whether the object contains an element with the specified key. + + The key to locate in the object. + + True if the contains an element with the key; otherwise, false. + + + + + Returns an object for the object. + + + An object for the object. + + + + + Removes the element with the specified key from the object. + + The key of the element to remove. + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Wrapper IDictionaryEnumerator. + + + + + Initializes a new instance of the class. + + The wrapped. + + + + Gets both the key and the value of the current dictionary entry. + + + + A containing both the key and the value of the current dictionary entry. + + + + + Gets the key of the current dictionary entry. + + + + The key of the current element of the enumeration. + + + + + Gets the value of the current dictionary entry. + + + + The value of the current element of the enumeration. + + + + + Gets the current element in the collection. + + + + The current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + + True if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Ensures that IDictionary.GetEnumerator returns DictionaryEntry values + + + + + UTF-8 BOM 239, 187, 191 + + + + + Safe way to get environment variables. + + + + + Helper class for dealing with exceptions. + + + + + Mark this exception as logged to the . + + + + + + + Is this exception logged to the ? + + + trueif the has been logged to the . + + + + Determines whether the exception must be rethrown and logs the error to the if is false. + + Advised to log first the error to the before calling this method. + + The exception to check. + Target context of the exception. + trueif the must be rethrown, false otherwise. + + + + Determines whether the exception must be rethrown immediately, without logging the error to the . + + Only used this method in special cases. + + The exception to check. + trueif the must be rethrown, false otherwise. + + + + Object construction helper. + + + + + Adapter for to + + + + + Initializes a new instance of the class. + + The to wrap. + + + + Creates an AppDomainWrapper for the current + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Interface for fakeable the current . Not fully implemented, please methods/properties as necessary. + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + Abstract calls for the application environment + + + + + Gets current process name (excluding filename extension, if any). + + + + + Abstract calls to FileSystem + + + + Determines whether the specified file exists. + The file to check. + + + Returns the content of the specified file + The file to load. + + + + Base class for optimized file appenders. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Gets the path of the file, including file extension. + + The name of the file. + + + + Gets or sets the creation time for a file associated with the appender. The time returned is in Coordinated + Universal Time [UTC] standard. + + The creation time of the file. + + + + Gets or sets the creation time for a file associated with the appender. Synchronized by + The time format is based on + + + + + Gets the last time the file associated with the appender is opened. The time returned is in Coordinated + Universal Time [UTC] standard. + + The time the file was last opened. + + + + Gets the file creation parameters. + + The file creation parameters. + + + + Writes the specified bytes. + + The bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Creates the file stream. + + If set to true sets the file stream to allow shared writing. + If larger than 0 then it will be used instead of the default BufferSize for the FileStream. + A object which can be used to write to the file. + + + + Base class for optimized file appenders which require the usage of a mutex. + + It is possible to use this class as replacement of BaseFileAppender and the mutex functionality + is not enforced to the implementing subclasses. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Gets the mutually-exclusive lock for archiving files. + + The mutex for archiving. + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Creates a mutex that is sharable by more than one process. + + The prefix to use for the name of the mutex. + A object which is sharable by multiple processes. + + + + Implementation of which caches + file information. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Closes this instance of the appender. + + + + + Flushes this current appender. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Writes the specified bytes to a file. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Factory class which creates objects. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Maintains a collection of file appenders usually associated with file targets. + + + + + An "empty" instance of the class with zero size and empty list of appenders. + + + + + Initializes a new "empty" instance of the class with zero size and empty + list of appenders. + + + + + Initializes a new instance of the class. + + + The size of the list should be positive. No validations are performed during initialization as it is an + internal class. + + Total number of appenders allowed in list. + Factory used to create each appender. + Parameters used for creating a file. + + + + The archive file path pattern that is used to detect when archiving occurs. + + + + + Invalidates appenders for all files that were archived. + + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + Interface that provides parameters for create file function. + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + Gets or sets the log file buffer size in bytes. + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + Gets or sets the file attributes (Windows only). + + + + + Should archive mutex be created? + + + + + Should manual simple detection of file deletion be enabled? + + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + The archive file path pattern that is used to detect when archiving occurs. + + + + + Invalidates appenders for all files that were archived. + + + + + Interface implemented by all factories capable of creating file appenders. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + Instance of which can be used to write to the file. + + + + Provides a multi process-safe atomic file appends while + keeping the files open. + + + On Unix you can get all the appends to be atomic, even when multiple + processes are trying to write to the same file, because setting the file + pointer to the end of the file and appending can be made one operation. + On Win32 we need to maintain some synchronization between processes + (global named mutex is used for this) + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Closes this instance. + + + + + Flushes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Appender used to discard data for the FileTarget. + Used mostly for testing entire stack except the actual writing to disk. + Throws away all data. + + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Multi-process and multi-host file appender which attempts + to get exclusive write access and retries if it's not available. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Optimized single-process file appender which keeps the file open for exclusive write. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Provides a multi process-safe atomic file append while + keeping the files open. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Creates or opens a file in a special mode, so that writes are automatically + as atomic writes at the file end. + See also "UnixMultiProcessFileAppender" which does a similar job on *nix platforms. + + File to create or open + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Closes this instance. + + + + + Flushes this instance. + + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + A layout that represents a filePath. + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Cached invalid file names char array to avoid memory allocation every time Path.GetInvalidFileNameChars() is called. + + + + + not null when == false + + + + + non null is fixed, + + + + + is the cache-key, and when newly rendered filename matches the cache-key, + then it reuses the cleaned cache-value . + + + + + is the cache-value that is reused, when the newly rendered filename + matches the cache-key + + + + Initializes a new instance of the class. + + + + Render the raw filename from Layout + + The log event. + StringBuilder to minimize allocations [optional]. + String representation of a layout. + + + + Convert the raw filename to a correct filename + + The filename generated by Layout. + String representation of a correct filename. + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Convert object to string + + value + format for conversion. + + + If is null and isn't a already, then the will get a locked by + + + + + Interface for the wrapper around System.Configuration.ConfigurationManager. + + + + + Gets the wrapper around ConfigurationManager.AppSettings. + + + + + Format a log message + + + + + Format the message and return + + LogEvent with message to be formatted + formatted message + + + + Has the logevent properties? + + LogEvent with message to be formatted + False when logevent has no properties to be extracted + + + + Appends the logevent message to the provided StringBuilder + + LogEvent with message to be formatted + The to append the formatted message. + + + + Get the Raw, unformatted and unstrinyfied, value + + + + + Get the raw value + + + The value + RawValue supported? + + + + Interface implemented by layouts and layout renderers. + + + + + Renders the the value of layout or layout renderer in the context of the specified log event. + + The log event. + String representation of a layout. + + + + Supports mocking of SMTP Client code. + + + + + Specifies how outgoing email messages will be handled. + + + + + Gets or sets the name or IP address of the host used for SMTP transactions. + + + + + Gets or sets the port used for SMTP transactions. + + + + + Gets or sets a value that specifies the amount of time after which a synchronous Send call times out. + + + + + Gets or sets the credentials used to authenticate the sender. + + + + + Sends an e-mail message to an SMTP server for delivery. These methods block while the message is being transmitted. + + + System.Net.Mail.MailMessage + MailMessage + A MailMessage that contains the message to send. + + + + Gets or sets the folder where applications save mail messages to be processed by the local SMTP server. + + + + + Supports rendering as string value with limited or no allocations (preferred) + + + + + Renders the value of layout renderer in the context of the specified log event + + + null if not possible or unknown + + + + Supports object initialization and termination. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Render the event info as parse as short + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as int + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as bool + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Logger configuration. + + + + + Initializes a new instance of the class. + + The targets by level. + Use the old exception log handling of NLog 3.0? + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete before NLog 4.3.11 and it will be removed in NLog 5. + + + + Gets targets for the specified level. + + The level. + Chain of targets with attached filters. + + + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + New formatter + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + The MessageFormatter delegate + + + + + + + + Most-Recently-Used-Cache, that discards less frequently used items on overflow + + + + + Constructor + + Maximum number of items the cache will hold before discarding. + + + + Attempt to insert item into cache. + + Key of the item to be inserted in the cache. + Value of the item to be inserted in the cache. + true when the key does not already exist in the cache, false otherwise. + + + + Lookup existing item in cache. + + Key of the item to be searched in the cache. + Output value of the item found in the cache. + True when the key is found in the cache, false otherwise. + + + + Watches multiple files at the same time and raises an event whenever + a single change is detected in any of those files. + + + + + The types of changes to watch for. + + + + + Occurs when a change is detected in one of the monitored files. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Stops watching all files. + + + + + Stops watching the specified file. + + + + + + Watches the specified files for changes. + + The file names. + + + + Supports mocking of SMTP Client code. + + + Disabled Error CS0618 'SmtpClient' is obsolete: 'SmtpClient and its network of types are poorly designed, + we strongly recommend you use https://github.com/jstedfast/MailKit and https://github.com/jstedfast/MimeKit instead' + + + + + Network sender which uses HTTP or HTTPS POST. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Creates instances of objects for given URLs. + + + + + Creates a new instance of the network sender based on a network URL. + + URL that determines the network sender to be created. + The maximum queue size. + SSL protocols for TCP + KeepAliveTime for TCP + + A newly created network sender. + + + + + Interface for mocking socket calls. + + + + + A base class for all network senders. Supports one-way sending of messages + over various protocols. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Gets the address of the network endpoint. + + + + + Gets the last send time. + + + + + Initializes this network sender. + + + + + Closes the sender and releases any unmanaged resources. + + The continuation. + + + + Flushes any pending messages and invokes a continuation. + + The continuation. + + + + Send the given text over the specified protocol. + + Bytes to be sent. + Offset in buffer. + Number of bytes to send. + The asynchronous continuation. + + + + Closes the sender and releases any unmanaged resources. + + + + + Performs sender-specific initialization. + + + + + Performs sender-specific close operation. + + The continuation. + + + + Performs sender-specific flush. + + The continuation. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Parses the URI into an endpoint address. + + The URI to parse. + The address family. + Parsed endpoint. + + + + Default implementation of . + + + + + + + + A base class for network senders that can block or send out-of-order + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Performs sender-specific flush. + + The continuation. + + + + Socket proxy for mocking Socket code. + + + + + Initializes a new instance of the class. + + The address family. + Type of the socket. + Type of the protocol. + + + + Gets underlying socket instance. + + + + + Closes the wrapped socket. + + + + + Invokes ConnectAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendToAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Sends messages over a TCP network connection. + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + The address family. + + + + Creates the socket with given parameters. + + The host address. + The address family. + Type of the socket. + Type of the protocol. + Instance of which represents the socket. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Facilitates mocking of class. + + + + + Raises the Completed event. + + + + + Sends messages over the network as UDP datagrams. + + + + + Initializes a new instance of the class. + + URL. Must start with udp://. + The address family. + + + + Creates the socket. + + The address family. + Type of the socket. + Type of the protocol. + Implementation of to use. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Sends the specified text as a UDP datagram. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Scans (breadth-first) the object graph following all the edges whose are + instances have attached and returns + all objects implementing a specified interfaces. + + + + + Finds the objects which have attached which are reachable + from any of the given root objects when traversing the object graph over public properties. + + Type of the objects to return. + Also search the properties of the wanted objects. + The root objects. + Ordered list of objects implementing T. + + + ISet is not there in .net35, so using HashSet + + + + Helper for extracting propertyPath + + + + + Object Path to check + + + + + Try get value from , using , and set into + + + + + + + + Converts object into a List of property-names and -values using reflection + + + + + Scans properties for name (Skips string-compare and value-lookup until finding match) + + + + + Scans properties for name (Skips property value lookup until finding match) + + + + + Scans properties for name + + + + + Binder for retrieving value of + + + + + + + + Combine paths + + basepath, not null + optional dir + optional file + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Trims directory separators from the path + + path, could be null + never null + + + + Detects the platform the NLog is running on. + + + + + Gets the current runtime OS. + + + + + Gets a value indicating whether current OS is Win32-based (desktop or mobile). + + + + + Gets a value indicating whether current OS is Unix-based. + + + + + Gets a value indicating whether current runtime is Mono-based + + + + + Gets a value indicating whether current runtime supports use of mutex + + + + + Will creating a mutex succeed runtime? + "Cached" detection + + + + + Will creating a mutex succeed runtime? + + + + + Dictionary that combines the standard with the + MessageTemplate-properties extracted from the . + + The are returned as the first items + in the collection, and in positional order. + + + + + Value of the property + + + + + Is this a property of the message? + + + + + + + Value of the property + Is this a property of the message? + + + + The properties of the logEvent + + + + + The properties extracted from the message + + + + + Injects the list of message-template-parameter into the IDictionary-interface + + Message-template-parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check if the message-template-parameters can be used directly without allocating a dictionary + + Message-template-parameters + Are all parameter names unique (true / false) + + + + Attempt to insert the message-template-parameters into an empty dictionary + + Message-template-parameters + The initially empty dictionary + Message-template-parameters was inserted into dictionary without trouble (true/false) + + + + Attempt to override the existing dictionary values using the message-template-parameters + + Message-template-parameters + The already filled dictionary + List of unique message-template-parameters + + + + + + + + + + + + + + + + + + + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + + + + + + + + + + + + + + + + + Reflection helpers for accessing properties. + + + + + Set value parsed from string. + + object instance to set with property + name of the property on + The value to be parsed. + + + + + Get property info + + object which could have property + property name on + result when success. + success. + + + + Try parse of string to (Generic) list, comma separated. + + + If there is a comma in the value, then (single) quote the value. For single quotes, use the backslash as escape + + + + + Attempt to reuse the HashSet.Comparer from the original HashSet-object (Ex. StringComparer.OrdinalIgnoreCase) + + + + + Try get the property + + + + + Reflection helpers. + + + + + Gets all usable exported types from the given assembly. + + Assembly to scan. + Usable types from the given assembly. + Types which cannot be loaded are skipped. + + + + Is this a static class? + + + + This is a work around, as Type doesn't have this property. + From: https://stackoverflow.com/questions/1175888/determine-if-a-type-is-static + + + + + Optimized delegate for calling MethodInfo + + Object instance, use null for static methods. + Complete list of parameters that matches the method, including optional/default parameters. + + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Controls a single allocated AsyncLogEventInfo-List for reuse (only one active user) + + + + + Controls a single allocated char[]-buffer for reuse (only one active user) + + + + + Controls a single allocated StringBuilder for reuse (only one active user) + + + + + Controls a single allocated object for reuse (only one active user) + + + + Empty handle when is disabled + + + + Creates handle to the reusable char[]-buffer for active usage + + Handle to the reusable item, that can release it again + + + + Access the acquired reusable object + + + + + Controls a single allocated MemoryStream for reuse (only one active user) + + + + + Supported operating systems. + + + If you add anything here, make sure to add the appropriate detection + code to + + + + + Unknown operating system. + + + + + Unix/Linux operating systems. + + + + + Desktop versions of Windows (95,98,ME). + + + + + Windows NT, 2000, 2003 and future versions based on NT technology. + + + + + Macintosh Mac OSX + + + + + Simple character tokenizer. + + + + + Initializes a new instance of the class. + + The text to be tokenized. + + + + Current position in + + + + + Full text to be parsed + + + + + Check current char while not changing the position. + + + + + + Read the current char and change position + + + + + + Get the substring of the + + + + + + + + Implements a single-call guard around given continuation function. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + + + + Continuation function which implements the single-call guard. + + The exception. + + + + HashSet optimized for single item + + + + + + Insert single item on scope start, and remove on scope exit + + Item to insert in scope + Existing hashset to update + Force allocation of real hashset-container + HashSet EqualityComparer + + + + Add item to collection, if it not already exists + + Item to insert + + + + Clear hashset + + + + + Check if hashset contains item + + + Item exists in hashset (true/false) + + + + Remove item from hashset + + + Item removed from hashset (true/false) + + + + Copy items in hashset to array + + Destination array + Array offset + + + + Create hashset enumerator + + Enumerator + + + + Provides helpers to sort log events and associated continuations. + + + + + Key selector delegate. + + The type of the value. + The type of the key. + Value to extract key information from. + Key selected from log event. + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + The key comparer function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Single-Bucket optimized readonly dictionary. Uses normal internally Dictionary if multiple buckets are needed. + + Avoids allocating a new dictionary, when all items are using the same bucket + + The type of the key. + The type of the value. + + + + + + + + + + + + + + + + Allows direct lookup of existing keys. If trying to access non-existing key exception is thrown. + Consider to use instead for better safety. + + Key value for lookup + Mapped value found + + + + Non-Allocating struct-enumerator + + + + + + + + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + + + + Will always throw, as dictionary is readonly + + + + Utilities for dealing with values. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + StackFrame from the calling method + Fully qualified class name + + + + Returns the assembly from the provided StackFrame (If not internal assembly) + + Valid assembly, or null if assembly was internal + + + + Returns the classname from the provided StackFrame (If not from internal assembly) + + + Valid class name, or empty string if assembly was internal + + + + Stream helpers + + + + + Copy to output stream and skip BOM if encoding is UTF8 + + + + + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + .net35 doesn't have a .copyto + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + first bytes to skip (optional) + + + + Helpers for , which is used in e.g. layout renderers. + + + + + Renders the specified log event context item and appends it to the specified . + + append to this + value to be appended + format string. If @, then serialize the value with the Default JsonConverter. + provider, for example culture + + + + Appends int without using culture, and most importantly without garbage + + + value to append + + + + Appends uint without using culture, and most importantly without garbage + + Credits Gavin Pugh - https://www.gavpugh.com/2010/04/01/xnac-avoiding-garbage-when-working-with-stringbuilder/ + + + value to append + + + + Convert DateTime into UTC and format to yyyy-MM-ddTHH:mm:ss.fffffffZ - ISO 6801 date (Round-Trip-Time) + + + + + Clears the provider StringBuilder + + + + + + Copies the contents of the StringBuilder to the MemoryStream using the specified encoding (Without BOM/Preamble) + + StringBuilder source + MemoryStream destination + Encoding used for converter string into byte-stream + Helper char-buffer to minimize memory allocations + + + + Copies the contents of the StringBuilder to the destination StringBuilder + + StringBuilder source + StringBuilder destination + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle character to search for + + Index of the first occurrence (Else -1) + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle characters to search for + + Index of the first occurrence (Else -1) + + + + Compares the contents of two StringBuilders + + + Correct implementation of that also works when is not the same + + True when content is the same + + + + Compares the contents of a StringBuilder and a String + + True when content is the same + + + + Append a number and pad with 0 to 2 digits + + append to this + the number + + + + Append a number and pad with 0 to 4 digits + + append to this + the number + + + + Append a int type (byte, int) as string + + + + + Constructor + + Max number of items + Initial StringBuilder Size + Max StringBuilder Size + + + + Takes StringBuilder from pool + + Allow return to pool + + + + Releases StringBuilder back to pool at its right place + + + + + Keeps track of acquired pool item + + + + + Releases pool item back into pool + + + + + Helpers for . + + + + + IsNullOrWhiteSpace, including for .NET 3.5 + + + + + + + Split a string + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Represents target with a chain of filters which determine + whether logging should happen. + + + + + cached result as calculating is expensive. + + + + + Initializes a new instance of the class. + + The target. + The filter chain. + Default action if none of the filters match. + + + + Gets the target. + + The target. + + + + Gets the filter chain. + + The filter chain. + + + + Default action if none of the filters match. + + + + + Gets or sets the next item in the chain. + + The next item in the chain. + This is for example the 'target2' logger in writeTo='target1,target2' + + + + Gets the stack trace usage. + + A value that determines stack trace handling. + + + + Helper for dealing with thread-local storage. + + + + + Allocates the data slot for storing thread-local information. + + Allocated slot key. + + + + Gets the data for a slot in thread-local storage. + + Type of the data. + The slot to get data for. + Automatically create the object if it doesn't exist. + + Slot data (will create T if null). + + + + + Wraps with a timeout. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + The timeout. + + + + Continuation function which implements the timeout logic. + + The exception. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Transformation on a layout. Pre-calculated if the layout has a fixed value. + + + + + Create TransformedLayout. + + Layout + Transformation method + Optional renderer, otherwise is used + + + + + + + Create TransformedLayout. If is null, then the returns null + + Layout + Transformation method + Optional renderer, otherwise is used + null if is null + + + + + + + + + + URL Encoding helper. + + + + Allow UnreservedMarks instead of ReservedMarks, as specified by chosen RFC + + + Use RFC2396 standard (instead of RFC3986) + + + Should use lowercase when doing HEX escaping of special characters + + + Replace space ' ' with '+' instead of '%20' + + + Skip UTF8 encoding, and prefix special characters with '%u' + + + + Escape unicode string data for use in http-requests + + unicode string-data to be encoded + target for the encoded result + s for how to perform the encoding + + + + Convert the wide-char into utf8-bytes, and then escape + + + + + + + + + Is allowed? + + + + + + + + Is a-z / A-Z / 0-9 + + + + + + + Prevents the Xamarin linker from linking the target. + + + By applying this attribute all of the members of the target will be kept as if they had been referenced by the code. + + + + + Ensures that all members of this type are preserved + + + + + Flags the method as a method to preserve during linking if the container class is pulled in. + + + + + Helper class for XML + + + + + removes any unusual unicode characters that can't be encoded into XML + + + + + Cleans string of any invalid XML chars found + + unclean string + string with only valid XML chars + + + + Pretest, small text and not escape needed + + + + + + + + Converts object value to invariant format, and strips any invalid xml-characters + + Object value + Object value converted to string + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object value converted to string + + + + XML elements must follow these naming rules: + - Element names are case-sensitive + - Element names must start with a letter or underscore + - Element names can contain letters, digits, hyphens, underscores, and periods + - Element names cannot contain spaces + + + + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object TypeCode + Check and remove unusual unicode characters from the result string. + Object value converted to string + + + + Safe version of WriteAttributeString + + + + + + + + + + Safe version of WriteAttributeString + + + + + + + + Safe version of WriteElementSafeString + + + + + + + + + + Safe version of WriteCData + + + + + + + Interface for handling object transformation + + + + + Takes a dangerous (or massive) object and converts into a safe (or reduced) object + + + Null if unknown object, or object cannot be handled + + + + + Provides an interface to execute System.Actions without surfacing any exceptions raised for that action. + + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Logs an exception is logged at Error level if the provided task does not run to completion. + + The task for which to log an error if it does not run to completion. + This method is useful in fire-and-forget situations, where application logic does not depend on completion of task. This method is avoids C# warning CS4014 in such situations. + + + + Returns a task that completes when a specified task to completes. If the task does not run to completion, an exception is logged at Error level. The returned task always runs to completion. + + The task for which to log an error if it does not run to completion. + A task that completes in the state when completes. + + + + Runs async action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Async action to execute. + A task that completes in the state when completes. + + + + Runs the provided async function and returns its result. If the task does not run to completion, an exception is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Async function to run. + A task that represents the completion of the supplied task. If the supplied task ends in the state, the result of the new task will be the result of the supplied task; otherwise, the result of the new task will be the default value of type . + + + + Runs the provided async function and returns its result. If the task does not run to completion, an exception is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Async function to run. + Fallback value to return if the task does not end in the state. + A task that represents the completion of the supplied task. If the supplied task ends in the state, the result of the new task will be the result of the supplied task; otherwise, the result of the new task will be the fallback value. + + + + Render a message template property to a string + + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Log event context data. + + + + + Initializes a new instance of the class. + + + + + Gets or sets string that will be used to separate key/value pairs. + + + + + + Get or set if empty values should be included. + + A value is empty when null or in case of a string, null or empty string. + + + + + + Gets or sets the keys to exclude from the output. If omitted, none are excluded. + + + + + + Also render the caller information attributes? (, + , ). + + See https://msdn.microsoft.com/en-us/library/hh534540.aspx + + + + + + Gets or sets how key/value pairs will be formatted. + + + + + + Renders all log event's properties and appends them to the specified . + + The to append the rendered data to. + Logging event. + + + + The names of caller information attributes. + , , ). + https://msdn.microsoft.com/en-us/library/hh534540.aspx + TODO NLog ver. 5 - Remove these properties + + + + + Designates a property of the class as an ambient property. + + + non-ambient: ${uppercase:${level}} + ambient : ${level:uppercase} + + + + + Initializes a new instance of the class. + + Ambient property name. + + + + Used to render the application domain name. + + + + + Create a new renderer + + + + + Create a new renderer + + + + + Format string. Possible values: "Short", "Long" or custom like {0} {1}. Default "Long" + The first parameter is the , the second the second the + This string is used in + + + + + + + + + + + + + + + Application setting. + + + Use this layout renderer to insert the value of an application setting + stored in the application's App.config or Web.config file. + + + ${appsetting:item=mysetting:default=mydefault} - produces "mydefault" if no appsetting + + + + + The AppSetting item-name + + + + + + The AppSetting item-name + + + + + The default value to render if the AppSetting value is null. + + + + + + + + + Renders the specified application setting or default value and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Renders the assembly version information for the entry assembly or a named assembly. + + + As this layout renderer uses reflection and version information is unlikely to change during application execution, + it is recommended to use it in conjunction with the . + + + The entry assembly can't be found in some cases e.g. ASP.NET, unit tests, etc. + + + + + Initializes a new instance of the class. + + + + + The (full) name of the assembly. If null, using the entry assembly. + + + + + + Gets or sets the type of assembly version to retrieve. + + + Some version type and platform combinations are not fully supported. + - UWP earlier than .NET Standard 1.5: Value for is always returned unless the parameter is specified. + - Silverlight: Value for is always returned. + + + + + + Gets or sets the custom format of the assembly version output. + + + Supported placeholders are 'major', 'minor', 'build' and 'revision'. + The default .NET template for version numbers is 'major.minor.build.revision'. See + https://docs.microsoft.com/en-gb/dotnet/api/system.version?view=netframework-4.7.2#remarks + for details. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders an assembly version and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets the assembly specified by , or entry assembly otherwise + + Found assembly + + + + Type of assembly version to retrieve. + + + + + Gets the assembly version. + + + + + Gets the file version. + + + + + Gets additional version information. + + + + + The current application domain's base directory. + + + + + cached + + + + + Use base dir of current process. Alternative one can just use ${processdir} + + + + + + Fallback to the base dir of current process, when AppDomain.BaseDirectory is Temp-Path (.NET Core 3 - Single File Publish) + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the base directory. + + + + + + Renders the application base directory and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site source file name. Full callsite + + + + + Gets or sets a value indicating whether to include source file path. + + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + + + + + + The call site (class name, method name and source information). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to render the class name. + + + + + + Gets or sets a value indicating whether to render the include the namespace with . + + + + + + Gets or sets a value indicating whether to render the method name. + + + + + + Gets or sets a value indicating whether the method name will be cleaned up if it is detected as an anonymous delegate. + + + + + + Gets or sets a value indicating whether the method and class names will be cleaned up if it is detected as an async continuation + (everything after an await-statement inside of an async method). + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets a value indicating whether to render the source file name and line number. + + + + + + Gets or sets a value indicating whether to include source file path. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site source line number. Full callsite + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + + + + + + A counter value (increases on each layout rendering). + + + + + Gets or sets the initial value of the counter. + + + + + + Gets or sets the value to be added to the counter after each layout rendering. + + + + + + Gets or sets the name of the sequence. Different named sequences can have individual values. + + + + + + + + + The current working directory of the application. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the current directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the current directory. + + + + + + + + + + + + Current date and time. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the date format. Can be any argument accepted by DateTime.ToString(format). + + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + + + + + + + + + + DB null for a database + + + + + + + + + + + The OS dependent directory separator + + + + + + + + + + + The environment variable. + + + + + Gets or sets the name of the environment variable. + + + + + + Gets or sets the default value to be used when the environment variable is not set. + + + + + + + + + + + + Thread identity information (username). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether username should be included. + + + + + + Gets or sets a value indicating whether domain name should be included. + + + + + + Gets or sets the default value to be used when the User is not set. + + + + + + Gets or sets the default value to be used when the Domain is not set. + + + + + + + + + + + + Log event context data. + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the name of the item. + + + + + + Renders the specified log event context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Log event context data. See . + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + + + + + + + + + + Exception information provided through + a call to one of the Logger.*Exception() methods. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the format of the output. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + + + Gets or sets the format of the output of inner exceptions. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + Gets or sets the separator used to concatenate parts specified in the Format. + + + + + + Gets or sets the separator used to concatenate exception data specified in the Format. + + + + + + Gets or sets the maximum number of inner exceptions to include in the output. + By default inner exceptions are not enabled for compatibility with NLog 1.0. + + + + + + Gets or sets the separator between inner exceptions. + + + + + + Gets or sets whether to render innermost Exception from + + + + + Gets the formats of the output of inner exceptions to be rendered in target. + + + + + + + Gets the formats of the output to be rendered in target. + + + + + + + + + + + + + Appends the Message of an Exception to the specified . + + The to append the rendered data to. + The exception containing the Message to append. + + + + Appends the method name from Exception's stack trace to the specified . + + The to append the rendered data to. + The Exception whose method name should be appended. + + + + Appends the stack trace from an Exception to the specified . + + The to append the rendered data to. + The Exception whose stack trace should be appended. + + + + Appends the result of calling ToString() on an Exception to the specified . + + The to append the rendered data to. + The Exception whose call to ToString() should be appended. + + + + Appends the type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose type should be appended. + + + + Appends the short type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose short type should be appended. + + + + Appends the application source of an Exception to the specified . + + The to append the rendered data to. + The Exception whose source should be appended. + + + + Appends the HResult of an Exception to the specified . + + The to append the rendered data to. + The Exception whose HResult should be appended. + + + + Appends the contents of an Exception's Data property to the specified . + + The to append the rendered data to. + The Exception whose Data property elements should be appended. + + + + Appends all the serialized properties of an Exception into the specified . + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Appends all the additional properties of an Exception like Data key-value-pairs + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Split the string and then compile into list of Rendering formats. + + + + + Renders contents of the specified file. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file. + + + + + + Gets or sets the encoding used in the file. + + The encoding. + + + + + Renders the contents of the specified file and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + Name used in config without ${}. E.g. "test" could be used as "${test}". + + + + + Method that renders the layout. + + + + + Format string for conversion from object to string. + + + + + + + + + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + The information about the garbage collector. + + + + + Gets or sets the property to retrieve. + + + + + + + + + Gets or sets the property of System.GC to retrieve. + + + + + Total memory allocated. + + + + + Total memory allocated (perform full garbage collection first). + + + + + Gets the number of Gen0 collections. + + + + + Gets the number of Gen1 collections. + + + + + Gets the number of Gen2 collections. + + + + + Maximum generation number supported by GC. + + + + + Render a Global Diagnostics Context item. See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + + + + Globally-unique identifier (GUID). + + + + + Gets or sets the GUID format as accepted by Guid.ToString() method. + + + + + + Generate the Guid from the NLog LogEvent (Will be the same for all targets) + + + + + + + + + + + + + + + The host name that the process is running on. + + + + + + + + Gets the host name and falls back to computer name if not available + + + + + Tries the lookup value. + + The lookup function. + Type of the lookup. + + + + + + + + Thread identity information (name and authentication information). + + + + + Gets or sets the separator to be used when concatenating + parts of identity information. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.Name. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.AuthenticationType. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.IsAuthenticated. + + + + + + + + + Retrieve network interfaces + + + + + Retrieve network interfaces + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Gets or sets the name of the parameter. + + + + + + Renders the specified installation parameter and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render environmental information related to logging events. + + + + + Gets the logging configuration this target is part of. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Renders the the value of layout renderer in the context of the specified log event. + + The log event. + String representation of a layout renderer. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Renders the value of layout renderer in the context of the specified log event. + + The log event. + The layout render output is appended to builder + + + + Renders the value of layout renderer in the context of the specified log event into . + + The to append the rendered data to. + Logging event. + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Get the for rendering the messages to a + + LogEvent with culture + Culture in on Layout level + + + + + Get the for rendering the messages to a , needed for date and number formats + + LogEvent with culture + Culture in on Layout level + + + is preferred + + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Marks class as a layout renderer and assigns a name to it. + + This attribute is not required when registering the layout in the API. + + + + Initializes a new instance of the class. + + Name of the layout renderer, without the `${ }` + + + + Format of the ${level} layout renderer output. + + + + + Render the LogLevel standard name. + + + + + Render the first character of the level. + + + + + Render the ordinal (aka number) for the level. + + + + + Render the LogLevel full name, expanding Warn / Info abbreviations + + + + + The log level. + + + + + Gets or sets a value indicating the output format of the level. + + + + + + + + + + + + + + + A string literal. + + + This is used to escape '${' sequence + as ;${literal:text=${}' + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The literal text value. + This is used by the layout compiler. + + + + Gets or sets the literal text. + + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The IP address from the network interface card (NIC) on the local machine + + + Skips loopback-adapters and tunnel-interfaces. Skips devices without any MAC-address + + + + + Get or set whether to prioritize IPv6 or IPv4 (default) + + + + + + + + + + + + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes the layout renderer. + + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets a value indicating whether the XML should use spaces for indentation. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDLC item separator. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the XML logging event and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The logger name. + + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + + + + + + + The date and time in a long, sortable format yyyy-MM-dd HH:mm:ss.ffff. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the date in the long format (yyyy-MM-dd HH:mm:ss.ffff) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The machine name that the process is running on. + + + + + + + + + + + Render a Mapped Diagnostic Context item, See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + Render a Mapped Diagnostic Logical Context item (based on CallContext). + See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + The formatted log message. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to log exception along with message. + + + + + + Gets or sets the string that separates message from the exception. + + + + + + Gets or sets whether it should render the raw message without formatting parameters + + + + + + + + + + + + Render a Nested Diagnostic Context item. + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested diagnostics context output. + + + + + + Renders the specified Nested Diagnostics Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render a Nested Diagnostic Logical Context item (Async scope) + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested logical context output. + + + + + + Renders the specified Nested Logical Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Timing Renderer (Async scope) + + + + + Gets or sets whether to only include the duration of the last scope created + + + + + + Gets or sets whether to just display the scope creation time, and not the duration + + + + + + Gets or sets the TimeSpan format. Can be any argument accepted by TimeSpan.ToString(format). + + + + + + Renders the timing details of the Nested Logical Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Retrieve network interfaces + + + + + Retrieve network interfaces + + + + + A newline literal. + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The directory where NLog.dll is located. + + + + + Initializes static members of the NLogDirLayoutRenderer class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The performance counter. + + + + + Gets or sets the name of the counter category. + + + + + + Gets or sets the name of the performance counter. + + + + + + Gets or sets the name of the performance counter instance (e.g. this.Global_). + + + + + + Gets or sets the name of the machine to read the performance counter from. + + + + + + Format string for conversion from float to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + If having multiple instances with the same process-name, then they will get different instance names + + + + + The executable directory from the FileName, + using the current process + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the process directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the process directory. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + The identifier of the current process. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + + + + The information about the running process. + + + + + Gets or sets the property to retrieve. + + + + + + Gets or sets the format-string to use if the property supports it (Ex. DateTime / TimeSpan / Enum) + + + + + + + + + + + + + + + Property of System.Diagnostics.Process to retrieve. + + + + + Base Priority. + + + + + Exit Code. + + + + + Exit Time. + + + + + Process Handle. + + + + + Handle Count. + + + + + Whether process has exited. + + + + + Process ID. + + + + + Machine name. + + + + + Handle of the main window. + + + + + Title of the main window. + + + + + Maximum Working Set. + + + + + Minimum Working Set. + + + + + Non-paged System Memory Size. + + + + + Non-paged System Memory Size (64-bit). + + + + + Paged Memory Size. + + + + + Paged Memory Size (64-bit).. + + + + + Paged System Memory Size. + + + + + Paged System Memory Size (64-bit). + + + + + Peak Paged Memory Size. + + + + + Peak Paged Memory Size (64-bit). + + + + + Peak Virtual Memory Size. + + + + + Peak Virtual Memory Size (64-bit).. + + + + + Peak Working Set Size. + + + + + Peak Working Set Size (64-bit). + + + + + Whether priority boost is enabled. + + + + + Priority Class. + + + + + Private Memory Size. + + + + + Private Memory Size (64-bit). + + + + + Privileged Processor Time. + + + + + Process Name. + + + + + Whether process is responding. + + + + + Session ID. + + + + + Process Start Time. + + + + + Total Processor Time. + + + + + User Processor Time. + + + + + Virtual Memory Size. + + + + + Virtual Memory Size (64-bit). + + + + + Working Set Size. + + + + + Working Set Size (64-bit). + + + + + The name of the current process. + + + + + Gets or sets a value indicating whether to write the full path to the process executable. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Renders the current process name (optionally with a full path). + + The to append the rendered data to. + Logging event. + + + + The process time in format HH:mm:ss.mmm. + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + Write timestamp to builder with format hh:mm:ss:fff + + + + + High precision timer, based on the value returned from QueryPerformanceCounter() optionally converted to seconds. + + + + + Gets or sets a value indicating whether to normalize the result by subtracting + it from the result of the first call (so that it's effectively zero-based). + + + + + + Gets or sets a value indicating whether to output the difference between the result + of QueryPerformanceCounter and the previous one. + + + + + + Gets or sets a value indicating whether to convert the result to seconds by dividing + by the result of QueryPerformanceFrequency(). + + + + + + Gets or sets the number of decimal digits to be included in output. + + + + + + Gets or sets a value indicating whether to align decimal point (emit non-significant zeros). + + + + + + + + + + + + A value from the Registry. + + + + + Create new renderer + + + + + Gets or sets the registry value name. + + + + + + Gets or sets the value to be output when the specified registry key or value is not found. + + + + + + Require escaping backward slashes in . Need to be backwards-compatible. + + When true: + + `\` in value should be configured as `\\` + `\\` in value should be configured as `\\\\`. + + Default value wasn't a Layout before and needed an escape of the slash + + + + + Gets or sets the registry view (see: https://msdn.microsoft.com/de-de/library/microsoft.win32.registryview.aspx). + Allowed values: Registry32, Registry64, Default + + + + + + Gets or sets the registry key. + + + HKCU\Software\NLogTest + + + Possible keys: +
    +
  • HKEY_LOCAL_MACHINE
  • +
  • HKLM
  • +
  • HKEY_CURRENT_USER
  • +
  • HKCU
  • +
  • HKEY_CLASSES_ROOT
  • +
  • HKEY_USERS
  • +
  • HKEY_CURRENT_CONFIG
  • +
  • HKEY_DYN_DATA
  • +
  • HKEY_PERFORMANCE_DATA
  • +
+
+ +
+ + + Reads the specified registry key and value and appends it to + the passed . + + The to append the rendered data to. + Logging event. Ignored. + + + + Has ? + + + + + Parse key to and subkey. + + full registry key name + Result of parsing, never null. + + + + Aliases for the hives. See https://msdn.microsoft.com/en-us/library/ctb3kd86(v=vs.110).aspx + + + + + The sequence ID + + + + + + + + + + + The short date in a sortable format yyyy-MM-dd. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the current short date string (yyyy-MM-dd) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + System special folder path (includes My Documents, My Music, Program Files, Desktop, and more). + + + + + Gets or sets the system special folder to use. + + + Full list of options is available at MSDN. + The most common ones are: +
    +
  • ApplicationData - roaming application data for current user.
  • +
  • CommonApplicationData - application data for all users.
  • +
  • MyDocuments - My Documents
  • +
  • DesktopDirectory - Desktop directory
  • +
  • LocalApplicationData - non roaming application data
  • +
  • Personal - user profile directory
  • +
  • System - System directory
  • +
+
+ +
+ + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Format of the ${stacktrace} layout renderer output. + + + + + Raw format (multiline - as returned by StackFrame.ToString() method). + + + + + Flat format (class and method names displayed in a single line). + + + + + Detailed flat format (method signatures displayed in a single line). + + + + + Stack trace renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the output format of the stack trace. + + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets the stack frame separator string. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A temporary directory. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The identifier of the current thread. + + + + + + + + The name of the current thread. + + + + + + + + The Ticks value of current date and time. + + + + + + + + + + + The time in a 24-hour, sortable format HH:mm:ss.mmmm. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + A renderer that puts into log a System.Diagnostics trace correlation id. + + + + + + + + + + + Render a NLog variable (xml or config) + + + + + Gets or sets the name of the NLog variable. + + + + + + Gets or sets the default value to be used when the variable is not set. + + Not used if Name is null + + + + + Initializes the layout renderer. + + + + + Try get the + + + + + + + Renders the specified variable and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Thread Windows identity information (username). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether domain name should be included. + + + + + + Gets or sets a value indicating whether username should be included. + + + + + + Renders the current thread windows identity information and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Applies caching to another layout output. + + + The value of the inner layout will be rendered only once and reused subsequently. + + + + + A value indicating when the cache is cleared. + + + + Never clear the cache. + + + Clear the cache whenever the is initialized. + + + Clear the cache whenever the is closed. + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether this is enabled. + + + + + + Gets or sets a value indicating when the cache is cleared. + + + + + + Cachekey. If the cachekey changes, resets the value. For example, the cachekey would be the current day.s + + + + + + Gets or sets a value indicating how many seconds the value should stay cached until it expires + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + + + + Filters characters not allowed in the file names by replacing them with safe character. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to modify the output of this renderer so it can be used as a part of file path + (illegal characters are replaced with '_'). + + + + + + + + + + + + Escapes output of another layout using JSON rules. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply JSON encoding. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + + + + + + + Left part of a text + + + + + Gets or sets the length in characters. + + + + + + Same as -property, so it can be used as ambient property. + + + ${message:truncate=80} + + + + + + + + + + + + Converts the result of another layout output to lower case. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Render the non-raw value of an object. + + For performance and/or full (formatted) control of the output. + + + + Gets or sets a value indicating whether to disable the IRawValue-interface + + A value of true if IRawValue-interface should be ignored; otherwise, false. + + + + + + + + + + + Render a single property of a object + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + Shortcut for + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + Only outputs the inner layout when exception has been defined for log message. + + + + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + ${onhasproperties:, Properties\: ${all-event-properties}} + + + + + + + + + + + Horizontal alignment for padding layout renderers. + + + + + When layout text is too long, align it to the left + (remove characters from the right). + + + + + When layout text is too long, align it to the right + (remove characters from the left). + + + + + Applies padding to another layout output. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of characters to pad the output to. + + + Positive padding values cause left padding, negative values + cause right padding to the desired width. + + + + + + Gets or sets the padding character. + + + + + + Gets or sets a value indicating whether to trim the + rendered text to the absolute value of the padding length. + + + + + + Gets or sets a value indicating whether a value that has + been truncated (when is true) + will be left-aligned (characters removed from the right) + or right-aligned (characters removed from the left). The + default is left alignment. + + RegistryLayoutRenderer + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Replaces a string in the output of another layout with another string. + + + ${replace:searchFor=\\n+:replaceWith=-:regex=true:inner=${message}} + + + + + Gets or sets the text to search for. + + The text search for. + + + + + Gets or sets a value indicating whether regular expressions should be used. + + A value of true if regular expressions should be used otherwise, false. + + + + + Gets or sets the replacement string. + + The replacement string. + + + + + Gets or sets the group name to replace when using regular expressions. + Leave null or empty to replace without using group name. + + The group name. + + + + + Gets or sets a value indicating whether to ignore case. + + A value of true if case should be ignored when searching; otherwise, false. + + + + + Gets or sets a value indicating whether to search for whole words. + + A value of true if whole words should be searched for; otherwise, false. + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Initializes the layout renderer. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + This class was created instead of simply using a lambda expression so that the "ThreadAgnosticAttributeTest" will pass + + + + + A match evaluator for Regular Expression based replacing + + Input string. + Group name in the regex. + Replace value. + Match from regex. + Groups replaced with . + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating the string that should be used for separating lines. + + + + + + + + + + + + Right part of a text + + + + + Gets or sets the length in characters. + + + + + + + + + + + + Decodes text "encrypted" with ROT-13. + + + See https://en.wikipedia.org/wiki/ROT13. + + + + + Gets or sets the layout to be wrapped. + + The layout to be wrapped. + This variable is for backwards compatibility + + + + + Encodes/Decodes ROT-13-encoded string. + + The string to be encoded/decoded. + Encoded/Decoded text. + + + + + + + + + + Encodes/Decodes ROT-13-encoded string. + + + + + Substring the result + + + ${substring:${level}:start=2:length=2} + ${substring:${level}:start=-2:length=2} + ${substring:Inner=${level}:start=2:length=2} + + + + + Initializes a new instance of the class. + + + + + Gets or sets the start index. + + Index + + + + + Gets or sets the length in characters. If null, then the whole string + + Index + + + + + + + + + + + Calculate start position + + 0 or positive number + + + + Calculate needed length + + 0 or positive number + + + + Trims the whitespace from the result of another layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + + + + + + + Converts the result of another layout output to upper case. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + ${level:uppercase} // [AmbientProperty] + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether upper case conversion should be applied. + + A value of true if upper case conversion should be applied otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Encodes the result of another layout output for use with URLs. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether spaces should be translated to '+' or '%20'. + + A value of true if space should be translated to '+'; otherwise, false. + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + + + Gets or sets the layout to be rendered when original layout produced empty result. + + + + + + + + + + + + + + + Only outputs the inner layout when the specified condition has been met. + + + + + Gets or sets the condition that must be met for the layout to be printed. + + + + + + If is not met, print this layout. + + + + + + + + + + + + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the line length for wrapping. + + + Only positive values are allowed + + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + Base class for s which wrapping other s. + + This has the property (which is default) and can be used to wrap. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + + + + + Gets or sets the wrapped layout. + + [DefaultParameter] so Inner: is not required if it's the first + + + + + + + + + Renders the inner message, processes it and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Appends the rendered output from -layout and transforms the added output (when necessary) + + Logging event. + The to append the rendered data to. + Start position for any necessary transformation of . + + + + Transforms the output of another layout. + + Logging event. + Output to be transform. + Transformed text. + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + Base class for s which wrapping other s. + + This expects the transformation to work on a + + + + + + + + Transforms the output of another layout. + + + Output to be transform. + + + + Transforms the output of another layout. + + Output to be transform. + + + + Renders the inner layout contents. + + + for the result + + + + + + + + + + + + + + + + + + Converts the result of another layout output to be XML-compliant. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply XML encoding. + + Ensures always valid XML, but gives a performance hit + + + + + Gets or sets a value indicating whether to transform newlines (\r\n) into ( ) + + + + + + + + + + + + A layout containing one or more nested layouts. + + + + + Initializes a new instance of the class. + + + + + Gets the inner layouts. + + + + + + Initializes the layout. + + + + + Formats the log event relying on inner layouts. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event relying on inner layouts. + + The logging event. + for the result + + + + Closes the layout. + + + + + Generate description of Compound Layout + + Compound Layout String Description + + + + A column in the CSV. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the column. + The layout of the column. + + + + Gets or sets the name of the column. + + + + + + Gets or sets the layout of the column. + + + + + + Gets or sets the override of Quoting mode + + + and are faster than the default + + + + + + Specifies allowed column delimiters. + + + + + Automatically detect from regional settings. + + + + + Comma (ASCII 44). + + + + + Semicolon (ASCII 59). + + + + + Tab character (ASCII 9). + + + + + Pipe character (ASCII 124). + + + + + Space character (ASCII 32). + + + + + Custom string, specified by the CustomDelimiter. + + + + + A specialized layout that renders CSV-formatted events. + + If is set, then the header generation with column names will be disabled. + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + Gets or sets a value indicating whether CVS should include header. + + A value of true if CVS should include header; otherwise, false. + + + + + Gets or sets the column delimiter. + + + + + + Gets or sets the quoting mode. + + + + + + Gets or sets the quote Character. + + + + + + Gets or sets the custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). + + + + + + Initializes the layout. + + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event for write. + + The logging event. + for the result + + + + Get the headers with the column names. + + + + + + Header with column names for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Generate description of CSV Layout + + CSV Layout String Description + + + + Specifies CSV quoting modes. + + + + + Quote all column (Fast) + + + + + Quote nothing (Very fast) + + + + + Quote only whose values contain the quote symbol or the separator (Slow) + + + + + JSON attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with json-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Json encoded. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A specialized layout that renders JSON-formatted events. + + + + + Initializes a new instance of the class. + + + + + Gets the array of attributes' configurations. + + + + + + Gets or sets the option to suppress the extra spaces in the output json + + + + + + Gets or sets the option to render the empty object value {} + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as JSON) + + + + + + List of property names to exclude when is true + + + + + + How far should the JSON serializer follow object references before backing off + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Formats the log event as a JSON document for writing. + + The logging event. + for the result + + + + Formats the log event as a JSON document for writing. + + The log event to be formatted. + A JSON string representation of the log event. + + + + Generate description of JSON Layout + + JSON Layout String Description + + + + Abstract interface that layouts must implement. + + + + + Is this layout initialized? See + + + + + Gets a value indicating whether this layout is thread-agnostic (can be rendered on any thread). + + + Layout is thread-agnostic if it has been marked with [ThreadAgnostic] attribute and all its children are + like that as well. + + Thread-agnostic layouts only use contents of for its output. + + + + + Gets the level of stack trace information required for rendering. + + + + + Gets the logging configuration this target is part of. + + + + + Converts a given text to a . + + Text to be converted. + object represented by the text. + + + + Implicitly converts the specified string to a . + + The layout string. + Instance of .' + + + + Implicitly converts the specified string to a . + + The layout string. + The NLog factories to use when resolving layout renderers. + Instance of . + + + + Implicitly converts the specified string to a . + + The layout string. + Whether should be thrown on parse errors (false = replace unrecognized tokens with a space). + Instance of . + + + + Create a from a lambda method. + + Method that renders the layout. + Tell if method is safe for concurrent threading. + Instance of . + + + + Precalculates the layout for the specified log event and stores the result + in per-log event cache. + + Only if the layout doesn't have [ThreadAgnostic] and doesn't contain layouts with [ThreadAgnostic]. + + The log event. + + Calling this method enables you to store the log event in a buffer + and/or potentially evaluate it in another thread even though the + layout may contain thread-dependent renderer. + + + + + Renders the event info in layout. + + The event info. + String representing log event. + + + + Optimized version of for internal Layouts. Works best + when override of is available. + + The event info. + Appends the string representing log event to target + Should rendering result be cached on LogEventInfo + + + + Valid default implementation of , when having implemented the optimized + + The logging event. + StringBuilder to help minimize allocations [optional]. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Optimized version of for internal Layouts, when + override of is available. + + + + + Try get value + + + rawValue if return result is true + false if we could not determine the rawValue + + + + Marks class as a layout renderer and assigns a format string to it. + + + + + Initializes a new instance of the class. + + Layout name. + + + + Parses layout strings. + + + + + Add to + + + + + + + Options available for + + + + + Default options + + + + + Layout renderer method can handle concurrent threads + + + + + Layout renderer method is agnostic to current thread context. This means it will render the same result indepdent of thread-context. + + + + + A specialized layout that supports header and footer. + + + + + Gets or sets the body layout (can be repeated multiple times). + + + + + + Gets or sets the header layout. + + + + + + Gets or sets the footer layout. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result. + + + + A specialized layout that renders Log4j-compatible XML events. + + + This layout is not meant to be used explicitly. Instead you can use ${log4jxmlevent} layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets the instance that renders log events. + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Represents a string with embedded placeholders that can render contextual information. + + + This layout is not meant to be used explicitly. Instead you can just use a string containing layout + renderers everywhere the layout is required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout string to parse. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + Whether should be thrown on parse errors. + + + + Original text before compile to Layout renderes + + + + + Gets or sets the layout text. + + + + + + Is the message fixed? (no Layout renderers used) + + + + + Get the fixed text. Only set when is true + + + + + Is the message a simple formatted string? (Can skip StringBuilder) + + + + + Gets a collection of objects that make up this layout. + + + + + Gets the level of stack trace information required for rendering. + + + + + Converts a text to a simple layout. + + Text to be converted. + A object. + + + + Escapes the passed text so that it can + be used literally in all places where + layout is normally expected without being + treated as layout. + + The text to be escaped. + The escaped text. + + Escaping is done by replacing all occurrences of + '${' with '${literal:text=${}' + + + + + Evaluates the specified text by expanding all layout renderers. + + The text to be evaluated. + Log event to be used for evaluation. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Evaluates the specified text by expanding all layout renderers + in new context. + + The text to be evaluated. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Returns a that represents the current object. + + + A that represents the current object. + + + + + + + + + + + + + + + + + + + + XML attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with xml-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A XML Element + + + + + + + + + + + Name of the element + + + + + + Value inside the element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + The name of the top XML node + The value of the top XML node + + + + Name of the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Value inside the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Auto indent and create new lines + + + + + + Gets the array of xml 'elements' configurations. + + + + + + Gets the array of 'attributes' configurations for the element + + + + + + Gets or sets whether a ElementValue with empty value should be included in the output + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as XML) + + + + + + List of property names to exclude when is true + + + + + + XML element name to use when rendering properties + + + Support string-format where {0} means property-key-name + + Skips closing element tag when having configured + + + + + + XML attribute name to use when rendering property-key + + When null (or empty) then key-attribute is not included + + + Will replace newlines in attribute-value with + + + + + + XML attribute name to use when rendering property-value + + When null (or empty) then value-attribute is not included and + value is formatted as XML-element-value + + + Skips closing element tag when using attribute for value + + Will replace newlines in attribute-value with + + + + + + XML element name to use for rendering IList-collections items + + + + + + How far should the XML serializer follow object references before backing off + + + + + + Initializes the layout. + + + + + Formats the log event as a XML document for writing. + + The logging event. + for the result + + + + Formats the log event as a XML document for writing. + + The log event to be formatted. + A XML string representation of the log event. + + + + write attribute, only if is not empty + + + + + rendered + + + + Generate description of XML Layout + + XML Layout String Description + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + + + + + + + Name of the root XML element + + + + + + Value inside the root XML element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Represents the logging event. + + + + + Gets the date of the first log event created. + + + + + The formatted log message. + + + + + The log message including any parameter placeholders + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + Exception information. + + + + Gets the unique identifier of log event which is automatically generated + and monotonously increasing. + + + + + Gets or sets the timestamp of the logging event. + + + + + Gets or sets the level of the logging event. + + + + + Gets a value indicating whether stack trace has been set for this event. + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Gets the entire stack trace. + + + + + Gets the callsite class name + + + + + Gets the callsite member function name + + + + + Gets the callsite source file path + + + + + Gets the callsite source file line number + + + + + Gets or sets the exception information. + + + + + Gets or sets the logger name. + + + + + Gets the logger short name. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the log message including any parameter placeholders. + + + + + Gets or sets the parameter values or null if no parameters have been specified. + + + + + Gets or sets the format provider that was provided while logging or + when no formatProvider was specified. + + + + + Gets or sets the message formatter for generating + Uses string.Format(...) when nothing else has been configured. + + + + + Gets the formatted message. + + + + + Checks if any per-event properties (Without allocation) + + + + + Gets the dictionary of per-event context properties. + + + + + Gets the dictionary of per-event context properties. + Internal helper for the PropertiesDictionary type. + + Create the event-properties dictionary, even if no initial template parameters + Provided when having parsed the message template and capture template parameters (else null) + + + + + Gets the named parameters extracted from parsing as MessageTemplate + + + + + Gets the dictionary of per-event context properties. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + The exception. + Instance of . + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates from this by attaching the specified asynchronous continuation. + + The asynchronous continuation. + Instance of with attached continuation. + + + + Returns a string representation of this log event. + + String representation of the log event. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace (Negative means NLog should skip stackframes from System-assemblies). + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Set the + + true = Always, false = Never, null = Auto Detect + + + + Specialized LogFactory that can return instances of custom logger types. + + Use this only when a custom Logger type is defined. + The type of the logger to be returned. Must inherit from . + + + + Gets the logger with type . + + The logger name. + An instance of . + + + + Gets a custom logger with the full name of the current class (so namespace and class name) and type . + + An instance of . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Overwrite possible file paths (including filename) for possible NLog config files. + When this property is null, the default file paths ( are used. + + + + + Occurs when logging changes. + + + + + Occurs when logging gets reloaded. + + + + + Initializes static members of the LogManager class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The config. + + + + Initializes a new instance of the class. + + The config loader + The custom AppEnvironmnet override + + + + Gets the current . + + + + + Gets or sets a value indicating whether exceptions should be thrown. See also . + + A value of true if exception should be thrown; otherwise, false. + By default exceptions are not thrown under any circumstances. + + + + Gets or sets a value indicating whether should be thrown. + + If null then is used. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. After setting this property all + existing loggers will be re-configured, so there is no need to call + manually. + + + + + Gets or sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets the default culture info to use as . + + + Specific culture info or null to use + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting + unmanaged resources. + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Creates a logger that discards all log messages. + + Null logger instance. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets the logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + The logger with type . + Type of the logger + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The type of the logger to create. The type must inherit from + The logger of type . + This is a slow-running method. Make sure you are not calling this method in a + loop. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + Name of the logger. + Type of the logger + The logger reference with type . Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The type of the logger to create. The type must inherit from . + The logger of type . Multiple calls to GetLogger with the + same argument aren't guaranteed to return the same logger reference. + + + + Loops through all loggers previously returned by GetLogger and recalculates their + target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time + will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flushes any pending log messages on all appenders. + + Config containing Targets to Flush + Flush completed notification (success / timeout) + Optional timeout that guarantees that completed notication is called. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Returns if logging is currently enabled. + + A value of if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Raises the event when the configuration is reloaded. + + Event arguments. + + + + Raises the event when the configuration is reloaded. + + Event arguments + + + + Currently this is disposing? + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Logger cache key. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Determines if two objects are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Determines if two objects of the same type are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Logger cache. + + + + + Inserts or updates. + + + + + + + Internal for unit tests + + + + + Enables logging in implementation. + + + + + Initializes a new instance of the class. + + The factory. + + + + Enables logging. + + + + + Logging methods which only are executed when the DEBUG conditional compilation symbol is set. + + Remarks: + The DEBUG conditional compilation symbol is default enabled (only) in a debug build. + + If the DEBUG conditional compilation symbol isn't set in the calling library, the compiler will remove all the invocations to these methods. + This could lead to better performance. + + See: https://msdn.microsoft.com/en-us/library/4xssyw96%28v=vs.90%29.aspx + + + Provides logging interface and utility functions. + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Initializes a new instance of the class. + + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Collection of context properties for the Logger. The logger will append it for all log events + + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Creates new logger that automatically appends the specified property to all log events (without changing current logger) + + Property Name + Property Value + New Logger object that automatically appends specified property + + + + Updates the specified context property for the current logger. The logger will append it for all log events. + + It could be rendered with ${event-properties:YOURNAME} + + With property, all properties could be changed. + + + Will affect all locations/contexts that makes use of the same named logger object. + + Property Name + Property Value + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Logs an exception is logged at Error level if the provided task does not run to completion. + + The task for which to log an error if it does not run to completion. + This method is useful in fire-and-forget situations, where application logic does not depend on completion of task. This method is avoids C# warning CS4014 in such situations. + + + + Returns a task that completes when a specified task to completes. If the task does not run to completion, an exception is logged at Error level. The returned task always runs to completion. + + The task for which to log an error if it does not run to completion. + A task that completes in the state when completes. + + + + Runs async action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Async action to execute. + + + + Runs the provided async function and returns its result. If the task does not run to completion, an exception is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Async function to run. + A task that represents the completion of the supplied task. If the supplied task ends in the state, the result of the new task will be the result of the supplied task; otherwise, the result of the new task will be the default value of type . + + + + Runs the provided async function and returns its result. If the task does not run to completion, an exception is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Async function to run. + Fallback value to return if the task does not end in the state. + A task that represents the completion of the supplied task. If the supplied task ends in the state, the result of the new task will be the result of the supplied task; otherwise, the result of the new task will be the fallback value. + + + + Raises the event when the logger is reconfigured. + + Event arguments + + + + Implementation of logging engine. + + + + + Gets the filter result. + + The filter chain. + The log event. + default result if there are no filters, or none of the filters decides. + The result of the filter. + + + + Defines available log levels. + + + + + Trace log level. + + + + + Debug log level. + + + + + Info log level. + + + + + Warn log level. + + + + + Error log level. + + + + + Fatal log level. + + + + + Off log level. + + + + + Gets all the available log levels (Trace, Debug, Info, Warn, Error, Fatal, Off). + + + + + Gets all the log levels that can be used to log events (Trace, Debug, Info, Warn, Error, Fatal) + i.e LogLevel.Off is excluded. + + + + + Initializes a new instance of . + + The log level name. + The log level ordinal number. + + + + Gets the name of the log level. + + + + + Gets the ordinal of the log level. + + + + + Compares two objects + and returns a value indicating whether + the first one is equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal == level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is not equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal != level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than the second one. + + The first level. + The second level. + The value of level1.Ordinal > level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal >= level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than the second one. + + The first level. + The second level. + The value of level1.Ordinal < level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal <= level2.Ordinal. + + + + Gets the that corresponds to the specified ordinal. + + The ordinal. + The instance. For 0 it returns , 1 gives and so on. + + + + Returns the that corresponds to the supplied . + + The textual representation of the log level. + The enumeration value. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Determines whether the specified instance is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Compares the level to the other object. + + + The object object. + + + A value less than zero when this logger's is + less than the other logger's ordinal, 0 when they are equal and + greater than zero when this ordinal is greater than the + other ordinal. + + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Delegate used to set/get the culture in use. + + This delegate marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the instance used in the . + + Could be used to pass the to other methods + + + + Occurs when logging changes. + + + + + Occurs when logging gets reloaded. + + + + + Gets or sets a value indicating whether NLog should throw exceptions. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether should be thrown. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Gets or sets the global log threshold. Log events below this threshold are not logged. + + + + + Gets or sets the default culture to use. + + This property was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Adds the given assembly which will be skipped + when NLog is trying to find the calling method on stack trace. + + The assembly to skip. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The logger class. This class must inherit from . + The logger of type . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates a logger that discards all log messages. + + Null logger which discards all log messages. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + + + + Gets the specified named custom logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The logger class. This class must inherit from . + The logger of type . Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + The generic way for this method is + + + + Loops through all loggers previously returned by GetLogger. + and recalculates their target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Checks if logging is currently enabled. + + if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Dispose all targets, and shutdown logging. + + + + + Generates a formatted message from the log event + + Log event. + Formatted message + + + + Returns a log message. Used to defer calculation of + the log message until it's actually needed. + + Log message. + + + + Base implementation of a log receiver server which forwards received logs through or a given . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log factory. + + + + Processes the log messages. + + The events to process. + + + + Processes the log messages. + + The log events. + + + + Service contract for Log Receiver client. + + This class marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Service contract for Log Receiver server. + + + + + Processes the log messages. + + The events. + + + + Service contract for Log Receiver server. + + + + + Processes the log messages. + + The events. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Client of + + + + + Occurs when the log message processing has completed. + + + + + Occurs when Open operation has completed. + + + + + Occurs when Close operation has completed. + + + + + Enables the user to configure client and service credentials as well as service credential authentication settings for use on the client side of communication. + + + + + Gets the underlying implementation. + + + + + Gets the target endpoint for the service to which the WCF client can connect. + + + + + Opens the client asynchronously. + + + + + Opens the client asynchronously. + + User-specific state. + + + + Closes the client asynchronously. + + + + + Closes the client asynchronously. + + User-specific state. + + + + Processes the log messages asynchronously. + + The events to send. + + + + Processes the log messages asynchronously. + + The events to send. + User-specific state. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Instructs the inner channel to display a user interface if one is required to initialize the channel prior to using it. + + + + + Gets or sets the cookie container. + + The cookie container. + + + + Implementation of which forwards received logs through or a given . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log factory. + + + + Implementation of which forwards received logs through or a given . + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log factory. + + + + Internal configuration of Log Receiver Service contracts. + + + + + Wire format for NLog Event. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the client-generated identifier of the event. + + + + + Gets or sets the ordinal of the log level. + + + + + Gets or sets the logger ordinal (index into . + + The logger ordinal. + + + + Gets or sets the time delta (in ticks) between the time of the event and base time. + + + + + Gets or sets the message string index. + + + + + Gets or sets the collection of layout values. + + + + + Gets the collection of indexes into array for each layout value. + + + + + Converts the to . + + The object this is part of.. + The logger name prefix to prepend in front of the logger name. + Converted . + + + + Wire format for NLog event package. + + + + + Gets or sets the name of the client. + + The name of the client. + + + + Gets or sets the base time (UTC ticks) for all events in the package. + + The base time UTC. + + + + Gets or sets the collection of layout names which are shared among all events. + + The layout names. + + + + Gets or sets the collection of logger names. + + The logger names. + + + + Gets or sets the list of events. + + The events. + + + + Converts the events to sequence of objects suitable for routing through NLog. + + The logger name prefix to prepend in front of each logger name. + + Sequence of objects. + + + + + Converts the events to sequence of objects suitable for routing through NLog. + + + Sequence of objects. + + + + + List of strings annotated for more terse serialization. + + + + + Initializes a new instance of the class. + + + + + Log Receiver Client using WCF. + + + This class marked as obsolete before NLog 4.3.11 and it will be removed in a future release. + + It provides an implementation of the legacy interface and it will be completely obsolete when the + ILogReceiverClient is removed. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Log Receiver Client facade. It allows the use either of the one way or two way + service contract using WCF through its unified interface. + + + Delegating methods are generated with Resharper. + 1. change ProxiedClient to private field (instead of public property) + 2. delegate members + 3. change ProxiedClient back to public property. + + + + + + The client getting proxied + + + + + Do we use one-way or two-way messaging? + + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + The binding. + The remote address. + + + + Causes a communication object to transition immediately from its current state into the closed state. + + + + + Begins an asynchronous operation to close a communication object. + + + The that references the asynchronous close operation. + + The delegate that receives notification of the completion of the asynchronous close operation.An object, specified by the application, that contains state information associated with the asynchronous close operation. was called on an object in the state.The default timeout elapsed before the was able to close gracefully. + + + + Begins an asynchronous operation to close a communication object with a specified timeout. + + + The that references the asynchronous close operation. + + The that specifies how long the send operation has to complete before timing out.The delegate that receives notification of the completion of the asynchronous close operation.An object, specified by the application, that contains state information associated with the asynchronous close operation. was called on an object in the state.The specified timeout elapsed before the was able to close gracefully. + + + + Begins an asynchronous operation to open a communication object. + + + The that references the asynchronous open operation. + + The delegate that receives notification of the completion of the asynchronous open operation.An object, specified by the application, that contains state information associated with the asynchronous open operation.The was unable to be opened and has entered the state.The default open timeout elapsed before the was able to enter the state and has entered the state. + + + + Begins an asynchronous operation to open a communication object within a specified interval of time. + + + The that references the asynchronous open operation. + + The that specifies how long the send operation has to complete before timing out.The delegate that receives notification of the completion of the asynchronous open operation.An object, specified by the application, that contains state information associated with the asynchronous open operation.The was unable to be opened and has entered the state.The specified timeout elapsed before the was able to enter the state and has entered the state. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Enables the user to configure client and service credentials as well as service credential authentication settings for use on the client side of communication. + + + + + Causes a communication object to transition from its current state into the closed state. + + The that specifies how long the send operation has to complete before timing out. was called on an object in the state.The timeout elapsed before the was able to close gracefully. + + + + Causes a communication object to transition from its current state into the closed state. + + was called on an object in the state.The default close timeout elapsed before the was able to close gracefully. + + + + Closes the client asynchronously. + + User-specific state. + + + + Closes the client asynchronously. + + + + + Occurs when Close operation has completed. + + + + + Occurs when the communication object completes its transition from the closing state into the closed state. + + + + + Occurs when the communication object first enters the closing state. + + + + + Instructs the inner channel to display a user interface if one is required to initialize the channel prior to using it. + + + + + Gets or sets the cookie container. + + The cookie container. + + + + Completes an asynchronous operation to close a communication object. + + The that is returned by a call to the method. was called on an object in the state.The timeout elapsed before the was able to close gracefully. + + + + Completes an asynchronous operation to open a communication object. + + The that is returned by a call to the method.The was unable to be opened and has entered the state.The timeout elapsed before the was able to enter the state and has entered the state. + + + + Gets the target endpoint for the service to which the WCF client can connect. + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Occurs when the communication object first enters the faulted state. + + + + + Gets the underlying implementation. + + + + + Causes a communication object to transition from the created state into the opened state. + + The was unable to be opened and has entered the state.The default open timeout elapsed before the was able to enter the state and has entered the state. + + + + Causes a communication object to transition from the created state into the opened state within a specified interval of time. + + The that specifies how long the send operation has to complete before timing out.The was unable to be opened and has entered the state.The specified timeout elapsed before the was able to enter the state and has entered the state. + + + + Opens the client asynchronously. + + + + + Opens the client asynchronously. + + User-specific state. + + + + Occurs when Open operation has completed. + + + + + Occurs when the communication object completes its transition from the opening state into the opened state. + + + + + Occurs when the communication object first enters the opening state. + + + + + Processes the log messages asynchronously. + + The events to send. + + + + Processes the log messages asynchronously. + + The events to send. + User-specific state. + + + + Occurs when the log message processing has completed. + + + + + Gets the current state of the communication-oriented object. + + + The value of the of the object. + + + + + Causes a communication object to transition from its current state into the closed state. + + + + + Abstract base class for the WcfLogReceiverXXXWay classes. It can only be + used internally (see internal constructor). It passes off any Channel usage + to the inheriting class. + + Type of the WCF service. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Occurs when the log message processing has completed. + + + + + Occurs when Open operation has completed. + + + + + Occurs when Close operation has completed. + + + + + Gets or sets the cookie container. + + The cookie container. + + + + Opens the client asynchronously. + + + + + Opens the client asynchronously. + + User-specific state. + + + + Closes the client asynchronously. + + + + + Closes the client asynchronously. + + User-specific state. + + + + Processes the log messages asynchronously. + + The events to send. + + + + Processes the log messages asynchronously. + + The events to send. + User-specific state. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Log Receiver Client using WCF. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Log Receiver Client using WCF. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + + + + + Gets the thread-local dictionary + + Must be true for any subsequent dictionary modification operation + + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The to use when converting a value to a . + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Returns all item names + + A set of the names of all items in current thread-MDC. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified exists in current thread MDC. + + + + Removes the specified from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Async version of Mapped Diagnostics Context - a logical context structure that keeps a dictionary + of strings and provides methods to output them in layouts. Allows for maintaining state across + asynchronous tasks and call contexts. + + + Ideally, these changes should be incorporated as a new version of the MappedDiagnosticsContext class in the original + NLog library so that state can be maintained for multiple threads in asynchronous situations. + + + + + Simulate ImmutableDictionary behavior (which is not yet part of all .NET frameworks). + In future the real ImmutableDictionary could be used here to minimize memory usage and copying time. + + Must be true for any subsequent dictionary modification operation + Prepare dictionary for additional inserts + + + + + Gets the current logical context named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current logical context named item, as . + + Item name. + The to use when converting a value to a string. + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current logical context named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Updates the current logical context with multiple items in single operation + + . + >An that can be used to remove the item from the current logical context (null if no items). + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Returns all item names + + A collection of the names of all items in current logical context. + + + + Checks whether the specified exists in current logical context. + + Item name. + A boolean indicating whether the specified exists in current logical context. + + + + Removes the specified from current logical context. + + Item name. + + + + Clears the content of current logical context. + + + + + Clears the content of current logical context. + + Free the full slot. + + + + Mapped Diagnostics Context + + This class marked as obsolete before NLog 2.0 and it may be removed in a future release. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified item exists in current thread MDC. + + + + Removes the specified item from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Mark a parameter of a method for message templating + + + + + Specifies which parameter of an annotated method should be treated as message-template-string + + + + + The name of the parameter that should be as treated as message-template-string + + + + + The type of the captured hole + + + + + Not decided + + + + + normal {x} + + + + + Serialize operator {@x} (aka destructure) + + + + + stringification operator {$x} + + + + + A hole that will be replaced with a value + + + + + Constructor + + + + Parameter name sent to structured loggers. + This is everything between "{" and the first of ",:}". + Including surrounding spaces and names that are numbers. + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + Type + + + + When the template is positional, this is the parsed name of this parameter. + For named templates, the value of Index is undefined. + + + Alignment to render the parameter, by default 0. + This is the parsed value between "," and the first of ":}" + + + + A fixed value + + + + Number of characters from the original template to copy at the current position. + This can be 0 when the template starts with a hole or when there are multiple consecutive holes. + + + Number of characters to skip in the original template at the current position. + 0 is a special value that mean: 1 escaped char, no hole. It can also happen last when the template ends with a literal. + + + + Combines Literal and Hole + + + + Literal + + + Hole + Uninitialized when = 0. + + + + Description of a single parameter extracted from a MessageTemplate + + + + + Parameter Name extracted from + This is everything between "{" and the first of ",:}". + + + + + Parameter Value extracted from the -array + + + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + + Parameter method that should be used to render the parameter + See also + + + + + Returns index for , when + + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + Parameter CaptureType + + + + Parameters extracted from parsing as MessageTemplate + + + + + + + + + + + Gets the parameters at the given index + + + + + Number of parameters + + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Indicates whether the template was parsed successful, and there are no unmatched parameters + + + + + Constructor for parsing the message template with parameters + + including any parameter placeholders + All + + + + Constructor for named parameters that already has been parsed + + + + + Create MessageTemplateParameter from + + + + + A message template + + + + The original template string. + This is the key passed to structured targets. + + + The list of literal parts, useful for string rendering. + It indicates the number of characters from the original string to print, + then there's a hole with how many chars to skip. + + "Hello {firstName} {lastName}!" + ------------------------------------- + ║P |S ║P|S ║P|S║ + ║6 |11 ║1|10 ║1|0║ + ║Hello |{firstName}║ |{lastName}║!║ + + "{x} * 2 = {2x}" + -------------------- + ║P|S ║P |S ║ + ║0|3 ║7 |4 ║ + ║{x}║ * 2 = |{2x}║ + + The tricky part is escaped braces. They are represented by a skip = 0, + which is interpreted as "move one char forward, no hole". + + "Escaped }} is fun." + ---------------------- + ║P |S║P |S║ + ║9 |0║8 |0║ + ║Escaped }|}║ is fun.|║ + + + + This list of holes. It's used both to fill the string rendering + and to send values along the template to structured targets. + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Create a template, which is already parsed + + + + + + + + + Create a template, which is already parsed + + + + + + + + This is for testing only: recreates from the parsed data. + + + + This is for testing only: rebuilds the hole + + Add to this string builder + ref for performance + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Gets the current literal/hole in the template + + + + + Clears the enumerator + + + + + Restarts the enumerator of the template + + + + + Moves to the next literal/hole in the template + + Found new element [true/false] + + + + Parse format after hole name/index. Handle the escaped { and } in the format. Don't read the last } + + + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Error when parsing a template. + + + + + Current index when the error occurred. + + + + + The template we were parsing + + + + + New exception + + The message to be shown. + Current index when the error occurred. + + + + + Render templates + + + + + Render a template to a string. + + The template. + Culture. + Parameters for the holes. + Do not fallback to StringBuilder.Format for positional templates. + The String Builder destination. + Parameters for the holes. + + + + Render a template to a string. + + The template. + The String Builder destination. + Culture. + Parameters for the holes. + Rendered template, never null. + + + + Convert Render or serialize a value, with optionally backwards-compatible with + + + + Singleton + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Format an object to a readable string, or if it's an object, serialize + + The value to convert + + + + + + + + Try serializing a scalar (string, int, NULL) or simple type (IFormattable) + + + + + Serialize Dictionary as JSON like structure, without { and } + + + "FirstOrder"=true, "Previous login"=20-12-2017 14:55:32, "number of tries"=1 + + + formatstring of an item + + + + + + + + + Convert a value to a string with format and append to . + + The value to convert. + Format sting for the value. + Format provider for the value. + Append to this + + + + Nested Diagnostics Context + + This class marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top object off the NDC stack. The object is removed from the stack. + + The top object from the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all objects on the NDC stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Nested Diagnostics Context - a thread-local structure that keeps a stack + of strings and provides methods to output them in layouts + + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object at the top of the NDC stack if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified object on current thread NDC. + + The object to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top message from the NDC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top object off the NDC stack. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Peeks the first object on the NDC stack + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. + + Array of objects on the stack. + + + + Resets the stack to the original count during . + + + + + Initializes a new instance of the class. + + The stack. + The previous count. + + + + Reverts the stack to original item count. + + + + + Async version of - a logical context structure that keeps a stack + Allows for maintaining scope across asynchronous tasks and call contexts. + + + + + Pushes the specified value on current stack + + The value to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified value on current stack + + The value to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDLC stack. + + The top message which is no longer on the stack. + this methods returns a object instead of string, this because of backwards-compatibility + + + + Pops the top message from the NDLC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top message off the current NDLC stack + + The object from the top of the NDLC stack, if defined; otherwise null. + + + + Peeks the top object on the current NDLC stack + + The object from the top of the NDLC stack, if defined; otherwise null. + + + + Peeks the current scope, and returns its start time + + Scope Creation Time + + + + Peeks the first scope, and returns its start time + + Scope Creation Time + + + + Clears current stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Exception thrown during NLog configuration. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The inner exception. + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Exception thrown during log event processing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + TraceListener which routes all messages through NLog. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the log factory to use when outputting messages (null - use LogManager). + + + + + Gets or sets the default log level. + + + + + Gets or sets the log which should be always used regardless of source level. + + + + + Gets or sets a value indicating whether flush calls from trace sources should be ignored. + + + + + Gets a value indicating whether the trace listener is thread safe. + + + true if the trace listener is thread safe; otherwise, false. The default is false. + + + + Gets or sets a value indicating whether to use auto logger name detected from the stack trace. + + + + + When overridden in a derived class, writes the specified message to the listener you create in the derived class. + + A message to write. + + + + When overridden in a derived class, writes a message to the listener you create in the derived class, followed by a line terminator. + + A message to write. + + + + When overridden in a derived class, closes the output stream so it no longer receives tracing or debugging output. + + + + + Emits an error message. + + A message to emit. + + + + Emits an error message and a detailed error message. + + A message to emit. + A detailed message to emit. + + + + Flushes the output (if is not true) buffer with the default timeout of 15 seconds. + + + + + Writes trace information, a data object and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + The trace data to emit. + + + + Writes trace information, an array of data objects and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + An array of objects to emit as data. + + + + Writes trace and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + + + + Writes trace information, a formatted array of objects and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + A format string that contains zero or more format items, which correspond to objects in the array. + An object array containing zero or more objects to format. + + + + Writes trace information, a message, and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + A message to write. + + + + Writes trace information, a message, a related activity identity and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + A numeric identifier for the event. + A message to write. + A object identifying a related activity. + + + + Gets the custom attributes supported by the trace listener. + + + A string array naming the custom attributes supported by the trace listener, or null if there are no custom attributes. + + + + + Translates the event type to level from . + + Type of the event. + Translated log level. + + + + Process the log event + The log level. + The name of the logger. + The log message. + The log parameters. + The event id. + The event type. + The related activity id. + + + + + It works as a normal but it discards all messages which an application requests + to be logged. + + It effectively implements the "Null Object" pattern for objects. + + + + + Initializes a new instance of . + + The factory class to be used for the creation of this logger. + + + + Extension methods to setup LogFactory options + + + + + Gets the logger with the full name of the current class, so namespace and class name. + + + + + Gets the specified named logger. + + + + + Configures loading of NLog extensions for Targets and LayoutRenderers + + + + + Configures the output of NLog for diagnostics / troubleshooting + + + + + Configures serialization and transformation of LogEvents + + + + + Loads NLog config created by the method + + + + + Loads NLog config provided in + + + + + Loads NLog config from filename if provided, else fallback to scanning for NLog.config + + + + + Loads NLog config from XML in + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Enable/disables autoloading of NLog extensions by scanning and loading available assemblies + + + Enabled by default, and gives a huge performance hit during startup. Recommended to disable this when running in the cloud. + + + + + Registers NLog extensions from the assembly. + + + + + Registers NLog extensions from the assembly type name + + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + MethodInfo extracted by reflection - typeof(MyClass).GetMethod("MyFunc", BindingFlags.Static). + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + Lambda method. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + Lambda method. + + + + Extension methods to setup NLog options + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Overrides the active with a new custom implementation + + + + + Overrides the active with a new custom implementation + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Specifies the way archive numbering is performed. + + + + + Sequence style numbering. The most recent archive has the highest number. + + + + + Rolling style numbering (the most recent is always #0 then #1, ..., #N. + + + + + Date style numbering. Archives will be stamped with the prior period + (Year, Month, Day, Hour, Minute) datetime. + + + + + Date and sequence style numbering. + Archives will be stamped with the prior period (Year, Month, Day) datetime. + The most recent archive has the highest number (in combination with the date). + + + + + Abstract Target with async Task support + + + + + How many milliseconds to delay the actual write operation to optimize for batching + + + + + How many seconds a Task is allowed to run before it is cancelled. + + + + + How many attempts to retry the same Task, before it is aborted + + + + + How many milliseconds to wait before next retry (will double with each retry) + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Task Scheduler used for processing async Tasks + + + + + Constructor + + + + + Initializes the internal queue for pending logevents + + + + + Override this to create the actual logging task + + Example of how to override this method, and call custom async method + + protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) + { + return CustomWriteAsync(logEvent, token); + } + + private async Task CustomWriteAsync(LogEventInfo logEvent, CancellationToken token) + { + await MyLogMethodAsync(logEvent, token).ConfigureAwait(false); + } + + + The log event. + The cancellation token + + + + + Override this to create the actual logging task for handling batch of logevents + + A batch of logevents. + The cancellation token + + + + + Handle cleanup after failed write operation + + Exception from previous failed Task + The cancellation token + Number of retries remaining + Time to sleep before retrying + Should attempt retry + + + + Schedules the LogEventInfo for async writing + + The log event. + + + + Write to queue without locking + + + + + + Schedules notification of when all messages has been written + + + + + + Closes Target by updating CancellationToken + + + + + Releases any managed resources + + + + + + Checks the internal queue for the next to create a new task for + + Used for race-condition validation between task-completion and timeout + Signals whether previousTask completed an almost full BatchSize + + + + Generates recursive task-chain to perform retry of writing logevents with increasing retry-delay + + + + + Creates new task to handle the writing of the input + + LogEvents to write + New Task created [true / false] + + + + Handles that scheduled task has completed (successfully or failed), and starts the next pending task + + Task just completed + AsyncContinuation to notify of success or failure + + + + Timer method, that is fired when pending task fails to complete within timeout + + + + + + Sends log messages to the remote instance of Chainsaw application from log4j. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a name. + + Name of the target. + + + + Color formatting for using ANSI Color Codes + + + + + Not using bold to get light colors, as it has to be cleared + + + + + Not using bold to get light colors, as it has to be cleared (And because it only works for text, and not background) + + + + + Resets both foreground and background color. + + + + + ANSI have 8 color-codes (30-37) by default. The "bright" (or "intense") color-codes (90-97) are extended values not supported by all terminals + + + + + Color formatting for using + and + + + + + Writes log messages to the console with customizable coloring. + + Documentation on NLog Wiki + + + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default.In multithreaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether the error stream (stderr) should be used instead of the output stream (stdout). + + + + + + Gets or sets a value indicating whether to use default row highlighting rules. + + + The default rules are: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConditionForeground ColorBackground Color
level == LogLevel.FatalRedNoChange
level == LogLevel.ErrorYellowNoChange
level == LogLevel.WarnMagentaNoChange
level == LogLevel.InfoWhiteNoChange
level == LogLevel.DebugGrayNoChange
level == LogLevel.TraceDarkGrayNoChange
+
+ +
+ + + The encoding for writing messages to the . + + Has side effect + + + + + Gets or sets a value indicating whether to auto-check if the console is available. + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-check if the console has been redirected to file + - Disables coloring logic when System.Console.IsOutputRedirected = true + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + + Enables output using ANSI Color Codes + + + + + + Gets the row highlighting rules. + + + + + + Gets the word highlighting rules. + + + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified log event to the console highlighting entries + and words based on a set of defined rules. + + Log event. + + + + Colored console output color. + + + Note that this enumeration is defined to be binary compatible with + .NET 2.0 System.ConsoleColor + some additions + + + + + Black Color (#000000). + + + + + Dark blue Color (#000080). + + + + + Dark green Color (#008000). + + + + + Dark Cyan Color (#008080). + + + + + Dark Red Color (#800000). + + + + + Dark Magenta Color (#800080). + + + + + Dark Yellow Color (#808000). + + + + + Gray Color (#C0C0C0). + + + + + Dark Gray Color (#808080). + + + + + Blue Color (#0000FF). + + + + + Green Color (#00FF00). + + + + + Cyan Color (#00FFFF). + + + + + Red Color (#FF0000). + + + + + Magenta Color (#FF00FF). + + + + + Yellow Color (#FFFF00). + + + + + White Color (#FFFFFF). + + + + + Don't change the color. + + + + + The row-highlighting condition. + + + + + Initializes static members of the ConsoleRowHighlightingRule class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The condition. + Color of the foreground. + Color of the background. + + + + Gets the default highlighting rule. Doesn't change the color. + + + + + Gets or sets the condition that must be met in order to set the specified foreground and background color. + + + + + + Gets or sets the foreground color. + + + + + + Gets or sets the background color. + + + + + + Checks whether the specified log event matches the condition (if any). + + + Log event. + + + A value of if the condition is not defined or + if it matches, otherwise. + + + + + Writes log messages to the console. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default. In multi threaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Gets or sets a value indicating whether to send the log messages to the standard error instead of the standard output. + + + + + + The encoding for writing messages to the . + + Has side effect + + + + + Gets or sets a value indicating whether to auto-check if the console is available + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + + Gets or sets whether to enable batch writing using char[]-buffers, instead of using + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified logging event to the Console.Out or + Console.Error depending on the value of the Error flag. + + The logging event. + + Note that the Error option is not supported on .NET Compact Framework. + + + + + + + + Write to output + + + + + Highlighting rule for Win32 colorful console. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The text to be matched.. + Color of the foreground. + Color of the background. + + + + Gets or sets the regular expression to be matched. You must specify either text or regex. + + + + + + Gets or sets the condition that must be met before scanning the row for highlight of words + + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets the text to be matched. You must specify either text or regex. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Gets or sets the foreground color. + + + + + + Gets or sets the background color. + + + + + + Gets the compiled regular expression that matches either Text or Regex property. Only used when is true. + + + + + Information about database command + parameters. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the type of the command. + + The type of the command. + + + + + Gets or sets the connection string to run the command against. If not provided, connection string from the target is used. + + + + + + Gets or sets the command text. + + + + + + Gets or sets a value indicating whether to ignore failures. + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a database named or positional parameter. + + + + + + Information about object-property for the database-connection-object + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name for the object-property + + + + + + Gets or sets the value to assign on the object-property + + + + + + Gets or sets the type of the object-property + + + + + + Gets or sets convert format of the property value + + + + + + Gets or sets the culture used for parsing property string-value for type-conversion + + + + + + Represents a parameter to a Database target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the parameter. + The parameter layout. + + + + Gets or sets the database parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets the database parameter DbType. + + + + + + Gets or sets the database parameter size. + + + + + + Gets or sets the database parameter precision. + + + + + + Gets or sets the database parameter scale. + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets convert format of the database parameter value. + + + + + + Gets or sets the culture used for parsing parameter string-value for type-conversion + + + + + + Writes log messages to the database using an ADO.NET provider. + + + - NETSTANDARD cannot load connectionstrings from .config + + Documentation on NLog Wiki + + + The configuration is dependent on the database type, because + there are different methods of specifying connection string, SQL + command and command parameters. + + MS SQL Server using System.Data.SqlClient: + + Oracle using System.Data.OracleClient: + + Oracle using System.Data.OleDBClient: + + To set up the log target programmatically use code like this (an equivalent of MSSQL configuration): + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets the name of the database provider. + + + + The parameter name should be a provider invariant name as registered in machine.config or app.config. Common values are: + +
    +
  • System.Data.SqlClient - SQL Sever Client
  • +
  • System.Data.SqlServerCe.3.5 - SQL Sever Compact 3.5
  • +
  • System.Data.OracleClient - Oracle Client from Microsoft (deprecated in .NET Framework 4)
  • +
  • Oracle.DataAccess.Client - ODP.NET provider from Oracle
  • +
  • System.Data.SQLite - System.Data.SQLite driver for SQLite
  • +
  • Npgsql - Npgsql driver for PostgreSQL
  • +
  • MySql.Data.MySqlClient - MySQL Connector/Net
  • +
+ (Note that provider invariant names are not supported on .NET Compact Framework). + + Alternatively the parameter value can be be a fully qualified name of the provider + connection type (class implementing ) or one of the following tokens: + +
    +
  • sqlserver, mssql, microsoft or msde - SQL Server Data Provider
  • +
  • oledb - OLEDB Data Provider
  • +
  • odbc - ODBC Data Provider
  • +
+
+ +
+ + + Gets or sets the name of the connection string (as specified in <connectionStrings> configuration section. + + + + + + Gets or sets the connection string. When provided, it overrides the values + specified in DBHost, DBUserName, DBPassword, DBDatabase. + + + + + + Gets or sets the connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used. + + + + + + Gets the installation DDL commands. + + + + + + Gets the uninstallation DDL commands. + + + + + + Gets or sets a value indicating whether to keep the + database connection open between the log events. + + + + + + Obsolete - value will be ignored! The logging code always runs outside of transaction. + + Gets or sets a value indicating whether to use database transactions. + Some data providers require this. + + + + This option was removed in NLog 4.0 because the logging code always runs outside of transaction. + This ensures that the log gets written to the database if you rollback the main transaction because of an error and want to log the error. + + + + + Gets or sets the database host name. If the ConnectionString is not provided + this value will be used to construct the "Server=" part of the + connection string. + + + + + + Gets or sets the database user name. If the ConnectionString is not provided + this value will be used to construct the "User ID=" part of the + connection string. + + + + + + Gets or sets the database password. If the ConnectionString is not provided + this value will be used to construct the "Password=" part of the + connection string. + + + + + + Gets or sets the database name. If the ConnectionString is not provided + this value will be used to construct the "Database=" part of the + connection string. + + + + + + Gets or sets the text of the SQL command to be run on each log level. + + + Typically this is a SQL INSERT statement or a stored procedure call. + It should use the database-specific parameters (marked as @parameter + for SQL server or :parameter for Oracle, other data providers + have their own notation) and not the layout renderers, + because the latter is prone to SQL injection attacks. + The layout renderers should be specified as <parameter /> elements instead. + + + + + + Gets or sets the type of the SQL command to be run on each log level. + + + This specifies how the command text is interpreted, as "Text" (default) or as "StoredProcedure". + When using the value StoredProcedure, the commandText-property would + normally be the name of the stored procedure. TableDirect method is not supported in this context. + + + + + + Gets the collection of parameters. Each item contains a mapping + between NLog layout and a database named or positional parameter. + + + + + + Gets the collection of properties. Each item contains a mapping + between NLog layout and a property on the DbConnection instance + + + + + + Gets the collection of properties. Each item contains a mapping + between NLog layout and a property on the DbCommand instance + + + + + + Configures isolated transaction batch writing. If supported by the database, then it will improve insert performance. + + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Set the to use it for opening connections to the database. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the database. It creates + a new database command, prepares parameters for it by calculating + layouts and executes the command. + + The logging event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Write logEvent to database + + + + + Build the connectionstring from the properties. + + + Using at first, and falls back to the properties , + , and + + Event to render the layout inside the properties. + + + + + Escape quotes and semicolons. + See https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms722656(v=vs.85)#setting-values-that-use-reserved-characters + + + + + Create database parameter + + Current command. + Parameter configuration info. + + + + Extract parameter value from the logevent + + Current logevent. + Parameter configuration info. + + + + Create Default Value of Type + + + + + + + A descriptor for an archive created with the DateAndSequence numbering mode. + + + + + The full name of the archive file. + + + + + The parsed date contained in the file name. + + + + + The parsed sequence number contained in the file name. + + + + + Determines whether produces the same string as the current instance's date once formatted with the current instance's date format. + + The date to compare the current object's date to. + True if the formatted dates are equal, otherwise False. + + + + Initializes a new instance of the class. + + + + + Writes log messages to the attached managed debugger. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the attached debugger. + + The logging event. + + + + Mock target - useful for testing. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + Increases the number of messages. + + The logging event. + + + + Default class for serialization of values to JSON format. + + + + + Singleton instance of the serializer. + + + + + Private. Use + + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + Serialized value. + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + serialisation options + Serialized value. + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + The objects in path (Avoid cyclic reference loop). + The current depth (level) of recursion. + Object serialized successfully (true/false). + + + + No quotes needed for this type? + + + + + Checks the object if it is numeric + + TypeCode for the object + Accept fractional types as numeric type. + + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + all options + JSON escaped string + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + Should non-ascii characters be encoded + + JSON escaped string + + + + Writes log message to the Event Log. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Max size in characters (limitation of the EventLog API). + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Initializes a new instance of the class. + + . to be used as Source. + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the machine on which Event Log service is running. + + + + + + Gets or sets the layout that renders event ID. + + + + + + Gets or sets the layout that renders event Category. + + + + + + Optional entry type. When not set, or when not convertible to then determined by + + + + + + Gets or sets the value to be used as the event Source. + + + By default this is the friendly name of the current AppDomain. + + + + + + Gets or sets the name of the Event Log to write to. This can be System, Application or any user-defined name. + + + + + + Gets or sets the message length limit to write to the Event Log. + + MaxMessageLength cannot be zero or negative + + + + + Gets or sets the maximum Event log size in kilobytes. + + + MaxKilobytes cannot be less than 64 or greater than 4194240 or not a multiple of 64. + If null, the value will not be specified while creating the Event log. + + + + + + Gets or sets the action to take if the message is larger than the option. + + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Initializes the target. + + + + + Writes the specified logging event to the event log. + + The logging event. + + + + Get the entry type for logging the message. + + The logging event - for rendering the + + + + Get the source, if and only if the source is fixed. + + null when not + Internal for unit tests + + + + (re-)create an event source, if it isn't there. Works only with fixed source names. + + The source name. If source is not fixed (see , then pass null or . + always throw an Exception when there is an error + + + + A wrapper for Windows event log. + + + + + A wrapper for the property . + + + + + A wrapper for the property . + + + + + A wrapper for the property . + + + + + A wrapper for the property . + + + + + Indicates whether an event log instance is associated. + + + + + A wrapper for the method . + + + + + Creates a new association with an instance of the event log. + + + + + A wrapper for the static method . + + + + + A wrapper for the static method . + + + + + A wrapper for the static method . + + + + + A wrapper for the static method . + + + + + The implementation of , that uses Windows . + + + + + + + + + + + + + + + + + + + + + + + + Creates a new association with an instance of Windows . + + + + + + + + + + + + + + + + + Action that should be taken if the message is greater than + the max message size allowed by the Event Log. + + + + + Truncate the message before writing to the Event Log. + + + + + Split the message and write multiple entries to the Event Log. + + + + + Discard of the message. It will not be written to the Event Log. + + + + + Check if cleanup should be performed on initialize new file + + Skip cleanup when initializing new file, just after having performed archive operation + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Characters determining the start of the . + + + + + Characters determining the end of the . + + + + + File name which is used as template for matching and replacements. + It is expected to contain a pattern to match. + + + + + The begging position of the + within the . -1 is returned + when no pattern can be found. + + + + + The ending position of the + within the . -1 is returned + when no pattern can be found. + + + + + Replace the pattern with the specified String. + + + + + + + Archives the log-files using a date style numbering. Archives will be stamped with the + prior period (Year, Month, Day, Hour, Minute) datetime. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Archives the log-files using a date and sequence style numbering. Archives will be stamped + with the prior period (Year, Month, Day) datetime. The most recent archive has the highest number (in + combination with the date). + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Parse filename with date and sequence pattern + + + dateformat for archive + + the found pattern. When failed, then default + the found pattern. When failed, then default + + + + + Archives the log-files using the provided base-archive-filename. If the base-archive-filename causes + duplicate archive filenames, then sequence-style is automatically enforced. + + Example: + Base Filename trace.log + Next Filename trace.0.log + + The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Dynamically converts a non-template archiveFilePath into a correct archiveFilePattern. + Before called the original IFileArchiveMode, that has been wrapped by this + + + + + Determines if the file name as contains a numeric pattern i.e. {#} in it. + + Example: + trace{#}.log Contains the numeric pattern. + trace{###}.log Contains the numeric pattern. + trace{#X#}.log Contains the numeric pattern (See remarks). + trace.log Does not contain the pattern. + + Occasionally, this method can identify the existence of the {#} pattern incorrectly. + File name to be checked. + when the pattern is found; otherwise. + + + + Archives the log-files using a rolling style numbering (the most recent is always #0 then + #1, ..., #N. + + When the number of archive files exceed the obsolete archives + are deleted. + + + + + Replaces the numeric pattern i.e. {#} in a file name with the parameter value. + + File name which contains the numeric pattern. + Value which will replace the numeric pattern. + File name with the value of in the position of the numeric pattern. + + + + Archives the log-files using a sequence style numbering. The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Modes of archiving files based on time. + + + + + Don't archive based on time. + + + + + AddToArchive every year. + + + + + AddToArchive every month. + + + + + AddToArchive daily. + + + + + AddToArchive every hour. + + + + + AddToArchive every minute. + + + + + AddToArchive every Sunday. + + + + + AddToArchive every Monday. + + + + + AddToArchive every Tuesday. + + + + + AddToArchive every Wednesday. + + + + + AddToArchive every Thursday. + + + + + AddToArchive every Friday. + + + + + AddToArchive every Saturday. + + + + + Type of filepath + + + + + Detect of relative or absolute + + + + + Relative path + + + + + Absolute path + + Best for performance + + + + Writes log messages to one or more files. + + Documentation on NLog Wiki + + + + Default clean up period of the initialized files. When a file exceeds the clean up period is removed from the list. + + Clean up period is defined in days. + + + + The maximum number of initialized files before clean up procedures are initiated, + to keep the number of initialized files to a minimum. Chose 25 to cater for monthly rolling of log-files. + + + + + This value disables file archiving based on the size. + + + + + Holds the initialized files each given time by the instance. Against each file, the last write time is stored. + + Last write time is store in local time (no UTC). + + + + List of the associated file appenders with the instance. + + + + + The number of initialized files at any one time. + + + + + The maximum number of archive files that should be kept. + + + + + The maximum days of archive files that should be kept. + + + + + The filename as target + + + + + The archive file name as target + + + + + The date of the previous log event. + + + + + The file name of the previous log event. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the name of the file to write to. + + + This FileName string is a layout which may include instances of layout renderers. + This lets you use a single target to write to multiple files. + + + The following value makes NLog write logging events to files based on the log level in the directory where + the application runs. + ${basedir}/${level}.log + All Debug messages will go to Debug.log, all Info messages will go to Info.log and so on. + You can combine as many of the layout renderers as you want to produce an arbitrary log file name. + + + + + + Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. + If set to false, nothing gets written when the filename is wrong. + + + + + + Is the an absolute or relative path? + + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + + Gets or sets a value indicating whether to delete old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + + + + + + Gets or sets a value indicating whether to replace file contents on each write instead of appending log message at the end. + + + + + + Gets or sets a value indicating whether to keep log file open instead of opening and closing it on each logging event. + + + Setting this property to True helps improve performance. + + + + + + Gets or sets the maximum number of log file names that should be stored as existing. + + + The bigger this number is the longer it will take to write each log record. The smaller the number is + the higher the chance that the clean function will be run when no new files have been opened. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + + Gets or sets the file attributes (Windows only). + + + + + + Gets or sets the line ending mode. + + + + + + Gets or sets a value indicating whether to automatically flush the file buffers after each log message. + + + + + + Gets or sets the number of files to be kept open. Setting this to a higher value may improve performance + in a situation where a single File target is writing to many files + (such as splitting by level or by logger). + + + The files are managed on a LRU (least recently used) basis, which flushes + the files that have not been used for the longest period of time should the + cache become full. As a rule of thumb, you shouldn't set this parameter to + a very high value. A number like 10-15 shouldn't be exceeded, because you'd + be keeping a large number of files open which consumes system resources. + + + + + + Gets or sets the maximum number of seconds that files are kept open. If this number is negative the files are + not automatically closed after a period of inactivity. + + + + + + Gets or sets the maximum number of seconds before open files are flushed. If this number is negative or zero + the files are not flushed by timer. + + + + + + Gets or sets the log file buffer size in bytes. + + + + + + Gets or sets the file encoding. + + + + + + Gets or sets whether or not this target should just discard all data that its asked to write. + Mostly used for when testing NLog Stack except final write + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on different network hosts. + + + This effectively prevents files from being kept open. + + + + + + Gets or sets a value indicating whether to write BOM (byte order mark) in created files + + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + The actual delay is a random value between 0 and the value specified + in this parameter. On each failed attempt the delay base is doubled + up to times. + + + Assuming that ConcurrentWriteAttemptDelay is 10 the time to wait will be:

+ a random value between 0 and 10 milliseconds - 1st attempt
+ a random value between 0 and 20 milliseconds - 2nd attempt
+ a random value between 0 and 40 milliseconds - 3rd attempt
+ a random value between 0 and 80 milliseconds - 4th attempt
+ ...

+ and so on. + + + + +

+ Gets or sets a value indicating whether to archive old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + After archiving the old file, the current log file will be empty. + + +
+ + + Gets or sets a value of the file size threshold to archive old log file on startup. + + + This option won't work if is set to false + Default value is 0 which means that the file is archived as soon as archival on + startup is enabled. + + + + + + Gets or sets a value specifying the date format to use when archiving files. + + + This option works only when the "ArchiveNumbering" parameter is set either to Date or DateAndSequence. + + + + + + Gets or sets the size in bytes above which log files will be automatically archived. + + Warning: combining this with isn't supported. We cannot create multiple archive files, if they should have the same name. + Choose: + + + Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. + + + + + + Gets or sets a value indicating whether to automatically archive log files every time the specified time passes. + + + Files are moved to the archive as part of the write operation if the current period of time changes. For example + if the current hour changes from 10 to 11, the first write that will occur + on or after 11:00 will trigger the archiving. +

+ Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. +

+
+ +
+ + + Is the an absolute or relative path? + + + + + + Gets or sets the name of the file to be used for an archive. + + + It may contain a special placeholder {#####} + that will be replaced with a sequence of numbers depending on + the archiving strategy. The number of hash characters used determines + the number of numerical digits to be used for numbering files. + + + + + + Gets or sets the maximum number of archive files that should be kept. + + + + + + Gets or sets the maximum days of archive files that should be kept. + + + + + + Gets or sets the way file archives are numbered. + + + + + + Used to compress log files during archiving. + This may be used to provide your own implementation of a zip file compressor, + on platforms other than .Net4.5. + Defaults to ZipArchiveFileCompressor on .Net4.5 and to null otherwise. + + + + + + Gets or sets a value indicating whether to compress archive files into the zip archive format. + + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + + Gets or sets a value indicating whether file creation calls should be synchronized by a system global mutex. + + + + + + Gets or sets a value indicating whether the footer should be written only when the file is archived. + + + + + + Gets the characters that are appended after each line. + + + + + Refresh the ArchiveFilePatternToWatch option of the . + The log file must be watched for archiving when multiple processes are writing to the same + open file. + + + + + Removes records of initialized files that have not been + accessed in the last two days. + + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Removes records of initialized files that have not been + accessed after the specified date. + + The cleanup threshold. + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Flushes all pending file operations. + + The asynchronous continuation. + + The timeout parameter is ignored, because file APIs don't provide + the needed functionality. + + + + + Returns the suitable appender factory ( ) to be used to generate the file + appenders associated with the instance. + + The type of the file appender factory returned depends on the values of various properties. + + suitable for this instance. + + + + Initializes file logging by creating data structures that + enable efficient multi-file logging. + + + + + Closes the file(s) opened for writing. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Get full filename (=absolute) and cleaned if needed. + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes the specified array of logging events to a file specified in the FileName + parameter. + + An array of objects. + + This function makes use of the fact that the events are batched by sorting + the requests by filename. This optimizes the number of open/close calls + and can help improve performance. + + + + + Returns estimated size for memory stream, based on events count and first event size in bytes. + + Count of events + Bytes count of first event + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Gets the bytes to be written to the file. + + Log event. + Array of bytes that are ready to be written. + + + + Modifies the specified byte array before it gets sent to a file. + + The byte array. + The modified byte array. The function can do the modification in-place. + + + + Gets the bytes to be written to the file. + + The log event to be formatted. + to help format log event. + Optional temporary char-array to help format log event. + Destination for the encoded result. + + + + Formats the log event for write. + + The log event to be formatted. + for the result. + + + + Modifies the specified byte array before it gets sent to a file. + + The LogEvent being written + The byte array. + + + + Archives fileName to archiveFileName. + + File name to be archived. + Name of the archive file. + + + + Gets the correct formatting to be used based on the value of for converting values which will be inserting into file + names during archiving. + + This value will be computed only when a empty value or is passed into + + Date format to used irrespectively of value. + Formatting for dates. + + + + Calculate the DateTime of the requested day of the week. + + The DateTime of the previous log event. + The next occuring day of the week to return a DateTime for. + The DateTime of the next occuring dayOfWeek. + For example: if previousLogEventTimestamp is Thursday 2017-03-02 and dayOfWeek is Sunday, this will return + Sunday 2017-03-05. If dayOfWeek is Thursday, this will return *next* Thursday 2017-03-09. + + + + Invokes the archiving process after determining when and which type of archiving is required. + + File name to be checked and archived. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + + + + Gets the pattern that archive files will match + + Filename of the log file + Log event that the instance is currently processing. + A string with a pattern that will match the archive file names + + + + Archives the file if it should be archived. + + The file name to check for. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + True when archive operation of the file was completed (by this target or a concurrent target) + + + + Closes any active file-appenders that matches the input filenames. + File-appender is requested to invalidate/close its filehandle, but keeping its archive-mutex alive + + + + + Indicates if the automatic archiving process should be executed. + + File name to be written. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the correct filename to archive + + + + + + Gets the file name for archiving, or null if archiving should not occur based on file size. + + File name to be written. + The size in bytes of the next chunk of data to be written in the file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the file name for archiving, or null if archiving should not occur based on date/time. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Truncates the input-time, so comparison of low resolution times (like dates) are not affected by ticks + + High resolution Time + Time Resolution Level + Truncated Low Resolution Time + + + + Evaluates which parts of a file should be written (header, content, footer) based on various properties of + instance and writes them. + + File name to be written. + Raw sequence of to be written into the content part of the file. + File has just been opened. + + + + Initialise a file to be used by the instance. Based on the number of initialized + files and the values of various instance properties clean up and/or archiving processes can be invoked. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file (DateTime.MinValue if just initialized). + + + + Writes the file footer and finalizes the file in instance internal structures. + + File name to close. + Indicates if the file is being finalized for archiving. + + + + Writes the footer information to a file. + + The file path to write to. + + + + Decision logic whether to archive logfile on startup. + and properties. + + File name to be written. + Decision whether to archive or not. + + + + Invokes the archiving and clean up of older archive file based on the values of + and + properties respectively. + + File name to be written. + Log event that the instance is currently processing. + + + + Creates the file specified in and writes the file content in each entirety i.e. + Header, Content and Footer. + + The name of the file to be written. + Sequence of to be written in the content section of the file. + First attempt to write? + This method is used when the content of the log file is re-written on every write. + + + + Writes the header information and byte order mark to a file. + + File appender associated with the file. + + + + The sequence of to be written in a file after applying any formatting and any + transformations required from the . + + The layout used to render output message. + Sequence of to be written. + Usually it is used to render the header and hooter of the files. + + + + Controls the text and color formatting for + + + + + Creates a TextWriter for the console to start building a colored text message + + Active console stream + Optional StringBuilder to optimize performance + TextWriter for the console + + + + Releases the TextWriter for the console after having built a colored text message (Restores console colors) + + Colored TextWriter + Active console stream + Original foreground color for console (If changed) + Original background color for console (If changed) + Flush TextWriter + + + + Changes foreground color for the Colored TextWriter + + Colored TextWriter + New foreground color for the console + Old previous backgroundColor color for the console + Old foreground color for the console + + + + Changes backgroundColor color for the Colored TextWriter + + Colored TextWriter + New backgroundColor color for the console + Old previous backgroundColor color for the console + Old backgroundColor color for the console + + + + Restores console colors back to their original state + + Colored TextWriter + Original foregroundColor color for the console + Original backgroundColor color for the console + + + + Writes multiple characters to console in one operation (faster) + + Colored TextWriter + Output Text + Start Index + End Index + + + + Writes single character to console + + Colored TextWriter + Output Text + + + + Writes whole string and completes with newline + + Colored TextWriter + Output Text + + + + Default row highlight rules for the console printer + + + + + Check if cleanup should be performed on initialize new file + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Create a wildcard file-mask that allows one to find all files belonging to the same archive. + + Base archive file pattern + Wildcard file-mask + + + + Search directory for all existing files that are part of the same archive. + + Base archive file pattern + + + + + Generate the next archive filename for the archive. + + Base archive file pattern + File date of archive + Existing files in the same archive + + + + + Return all files that should be removed from the provided archive. + + Base archive file pattern + Existing files in the same archive + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + + + + may be configured to compress archived files in a custom way + by setting before logging your first event. + + + + + Create archiveFileName by compressing fileName. + + Absolute path to the log file to compress. + Absolute path to the compressed archive file to create. + + + + Interface for serialization of values, maybe even objects to JSON format. + Useful for wrappers for existing serializers. + + + + + Returns a serialization of an object + into JSON format. + + The object to serialize to JSON. + Serialized value (null = Serialize failed). + + + + Options for JSON serialisation + + + + + Add quotes around object keys? + + + + + Format provider for value + + + + + Format string for value + + + + + Should non-ascii characters be encoded + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + Serialize enum as string value + + + + + Should dictionary keys be sanitized. All characters must either be letters, numbers or underscore character (_). + + Any other characters will be converted to underscore character (_) + + + + + How far down the rabbit hole should the Json Serializer go with object-reflection before stopping + + + + Initializes a new instance of the class. + + + + Line ending mode. + + + + + Insert platform-dependent end-of-line sequence after each line. + + + + + Insert CR LF sequence (ASCII 13, ASCII 10) after each line. + + + + + Insert CR character (ASCII 13) after each line. + + + + + Insert LF character (ASCII 10) after each line. + + + + + Insert null terminator (ASCII 0) after each line. + + + + + Do not insert any line ending. + + + + + Gets the name of the LineEndingMode instance. + + + + + Gets the new line characters (value) of the LineEndingMode instance. + + + + + Initializes a new instance of . + + The mode name. + The new line characters to be used. + + + + Returns the that corresponds to the supplied . + + + The textual representation of the line ending mode, such as CRLF, LF, Default etc. + Name is not case sensitive. + + The value, that corresponds to the . + There is no line ending mode with the specified name. + + + + Compares two objects and returns a + value indicating whether the first one is equal to the second one. + + The first level. + The second level. + The value of mode1.NewLineCharacters == mode2.NewLineCharacters. + + + + Compares two objects and returns a + value indicating whether the first one is not equal to the second one. + + The first mode + The second mode + The value of mode1.NewLineCharacters != mode2.NewLineCharacters. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms + and data structures like a hash table. + + + + + Determines whether the specified is + equal to this instance. + + The to compare with + this instance. + + Value of true if the specified + is equal to this instance; otherwise, false. + + + The parameter is null. + + + + Indicates whether the current object is equal to another object of the same type. + true if the current object is equal to the parameter; otherwise, false. + An object to compare with this object. + + + + Provides a type converter to convert objects to and from other representations. + + + + + Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. + + + true if this converter can perform the conversion; otherwise, false. + + An that provides a format context. A that represents the type you want to convert from. + + + + Converts the given object to the type of this converter, using the specified context and culture information. + + + An that represents the converted value. + + An that provides a format context. The to use as the current culture. The to convert. The conversion cannot be performed. + + + + Sends log messages to a NLog Receiver Service (using WCF or Web Services). + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets the endpoint address. + + The endpoint address. + + + + + Gets or sets the name of the endpoint configuration in WCF configuration file. + + The name of the endpoint configuration. + + + + + Gets or sets a value indicating whether to use binary message encoding. + + + + + + Gets or sets a value indicating whether to use a WCF service contract that is one way (fire and forget) or two way (request-reply) + + + + + + Gets or sets the client ID. + + The client ID. + + + + + Gets the list of parameters. + + The parameters. + + + + + Gets or sets a value indicating whether to include per-event properties in the payload sent to the server. + + + + + + Called when log events are being sent (test hook). + + The events. + The async continuations. + True if events should be sent, false to stop processing them. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Append" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Add value to the , returns ordinal in + + + lookup so only unique items will be added to + value to add + + + + + Creating a new instance of WcfLogReceiverClient + + Inheritors can override this method and provide their own + service configuration - binding and endpoint address + + This method marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Creating a new instance of IWcfLogReceiverClient + + Inheritors can override this method and provide their own + service configuration - binding and endpoint address + + + virtual is used by end users + + + + Sends log messages by email using SMTP protocol. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ Mail target works best when used with BufferingWrapper target + which lets you send multiple log messages in single mail +

+

+ To set up the buffered mail target in the configuration file, + use the following syntax: +

+ +

+ To set up the buffered mail target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets the mailSettings/smtp configuration from app.config in cases when we need those configuration. + E.g when UseSystemNetMailSettings is enabled and we need to read the From attribute from system.net/mailSettings/smtp + + Internal for mocking + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets sender's email address (e.g. joe@domain.com). + + + + + + Gets or sets recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets a value indicating whether to add new lines between log entries. + + A value of true if new lines should be added; otherwise, false. + + + + + Gets or sets the mail subject. + + + + + + Gets or sets mail message body (repeated for each log message send in one mail). + + Alias for the Layout property. + + + + + Gets or sets encoding to be used for sending e-mail. + + + + + + Gets or sets a value indicating whether to send message as HTML instead of plain text. + + + + + + Gets or sets SMTP Server to be used for sending. + + + + + + Gets or sets SMTP Authentication mode. + + + + + + Gets or sets the username used to connect to SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + + Gets or sets the password used to authenticate against SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + + Gets or sets a value indicating whether SSL (secure sockets layer) should be used when communicating with SMTP server. + + . + + + + Gets or sets the port number that SMTP Server is listening on. + + + + + + Gets or sets a value indicating whether the default Settings from System.Net.MailSettings should be used. + + + + + + Specifies how outgoing email messages will be handled. + + + + + + Gets or sets the folder where applications save mail messages to be processed by the local SMTP server. + + + + + + Gets or sets the priority used for sending mails. + + + + + + Gets or sets a value indicating whether NewLine characters in the body should be replaced with
tags. +
+ Only happens when is set to true. + +
+ + + Gets or sets a value indicating the SMTP client timeout. + + Warning: zero is not infinite waiting + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Renders an array logging events. + + Array of logging events. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Create mail and send with SMTP + + event printed in the body of the event + + + + Create buffer for body + + all events + first event for header + last event for footer + + + + + Set properties of + + last event for username/password + client to set properties on + Configure not at , as the properties could have layout renderers. + + + + Handle if it is a virtual directory. + + + + + + + Create key for grouping. Needed for multiple events in one mail message + + event for rendering layouts + string to group on + + + + Append rendered to + + append to this + event for rendering + append if not null + + + + Create the mail message with the addresses, properties and body. + + + + + Render and add the addresses to + + Addresses appended to this list + layout with addresses, ; separated + event for rendering the + added a address? + + + + Writes log messages to an ArrayList in memory for programmatic retrieval. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the list of logs gathered in the . + + + + + Gets or sets the max number of items to have in memory + + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + A parameter to MethodCall. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout to use for parameter value. + + + + Initializes a new instance of the class. + + Name of the parameter. + The layout. + + + + Initializes a new instance of the class. + + The name of the parameter. + The layout. + The type of the parameter. + + + + Gets or sets the name of the parameter. + + + + + + Gets or sets the type of the parameter. Obsolete alias for + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets the class name. + + + + + + Gets or sets the method name. The method must be public and static. + + Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx + e.g. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Initializes a new instance of the class. + + Name of the target. + Method to call on logevent. + + + + Initializes the target. + + + + + Calls the specified Method. + + Method parameters. + The logging event. + + + + Calls the specified Method. + + Method parameters. + + + + The base class for all targets which call methods (local or remote). + Manages parameters and type coercion. + + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + + + + Prepares an array of parameters to be passed based on the logging event and calls DoInvoke(). + + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Sends log messages over the network. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ To print the results, use any application that's able to receive messages over + TCP or UDP. NetCat is + a simple but very powerful command-line tool that can be used for that. This image + demonstrates the NetCat tool receiving log messages from Network target. +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will be very slow. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+

+ There are two specialized versions of the Network target: Chainsaw + and NLogViewer which write to instances of Chainsaw log4j viewer + or NLogViewer application respectively. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6) (not supported on Windows Phone 7.0)
  • +
  • tcp4://host:port - force TCP/IPv4 (not supported on Windows Phone 7.0)
  • +
  • tcp6://host:port - force TCP/IPv6 (not supported on Windows Phone 7.0)
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6, not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp4://host:port - force UDP/IPv4 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp6://host:port - force UDP/IPv6 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • http://host:port/pageName - HTTP using POST verb
  • +
  • https://host:port/pageName - HTTPS using POST verb
  • +
+ For SOAP-based webservice support over HTTP use WebService target. +
+ +
+ + + Gets or sets a value indicating whether to keep connection open whenever possible. + + + + + + Gets or sets a value indicating whether to append newline at the end of log message. + + + + + + Gets or sets the end of line value if a newline is appended at the end of log message . + + + + + + Gets or sets the maximum message size in bytes. + + + + + + Gets or sets the size of the connection cache (number of connections which are kept alive). + + + + + + Gets or sets the maximum current connections. 0 = no maximum. + + + + + + Gets or sets the action that should be taken if the will be more connections than . + + + + + + Gets or sets the maximum queue size. + + + + + + Gets or sets the action that should be taken if the message is larger than + maxMessageSize. + + + + + + Gets or sets the encoding to be used. + + + + + + Get or set the SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Sends the + rendered logging event over the network optionally concatenating it with a newline character. + + The logging event. + + + + Try to remove. + + + + + removed something? + + + + Gets the bytes to be written. + + Log event. + Byte array. + + + + The action to be taken when there are more connections then the max. + + + + + Just allow it. + + + + + Discard the connection item. + + + + + Block until there's more room in the queue. + + + + + Action that should be taken if the message overflows. + + + + + Report an error. + + + + + Split the message into smaller pieces. + + + + + Discard the entire message. + + + + + Represents a parameter to a NLogViewer target. + + + + + Initializes a new instance of the class. + + + + + Gets or sets viewer parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + Sends log messages to the remote instance of NLog Viewer. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include stack contents. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDLC item separator. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets the layout renderer which produces Log4j-compatible XML events. + + + + + Gets or sets the instance of that is used to format log messages. + + + + + + Discards log messages. Used mainly for debugging and benchmarking. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets a value indicating whether to perform layout calculation. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Does nothing. Optionally it calculates the layout text but + discards the results. + + The logging event. + + + + Outputs log messages through the OutputDebugString() Win32 API. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Outputs the rendered logging event through the OutputDebugString() Win32 API. + + The logging event. + + + + Increments specified performance counter on each write. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+ + TODO: + 1. Unable to create a category allowing multiple counter instances (.Net 2.0 API only, probably) + 2. Is there any way of adding new counters without deleting the whole category? + 3. There should be some mechanism of resetting the counter (e.g every day starts from 0), or auto-switching to + another counter instance (with dynamic creation of new instance). This could be done with layouts. + +
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets a value indicating whether performance counter should be automatically created. + + + + + + Gets or sets the name of the performance counter category. + + + + + + Gets or sets the name of the performance counter. + + + + + + Gets or sets the performance counter instance name. + + + + + + Gets or sets the counter help text. + + + + + + Gets or sets the performance counter type. + + + + + + The value by which to increment the counter. + + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Increments the configured performance counter. + + Log event. + + + + Closes the target and releases any unmanaged resources. + + + + + Ensures that the performance counter has been initialized. + + True if the performance counter is operational, false otherwise. + + + + SMTP authentication modes. + + + + + No authentication. + + + + + Basic - username and password. + + + + + NTLM Authentication. + + + + + Represents logging target. + + + + Are all layouts in this target thread-agnostic, if so we don't precalculate the layouts + + + + The Max StackTraceUsage of all the in this Target + + + + + Gets or sets the name of the target. + + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers + Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + Gets the object which can be used to synchronize asynchronous operations that must rely on the . + + + + + Gets the logging configuration this target is part of. + + + + + Gets a value indicating whether the target has been initialized. + + + + + Can be used if has been enabled. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Closes the target. + + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Calls the on each volatile layout + used by this target. + This method won't prerender if all layouts in this target are thread-agnostic. + + + The log event. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Writes the log to the target. + + Log event to write. + + + + Writes the array of log events. + + The log events. + + + + Writes the array of log events. + + The log events. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Closes the target and releases any unmanaged resources. + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Writes async log event to the log target. + + Async Log event to be written out. + + + + Writes a log event to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Log event to be written out. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + NOTE! Obsolete, instead override WriteAsyncThreadSafe(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target, in a thread safe manner. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Writes an array of logging events to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Merges (copies) the event context properties from any event info object stored in + parameters of the given event info object. + + The event info object to perform the merge to. + + + + Renders the event info in layout. + + The layout. + The event info. + String representing log event. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Should the exception be rethrown? + + + Upgrade to private protected when using C# 7.2 + + + + Marks class as a logging target and assigns a name to it. + + This attribute is not required when registering the target in the API. + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets a value indicating whether to the target is a wrapper target (used to generate the target summary documentation page). + + + + + Gets or sets a value indicating whether to the target is a compound target (used to generate the target summary documentation page). + + + + + Attribute details for + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Gets or sets when an empty value should cause the property to be included + + + + + Gets or sets the type of the property. + + + + + Represents target that supports context capture using MDLC, MDC, NDLC and NDC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets or sets a value indicating whether to include contents of the dictionary + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the + + + + + + Gets the array of custom attributes to be passed into the logevent context + + + + + + Constructor + + + + + + + + Check if logevent has properties (or context properties) + + + True if properties should be included + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Dictionary with any context properties for the logEvent (Null if none found) + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Optional prefilled dictionary + Dictionary with any context properties for the logEvent (Null if none found) + + + + Creates combined dictionary of all configured properties for logEvent + + + Dictionary with all collected properties for logEvent + + + + Creates combined dictionary of all configured properties for logEvent + + + Optional prefilled dictionary + Dictionary with all collected properties for logEvent + + + + Generates a new unique name, when duplicate names are detected + + LogEvent that triggered the duplicate name + Duplicate item name + Item Value + Dictionary of context values + New (unique) value (or null to skip value). If the same value is used then the item will be overwritten + + + + Returns the captured snapshot of for the + + + Dictionary with MDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with MDLC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDLC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with GDC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDC key + MDC value + Snapshot of MDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDLC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDLC key + MDLC value + Snapshot of MDLC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDC value + Snapshot of NDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDLC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDLC value + Snapshot of NDLC value + Include object value in snapshot + + + + Take snapshot of a single object value + + Log event + Key Name (null when NDC / NDLC) + Object Value + Snapshot of value + Include object value in snapshot + + + Internal Layout that allows capture of MDC context + + + Internal Layout that allows capture of NDC context + + + Internal Layout that allows capture of MDLC context + + + Internal Layout that allows capture of NDLC context + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the layout used to format log messages. + + + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the text to be rendered. + + + + + + Gets or sets the footer. + + + + + + Gets or sets the header. + + + + + + Gets or sets the layout with header and footer. + + The layout with header and footer. + + + + Sends log messages through System.Diagnostics.Trace. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Always use independent of + + + + + + Forward to (Instead of ) + + + Trace.Fail can have special side-effects, and give fatal exceptions, message dialogs or Environment.FailFast + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Writes the specified logging event to the facility. + + Redirects the log message depending on and . + When is false: + - writes to + - writes to + - writes to + - writes to + - writes to + - writes to + + The logging event. + + + + Web service protocol. + + + + + Use SOAP 1.1 Protocol. + + + + + Use SOAP 1.2 Protocol. + + + + + Use HTTP POST Protocol. + + + + + Use HTTP GET Protocol. + + + + + Do an HTTP POST of a JSON document. + + + + + Do an HTTP POST of an XML document. + + + + + Web Service Proxy Configuration Type + + + + + Default proxy configuration from app.config (System.Net.WebRequest.DefaultWebProxy) + + + Example of how to configure default proxy using app.config + + <system.net> + <defaultProxy enabled = "true" useDefaultCredentials = "true" > + <proxy usesystemdefault = "True" /> + </defaultProxy> + </system.net> + + + + + + Automatic use of proxy with authentication (cached) + + + + + Disables use of proxy (fast) + + + + + Custom proxy address (cached) + + + + + Calls the specified web service on each log message. + + Documentation on NLog Wiki + + The web service must implement a method that accepts a number of string parameters. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

The example web service that works with this example is shown below

+ +
+
+ + + dictionary that maps a concrete implementation + to a specific -value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target + + + + Gets or sets the web service URL. + + + + + + Gets or sets the Web service method name. Only used with Soap. + + + + + + Gets or sets the Web service namespace. Only used with Soap. + + + + + + Gets or sets the protocol to be used when calling web service. + + + + + + Gets or sets the proxy configuration when calling web service + + + + + + Gets or sets the custom proxy address, include port separated by a colon + + + + + + Should we include the BOM (Byte-order-mark) for UTF? Influences the property. + + This will only work for UTF-8. + + + + + + Gets or sets the encoding. + + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Gets or sets the name of the root XML element, + if POST of XML document chosen. + If so, this property must not be null. + (see and ). + + + + + + Gets or sets the (optional) root namespace of the XML document, + if POST of XML document chosen. + (see and ). + + + + + + Gets the array of parameters to be passed. + + + + + + Indicates whether to pre-authenticate the HttpWebRequest (Requires 'Authorization' in parameters) + + + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Invokes the web service method. + + Parameters to be passed. + The logging event. + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Builds the URL to use when calling the web service for a message, depending on the WebServiceProtocol. + + + + + + + Write from input to output. Fix the UTF-8 bom + + + + + + + + + base class for POST formatters, that + implement former PrepareRequest() method, + that creates the content for + the requested kind of HTTP request + + + + + Win32 file attributes. + + + For more information see https://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/createfile.asp. + + + + + Read-only file. + + + + + Hidden file. + + + + + System file. + + + + + File should be archived. + + + + + Device file. + + + + + Normal file. + + + + + File is temporary (should be kept in cache and not + written to disk if possible). + + + + + Sparse file. + + + + + Reparse point. + + + + + Compress file contents. + + + + + File should not be indexed by the content indexing service. + + + + + Encrypted file. + + + + + The system writes through any intermediate cache and goes directly to disk. + + + + + The system opens a file with no system caching. + + + + + Delete file after it is closed. + + + + + A file is accessed according to POSIX rules. + + + + + Asynchronous request queue. + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Gets the number of requests currently in the queue. + + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + Queue was empty before enqueue + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued (-1 means everything). + The array of log events. + + + + Dequeues into a preallocated array, instead of allocating a new one + + Maximum number of items to be dequeued + Preallocated list + + + + Clears the queue. + + + + + Gets or sets the request limit. + + + + + Gets or sets the action to be taken when there's no more room in + the queue and another request is enqueued. + + + + + Notifies about log event that was dropped when set to + + + + + Notifies when queue size is growing over + + + + + Raise event when queued element was dropped because of queue overflow + + Dropped queue item + + + + Raise event when RequestCount overflow + + current requests count + + + + Provides asynchronous, buffered execution of target writes. + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queueing + messages and processing them in a separate thread. You should wrap targets + that spend a non-trivial amount of time in their Write() method with asynchronous + target to speed up logging. +

+

+ Because asynchronous logging is quite a common scenario, NLog supports a + shorthand notation for wrapping all targets with AsyncWrapper. Just add async="true" to + the <targets/> element in the configuration file. +

+ + + ... your targets go here ... + + ]]> +
+ +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of requests in the queue. + The action to be taken when the queue overflows. + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Gets or sets the time in milliseconds to sleep between batches. (1 or less means trigger on new activity) + + + + + + Raise event when Target cannot store LogEvent. + Event arg contains lost LogEvents + + + + + Raises when event queue grow. + Queue can grow when was set to + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the limit of full s to write before yielding into + Performance is better when writing many small batches, than writing a single large batch + + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + + Gets the queue of lazy writer thread requests. + + + + + Schedules a flush of pending events in the queue (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target by starting the lazy writer timer. + + + + + Shuts down the lazy writer timer. + + + + + Starts the lazy writer thread which periodically writes + queued log messages. + + + + + Attempts to start an instant timer-worker-thread which can write + queued log messages. + + Returns true when scheduled a timer-worker-thread + + + + Stops the lazy writer thread. + + + + + Adds the log event to asynchronous queue to be processed by + the lazy writer thread. + + The log event. + + The is called + to ensure that the log event can be processed in another thread. + + + + + Write to queue without locking + + + + + + The action to be taken when the queue overflows. + + + + + Grow the queue. + + + + + Discard the overflowing item. + + + + + Block until there's more room in the queue. + + + + + Causes a flush on a wrapped target if LogEvent satisfies the . + If condition isn't set, flushes on each write. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Gets or sets the condition expression. Log events who meet this condition will cause + a flush on the wrapped target. + + + + + + Delay the flush until the LogEvent has been confirmed as written + + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + The wrapped target. + Name of the target + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes the target. + + + + + Forwards the call to the .Write() + and calls on it if LogEvent satisfies + the flush condition or condition is null. + + Logging event to be written out. + + + + Schedules a flush operation, that triggers when all pending flush operations are completed (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + The action to take when the buffer overflows. + + + + Gets or sets the number of log events to be buffered. + + + + + + Gets or sets the timeout (in milliseconds) after which the contents of buffer will be flushed + if there's no write in the specified period of time. Use -1 to disable timed flushes. + + + + + + Gets or sets a value indicating whether to use sliding timeout. + + + This value determines how the inactivity period is determined. If sliding timeout is enabled, + the inactivity timer is reset after each write, if it is disabled - inactivity timer will + count from the first event written to the buffer. + + + + + + Gets or sets the action to take if the buffer overflows. + + + Setting to will replace the + oldest event with new events without sending events down to the wrapped target, and + setting to will flush the + entire buffer to the wrapped target. + + + + + + Flushes pending events in the buffer (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target. + + + + + Closes the target by flushing pending events in the buffer (if any). + + + + + Adds the specified log event to the buffer and flushes + the buffer in case the buffer gets full. + + The log event. + + + + The action to be taken when the buffer overflows. + + + + + Flush the content of the buffer. + + + + + Discard the oldest item. + + + + + A base class for targets which wrap other (multiple) targets + and provide various forms of target routing. + + + + + Initializes a new instance of the class. + + The targets. + + + + Gets the collection of targets managed by this compound target. + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Writes logging event to the log target. + + Logging event to be written out. + + + + Flush any pending log messages for all wrapped targets. + + The asynchronous continuation. + + + + Concurrent Asynchronous request queue based on + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Gets the number of requests currently in the queue. + + + Only for debugging purposes + + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + Queue was empty before enqueue + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued (-1 means everything). + The array of log events. + + + + Dequeues into a preallocated array, instead of allocating a new one + + Maximum number of items to be dequeued + Preallocated list + + + + Clears the queue. + + + + + Provides fallback-on-error. + + Documentation on NLog Wiki + +

This example causes the messages to be written to server1, + and if it fails, messages go to server2.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Gets or sets a value indicating whether to return to the first target after any successful write. + + + + + + + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + The method remembers the last-known-successful target + and starts the iteration from it. + If is set, the method + resets the target to the first target + stored in . + + + + + Filtering rule for . + + + + + Initializes a new instance of the FilteringRule class. + + + + + Initializes a new instance of the FilteringRule class. + + Condition to be tested against all events. + Filter to apply to all log events when the first condition matches any of them. + + + + Gets or sets the condition to be tested. + + + + + + Gets or sets the resulting filter to be applied when the condition matches. + + + + + + Filters log entries based on a condition. + + Documentation on NLog Wiki + +

This example causes the messages not contains the string '1' to be ignored.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The condition. + + + + Initializes a new instance of the class. + + The wrapped target. + The condition. + + + + Gets or sets the condition expression. Log events who meet this condition will be forwarded + to the wrapped target. + + + + + + Gets or sets the filter. Log events who evaluates to will be discarded + + + + + + + + + Checks the condition against the passed log event. + If the condition is met, the log event is forwarded to + the wrapped target. + + Log event. + + + + + + + Impersonates another user for the duration of the write. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Gets or sets username to change context to. + + + + + + Gets or sets the user account password. + + + + + + Gets or sets Windows domain name to change context to. + + + + + + Gets or sets the Logon Type. + + + + + + Gets or sets the type of the logon provider. + + + + + + Gets or sets the required impersonation level. + + + + + + Gets or sets a value indicating whether to revert to the credentials of the process instead of impersonating another user. + + + + + + Initializes the impersonation context. + + + + + Closes the impersonation context. + + + + + Changes the security context, forwards the call to the .Write() + and switches the context back to original. + + The log event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Changes the security context, forwards the call to the .Write() + and switches the context back to original. + + Log events. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Helper class which reverts the given + to its original value as part of . + + + + + Initializes a new instance of the class. + + The windows impersonation context. + + + + Reverts the impersonation context. + + + + + Limits the number of messages written per timespan to the wrapped target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of messages written per interval. + Interval in which the maximum number of messages can be written. + + + + Gets or sets the maximum allowed number of messages written per . + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets or sets the interval in which messages will be written up to the number of messages. + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets the DateTime when the current will be reset. + + + + + + Gets the number of written in the current . + + + + + + Initializes the target and resets the current Interval and . + + + + + Writes log event to the wrapped target if the current is lower than . + If the is already reached, no log event will be written to the wrapped target. + resets when the current is expired. + + Log event to be written out. + + + + Arguments for events. + + + + + + + + Instance of that was dropped by + + + + + Raises by when + queue is full + and set to + By default queue doubles it size. + + + + + Contains items count and new queue size. + + Required queue size + Current queue size + + + + New queue size + + + + + Current requests count + + + + + Logon provider. + + + + + Use the standard logon provider for the system. + + + The default security provider is negotiate, unless you pass NULL for the domain name and the user name + is not in UPN format. In this case, the default provider is NTLM. + NOTE: Windows 2000/NT: The default security provider is NTLM. + + + + + Filters buffered log entries based on a set of conditions that are evaluated on a group of events. + + Documentation on NLog Wiki + + PostFilteringWrapper must be used with some type of buffering target or wrapper, such as + AsyncTargetWrapper, BufferingWrapper or ASPNetBufferingWrapper. + + +

+ This example works like this. If there are no Warn,Error or Fatal messages in the buffer + only Info messages are written to the file, but if there are any warnings or errors, + the output includes detailed trace (levels >= Debug). You can plug in a different type + of buffering wrapper (such as ASPNetBufferingWrapper) to achieve different + functionality. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Gets or sets the default filter to be applied when no specific rule matches. + + + + + + Gets the collection of filtering rules. The rules are processed top-down + and the first rule that matches determines the filtering condition to + be applied to log events. + + + + + + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Evaluates all filtering rules to find the first one that matches. + The matching rule determines the filtering condition to be applied + to all items in a buffer. If no condition matches, default filter + is applied to the array of log events. + + Array of log events to be post-filtered. + + + + Evaluate all the rules to get the filtering condition + + + + + + + Sends log messages to a randomly selected target. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt + chosen randomly on a per-message basis. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the log event to one of the sub-targets. + The sub-target is randomly chosen. + + The log event. + + + + Repeats each log event the specified number of times. + + Documentation on NLog Wiki + +

This example causes each log message to be repeated 3 times.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The repeat count. + + + + Initializes a new instance of the class. + + The wrapped target. + The repeat count. + + + + Gets or sets the number of times to repeat each log message. + + + + + + Forwards the log message to the by calling the method times. + + The log event. + + + + Retries in case of write error. + + Documentation on NLog Wiki + +

This example causes each write attempt to be repeated 3 times, + sleeping 1 second between attempts if first one fails.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Initializes a new instance of the class. + + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Gets or sets the number of retries that should be attempted on the wrapped target in case of a failure. + + + + + + Gets or sets the time to wait between retries in milliseconds. + + + + + + Special SyncObject to allow closing down Target while busy retrying + + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Writes the specified log event to the wrapped target in a thread-safe manner. + + The log event. + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Distributes log events to targets in a round-robin fashion. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt. + Each odd message is written to file2.txt, each even message goes to file1.txt. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Ensures forwarding happens without holding lock + + + + + + Forwards the write to one of the targets from + the collection. + + The log event. + + The writes are routed in a round-robin fashion. + The first log event goes to the first target, the second + one goes to the second target and so on looping to the + first target when there are no more targets available. + In general request N goes to Targets[N % Targets.Count]. + + + + + Impersonation level. + + + + + Anonymous Level. + + + + + Identification Level. + + + + + Impersonation Level. + + + + + Delegation Level. + + + + + Logon type. + + + + + Interactive Logon. + + + This logon type is intended for users who will be interactively using the computer, such as a user being logged on + by a terminal server, remote shell, or similar process. + This logon type has the additional expense of caching logon information for disconnected operations; + therefore, it is inappropriate for some client/server applications, + such as a mail server. + + + + + Network Logon. + + + This logon type is intended for high performance servers to authenticate plaintext passwords. + The LogonUser function does not cache credentials for this logon type. + + + + + Batch Logon. + + + This logon type is intended for batch servers, where processes may be executing on behalf of a user without + their direct intervention. This type is also for higher performance servers that process many plaintext + authentication attempts at a time, such as mail or Web servers. + The LogonUser function does not cache credentials for this logon type. + + + + + Logon as a Service. + + + Indicates a service-type logon. The account provided must have the service privilege enabled. + + + + + Network Clear Text Logon. + + + This logon type preserves the name and password in the authentication package, which allows the server to make + connections to other network servers while impersonating the client. A server can accept plaintext credentials + from a client, call LogonUser, verify that the user can access the system across the network, and still + communicate with other servers. + NOTE: Windows NT: This value is not supported. + + + + + New Network Credentials. + + + This logon type allows the caller to clone its current token and specify new credentials for outbound connections. + The new logon session has the same local identifier but uses different credentials for other network connections. + NOTE: This logon type is supported only by the LOGON32_PROVIDER_WINNT50 logon provider. + NOTE: Windows NT: This value is not supported. + + + + + Writes log events to all targets. + + Documentation on NLog Wiki + +

This example causes the messages to be written to both file1.txt or file2.txt +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the specified log event to all sub-targets. + + The log event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Base class for targets wrap other (single) targets. + + + + + Gets or sets the target that is wrapped by this target. + + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Builtin IFileCompressor implementation utilizing the .Net4.5 specific + and is used as the default value for on .Net4.5. + So log files created via can be zipped when archived + w/o 3rd party zip library when run on .Net4.5 or higher. + + + + + Implements using the .Net4.5 specific + + + + + Current local time retrieved directly from DateTime.Now. + + + + + Gets current local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Current UTC time retrieved directly from DateTime.UtcNow. + + + + + Gets current UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Fast time source that updates current time only once per tick (15.6 milliseconds). + + + + + Gets raw uncached time from derived time source. + + + + + Gets current time cached for one system tick (15.6 milliseconds). + + + + + Fast local time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Fast UTC time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Defines source of current time. + + + + + Gets current time. + + + + + Gets or sets current global time source used in all log events. + + + Default time source is . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to the same form + as time values originated from this source. + + + + There are situations when NLog have to compare the time originated from TimeSource + to the time originated externally in the system. + To be able to provide meaningful result of such comparisons the system time must be expressed in + the same form as TimeSource time. + + + Examples: + - If the TimeSource provides time values of local time, it should also convert the provided + to the local time. + - If the TimeSource shifts or skews its time values, it should also apply + the same transform to the given . + + + + + + Marks class as a time source and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the time source. + + + diff --git a/packages/NLog.4.7.2/lib/netstandard1.3/NLog.dll b/packages/NLog.4.7.2/lib/netstandard1.3/NLog.dll new file mode 100644 index 0000000000000000000000000000000000000000..eb641b593b76ad5d0cddf59780a187024dcad62d GIT binary patch literal 741888 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Π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 + + + NLog + + + +

+ Indicates that the value of the marked element could be null sometimes, + so the check for null is necessary before its usage. + + + [CanBeNull] object Test() => null; + + void UseTest() { + var p = Test(); + var s = p.ToString(); // Warning: Possible 'System.NullReferenceException' + } + + + + + Indicates that the value of the marked element could never be null. + + + [NotNull] object Foo() { + return null; // Warning: Possible 'null' assignment + } + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can never be null. + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can be null. + + + + + Indicates that the marked method builds string by format pattern and (optional) arguments. + Parameter, which contains format string, should be given in constructor. The format string + should be in -like form. + + + [StringFormatMethod("message")] + void ShowError(string message, params object[] args) { /* do something */ } + + void Foo() { + ShowError("Failed: {0}"); // Warning: Non-existing argument in format string + } + + + + + Specifies which parameter of an annotated method should be treated as format-string + + + + + For a parameter that is expected to be one of the limited set of values. + Specify fields of which type should be used as values for this parameter. + + + + + Indicates that the function argument should be string literal and match one + of the parameters of the caller function. For example, ReSharper annotates + the parameter of . + + + void Foo(string param) { + if (param == null) + throw new ArgumentNullException("par"); // Warning: Cannot resolve symbol + } + + + + + Indicates that the method is contained in a type that implements + System.ComponentModel.INotifyPropertyChanged interface and this method + is used to notify that some property value changed. + + + The method should be non-static and conform to one of the supported signatures: + + NotifyChanged(string) + NotifyChanged(params string[]) + NotifyChanged{T}(Expression{Func{T}}) + NotifyChanged{T,U}(Expression{Func{T,U}}) + SetProperty{T}(ref T, T, string) + + + + public class Foo : INotifyPropertyChanged { + public event PropertyChangedEventHandler PropertyChanged; + + [NotifyPropertyChangedInvocator] + protected virtual void NotifyChanged(string propertyName) { ... } + + string _name; + + public string Name { + get { return _name; } + set { _name = value; NotifyChanged("LastName"); /* Warning */ } + } + } + + Examples of generated notifications: + + NotifyChanged("Property") + NotifyChanged(() => Property) + NotifyChanged((VM x) => x.Property) + SetProperty(ref myField, value, "Property") + + + + + + Describes dependency between method input and output. + + +

Function Definition Table syntax:

+ + FDT ::= FDTRow [;FDTRow]* + FDTRow ::= Input => Output | Output <= Input + Input ::= ParameterName: Value [, Input]* + Output ::= [ParameterName: Value]* {halt|stop|void|nothing|Value} + Value ::= true | false | null | notnull | canbenull + + If method has single input parameter, it's name could be omitted.
+ Using halt (or void/nothing, which is the same) for method output + means that the methods doesn't return normally (throws or terminates the process).
+ Value canbenull is only applicable for output parameters.
+ You can use multiple [ContractAnnotation] for each FDT row, or use single attribute + with rows separated by semicolon. There is no notion of order rows, all rows are checked + for applicability and applied per each program state tracked by R# analysis.
+
+ + + [ContractAnnotation("=> halt")] + public void TerminationMethod() + + + [ContractAnnotation("halt <= condition: false")] + public void Assert(bool condition, string text) // regular assertion method + + + [ContractAnnotation("s:null => true")] + public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty() + + + // A method that returns null if the parameter is null, + // and not null if the parameter is not null + [ContractAnnotation("null => null; notnull => notnull")] + public object Transform(object data) + + + [ContractAnnotation("=> true, result: notnull; => false, result: null")] + public bool TryParse(string s, out Person result) + + +
+ + + Indicates that marked element should be localized or not. + + + [LocalizationRequiredAttribute(true)] + class Foo { + string str = "my string"; // Warning: Localizable string + } + + + + + Indicates that the value of the marked type (or its derivatives) + cannot be compared using '==' or '!=' operators and Equals() + should be used instead. However, using '==' or '!=' for comparison + with null is always permitted. + + + [CannotApplyEqualityOperator] + class NoEquality { } + + class UsesNoEquality { + void Test() { + var ca1 = new NoEquality(); + var ca2 = new NoEquality(); + if (ca1 != null) { // OK + bool condition = ca1 == ca2; // Warning + } + } + } + + + + + When applied to a target attribute, specifies a requirement for any type marked + with the target attribute to implement or inherit specific type or types. + + + [BaseTypeRequired(typeof(IComponent)] // Specify requirement + class ComponentAttribute : Attribute { } + + [Component] // ComponentAttribute requires implementing IComponent interface + class MyComponent : IComponent { } + + + + + Indicates that the marked symbol is used implicitly (e.g. via reflection, in external library), + so this symbol will not be marked as unused (as well as by other usage inspections). + + + + + Should be used on attributes and causes ReSharper to not mark symbols marked with such attributes + as unused (as well as by other usage inspections) + + + + Only entity marked with attribute considered used. + + + Indicates implicit assignment to a member. + + + + Indicates implicit instantiation of a type with fixed constructor signature. + That means any unused constructor parameters won't be reported as such. + + + + Indicates implicit instantiation of a type. + + + + Specify what is considered used implicitly when marked + with or . + + + + Members of entity marked with attribute are considered used. + + + Entity marked with attribute and all its members considered used. + + + + This attribute is intended to mark publicly available API + which should not be removed and so is treated as used. + + + + + Tells code analysis engine if the parameter is completely handled when the invoked method is on stack. + If the parameter is a delegate, indicates that delegate is executed while the method is executed. + If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + + + + + Indicates that a method does not make any observable state changes. + The same as System.Diagnostics.Contracts.PureAttribute. + + + [Pure] int Multiply(int x, int y) => x * y; + + void M() { + Multiply(123, 42); // Waring: Return value of pure method is not used + } + + + + + Indicates that the return value of method invocation must be used. + + + + + Indicates the type member or parameter of some type, that should be used instead of all other ways + to get the value that type. This annotation is useful when you have some "context" value evaluated + and stored somewhere, meaning that all other ways to get this value must be consolidated with existing one. + + + class Foo { + [ProvidesContext] IBarService _barService = ...; + + void ProcessNode(INode node) { + DoSomething(node, node.GetGlobalServices().Bar); + // ^ Warning: use value of '_barService' field + } + } + + + + + Indicates that a parameter is a path to a file or a folder within a web project. + Path can be relative or absolute, starting from web root (~). + + + + + An extension method marked with this attribute is processed by ReSharper code completion + as a 'Source Template'. When extension method is completed over some expression, it's source code + is automatically expanded like a template at call site. + + + Template method body can contain valid source code and/or special comments starting with '$'. + Text inside these comments is added as source code when the template is applied. Template parameters + can be used either as additional method parameters or as identifiers wrapped in two '$' signs. + Use the attribute to specify macros for parameters. + + + In this example, the 'forEach' method is a source template available over all values + of enumerable types, producing ordinary C# 'foreach' statement and placing caret inside block: + + [SourceTemplate] + public static void forEach<T>(this IEnumerable<T> xs) { + foreach (var x in xs) { + //$ $END$ + } + } + + + + + + Allows specifying a macro for a parameter of a source template. + + + You can apply the attribute on the whole method or on any of its additional parameters. The macro expression + is defined in the property. When applied on a method, the target + template parameter is defined in the property. To apply the macro silently + for the parameter, set the property value = -1. + + + Applying the attribute on a source template method: + + [SourceTemplate, Macro(Target = "item", Expression = "suggestVariableName()")] + public static void forEach<T>(this IEnumerable<T> collection) { + foreach (var item in collection) { + //$ $END$ + } + } + + Applying the attribute on a template method parameter: + + [SourceTemplate] + public static void something(this Entity x, [Macro(Expression = "guid()", Editable = -1)] string newguid) { + /*$ var $x$Id = "$newguid$" + x.ToString(); + x.DoSomething($x$Id); */ + } + + + + + + Allows specifying a macro that will be executed for a source template + parameter when the template is expanded. + + + + + Allows specifying which occurrence of the target parameter becomes editable when the template is deployed. + + + If the target parameter is used several times in the template, only one occurrence becomes editable; + other occurrences are changed synchronously. To specify the zero-based index of the editable occurrence, + use values >= 0. To make the parameter non-editable when the template is expanded, use -1. + > + + + + Identifies the target parameter of a source template if the + is applied on a template method. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC action. If applied to a method, the MVC action name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC area. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is + an MVC controller. If applied to a method, the MVC controller name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC Master. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC model type. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is an MVC + partial view. If applied to a method, the MVC partial view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Allows disabling inspections for MVC views within a class or a method. + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC display template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.DisplayExtensions.DisplayForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC editor template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.EditorExtensions.EditorForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC template. + Use this attribute for custom wrappers similar to + System.ComponentModel.DataAnnotations.UIHintAttribute(System.String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component. If applied to a method, the MVC view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Controller.View(Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component name. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component view. If applied to a method, the MVC view component view name is default. + + + + + ASP.NET MVC attribute. When applied to a parameter of an attribute, + indicates that this parameter is an MVC action name. + + + [ActionName("Foo")] + public ActionResult Login(string returnUrl) { + ViewBag.ReturnUrl = Url.Action("Foo"); // OK + return RedirectToAction("Bar"); // Error: Cannot resolve action + } + + + + + Razor attribute. Indicates that a parameter or a method is a Razor section. + Use this attribute for custom wrappers similar to + System.Web.WebPages.WebPageBase.RenderSection(String). + + + + + Indicates how method, constructor invocation or property access + over collection type affects content of the collection. + + + + Method does not use or modify content of the collection. + + + Method only reads content of the collection but does not modify it. + + + Method can change content of the collection but does not add new elements. + + + Method can add new elements to the collection. + + + + Indicates that the marked method is assertion method, i.e. it halts control flow if + one of the conditions is satisfied. To set the condition, mark one of the parameters with + attribute. + + + + + Indicates the condition parameter of the assertion method. The method itself should be + marked by attribute. The mandatory argument of + the attribute is the assertion type. + + + + + Specifies assertion type. If the assertion method argument satisfies the condition, + then the execution continues. Otherwise, execution is assumed to be halted. + + + + Marked parameter should be evaluated to true. + + + Marked parameter should be evaluated to false. + + + Marked parameter should be evaluated to null value. + + + Marked parameter should be evaluated to not null value. + + + + Indicates that the marked method unconditionally terminates control flow execution. + For example, it could unconditionally throw exception. + + + + + Indicates that method is pure LINQ method, with postponed enumeration (like Enumerable.Select, + .Where). This annotation allows inference of [InstantHandle] annotation for parameters + of delegate type by analyzing LINQ method chains. + + + + + Indicates that IEnumerable, passed as parameter, is not enumerated. + + + + + Indicates that parameter is regular expression pattern. + + + + + Prevents the Member Reordering feature from tossing members of the marked class. + + + The attribute must be mentioned in your member reordering patterns + + + + + XAML attribute. Indicates the type that has ItemsSource property and should be treated + as ItemsControl-derived type, to enable inner items DataContext type resolve. + + + + + XAML attribute. Indicates the property of some BindingBase-derived type, that + is used to bind some item of ItemsControl-derived type. This annotation will + enable the DataContext type resolve for XAML bindings for such properties. + + + Property should have the tree ancestor of the ItemsControl type or + marked with the attribute. + + + + + Support implementation of + + + + + + + + + + + + + + + + + Asynchronous continuation delegate - function invoked at the end of asynchronous + processing. + + Exception during asynchronous processing or null if no exception + was thrown. + + + + Helpers for asynchronous operations. + + + + + Iterates over all items in the given collection and runs the specified action + in sequence (each action executes only after the preceding one has completed without an error). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Repeats the specified asynchronous action multiple times and invokes asynchronous continuation at the end. + + The repeat count. + The asynchronous continuation to invoke at the end. + The action to invoke. + + + + Modifies the continuation by pre-pending given action to execute just before it. + + The async continuation. + The action to pre-pend. + Continuation which will execute the given action before forwarding to the actual continuation. + + + + Attaches a timeout to a continuation which will invoke the continuation when the specified + timeout has elapsed. + + The asynchronous continuation. + The timeout. + Wrapped continuation. + + + + Iterates over all items in the given collection and runs the specified action + in parallel (each action executes on a thread from thread pool). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Runs the specified asynchronous action synchronously (blocks until the continuation has + been invoked). + + The action. + + Using this method is not recommended because it will block the calling thread. + + + + + Wraps the continuation with a guard which will only make sure that the continuation function + is invoked only once. + + The asynchronous continuation. + Wrapped asynchronous continuation. + + + + Gets the combined exception from all exceptions in the list. + + The exceptions. + Combined exception or null if no exception was thrown. + + + + Disposes the Timer, and waits for it to leave the Timer-callback-method + + The Timer object to dispose + Timeout to wait (TimeSpan.Zero means dispose without waiting) + Timer disposed within timeout (true/false) + + + + Asynchronous action. + + Continuation to be invoked at the end of action. + + + + Asynchronous action with one argument. + + Type of the argument. + Argument to the action. + Continuation to be invoked at the end of action. + + + + Represents the logging event with asynchronous continuation. + + + + + Initializes a new instance of the struct. + + The log event. + The continuation. + + + + Gets the log event. + + + + + Gets the continuation. + + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + A value of true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + String Conversion Helpers + + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + Output value + Default value + Returns false if the input value could not be parsed + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + The type of the enum + Output value. Null if parse failed + + + + Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. A parameter specifies whether the operation is case-sensitive. The return value indicates whether the conversion succeeded. + + The enumeration type to which to convert value. + The string representation of the enumeration name or underlying value to convert. + true to ignore case; false to consider case. + When this method returns, result contains an object of type TEnum whose value is represented by value if the parse operation succeeds. If the parse operation fails, result contains the default value of the underlying type of TEnum. Note that this value need not be a member of the TEnum enumeration. This parameter is passed uninitialized. + true if the value parameter was converted successfully; otherwise, false. + Wrapper because Enum.TryParse is not present in .net 3.5 + + + + Enum.TryParse implementation for .net 3.5 + + + + Don't uses reflection + + + + Enables to extract extra context details for + + + + + Name of context + + + + + The current LogFactory next to LogManager + + + + + NLog internal logger. + + Writes to file, console or custom text writer (see ) + + + Don't use as that can lead to recursive calls - stackoverflow + + + + + Gets a value indicating whether internal log includes Trace messages. + + + + + Gets a value indicating whether internal log includes Debug messages. + + + + + Gets a value indicating whether internal log includes Info messages. + + + + + Gets a value indicating whether internal log includes Warn messages. + + + + + Gets a value indicating whether internal log includes Error messages. + + + + + Gets a value indicating whether internal log includes Fatal messages. + + + + + Logs the specified message without an at the Trace level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + Log message. + + + + Logs the specified message without an at the Trace level. + will be only called when logging is enabled for level Trace. + + Function that returns the log message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Trace level. + will be only called when logging is enabled for level Trace. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Debug level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Debug level. + + Log message. + + + + Logs the specified message without an at the Debug level. + will be only called when logging is enabled for level Debug. + + Function that returns the log message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Debug level. + will be only called when logging is enabled for level Debug. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Info level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Info level. + + Log message. + + + + Logs the specified message without an at the Info level. + will be only called when logging is enabled for level Info. + + Function that returns the log message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Info level. + will be only called when logging is enabled for level Info. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Warn level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Warn level. + + Log message. + + + + Logs the specified message without an at the Warn level. + will be only called when logging is enabled for level Warn. + + Function that returns the log message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Warn level. + will be only called when logging is enabled for level Warn. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Error level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Error level. + + Log message. + + + + Logs the specified message without an at the Error level. + will be only called when logging is enabled for level Error. + + Function that returns the log message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Error level. + will be only called when logging is enabled for level Error. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Fatal level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Fatal level. + + Log message. + + + + Logs the specified message without an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Function that returns the log message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Exception to be logged. + Function that returns the log message. + + + + Initializes static members of the InternalLogger class. + + + + + Set the config of the InternalLogger with defaults and config. + + + + + Gets or sets the minimal internal log level. + + If set to , then messages of the levels , and will be written. + + + + Gets or sets a value indicating whether internal messages should be written to the console output stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the console error stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the .Trace + + + + + Gets or sets the file path of the internal log file. + + A value of value disables internal logging to a file. + + + + Gets or sets the text writer that will receive internal logs. + + + + + Event written to the internal log. + Please note that the event is not triggered when then event hasn't the minimal log level set by + + + + + Gets or sets a value indicating whether timestamp should be included in internal log output. + + + + + Is there an thrown when writing the message? + + + + + Logs the specified message without an at the specified level. + + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the specified level. + + Log level. + Log message. + + + + Logs the specified message without an at the specified level. + will be only called when logging is enabled for level . + + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + will be only called when logging is enabled for level . + + Exception to be logged. + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Log message. + + + + Write to internallogger. + + optional exception to be logged. + level + message + optional args for + + + + Create log line with timestamp, exception message etc (if configured) + + + + + Determine if logging should be avoided because of exception type. + + The exception to check. + true if logging should be avoided; otherwise, false. + + + + Determine if logging is enabled for given LogLevel + + The for the log event. + true if logging is enabled; otherwise, false. + + + + Determine if logging is enabled. + + true if logging is enabled; otherwise, false. + + + + Write internal messages to the log file defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Logs the assembly version and file version of the given Assembly. + + The assembly to log. + + + + A message has been written to the internal logger + + + + + The rendered message + + + + + The log level + + + + + The exception. Could be null. + + + + + The type that triggered this internal log event, for example the FileTarget. + This property is not always populated. + + + + + The context name that triggered this internal log event, for example the name of the Target. + This property is not always populated. + + + + + + + + A cyclic buffer of object. + + + + + Initializes a new instance of the class. + + Buffer size. + Whether buffer should grow as it becomes full. + The maximum number of items that the buffer can grow to. + + + + Gets the capacity of the buffer + + + + + Gets the number of items in the buffer + + + + + Adds the specified log event to the buffer. + + Log event. + The number of items in the buffer. + + + + Gets the array of events accumulated in the buffer and clears the buffer as one atomic operation. + + Events in the buffer. + + + + Condition and expression. + + + + + Initializes a new instance of the class. + + Left hand side of the AND expression. + Right hand side of the AND expression. + + + + Gets the left hand side of the AND expression. + + + + + Gets the right hand side of the AND expression. + + + + + Returns a string representation of this expression. + + A concatenated '(Left) and (Right)' string. + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the conjunction operator. + + + + Exception during evaluation of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Base class for representing nodes in condition expression trees. + + + + + Converts condition text to a condition expression tree. + + Condition text to be converted. + Condition expression tree. + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition layout expression (represented by a string literal + with embedded ${}). + + + + + Initializes a new instance of the class. + + The layout. + + + + Gets the layout. + + The layout. + + + + Returns a string representation of this expression. + + String literal in single quotes. + + + + Evaluates the expression by calculating the value + of the layout in the specified evaluation context. + + Evaluation context. + The value of the layout. + + + + Condition level expression (represented by the level keyword). + + + + + Returns a string representation of the expression. + + The 'level' string. + + + + Evaluates to the current log level. + + Evaluation context. Ignored. + The object representing current log level. + + + + Condition literal expression (numeric, LogLevel.XXX, true or false). + + + + + Initializes a new instance of the class. + + Literal value. + + + + Gets the literal value. + + The literal value. + + + + Returns a string representation of the expression. + + The literal value. + + + + Evaluates the expression. + + Evaluation context. + The literal value as passed in the constructor. + + + + Condition logger name expression (represented by the logger keyword). + + + + + Returns a string representation of this expression. + + A logger string. + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + Returns a string representation of this expression. + + The 'message' string. + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Initializes a new instance of the class. + + Condition method name. + + + + Condition method invocation expression (represented by method(p1,p2,p3) syntax). + + + + + Initializes a new instance of the class. + + Name of the condition method. + of the condition method. + Precompiled delegate of the condition method. + The method parameters. + + + + Gets the method info. + + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + A bunch of utility methods (mostly predicates) which can be used in + condition expressions. Partially inspired by XPath 1.0. + + + + + Compares two values for equality. + + The first value. + The second value. + true when two objects are equal, false otherwise. + + + + Compares two strings for equality. + + The first string. + The second string. + Optional. If true, case is ignored; if false (default), case is significant. + true when two strings are equal, false otherwise. + + + + Gets or sets a value indicating whether the second string is a substring of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a substring of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a prefix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a suffix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Returns the length of a string. + + A string whose lengths is to be evaluated. + The length of the string. + + + + Indicates whether the specified regular expression finds a match in the specified input string. + + The string to search for a match. + The regular expression pattern to match. + A string consisting of the desired options for the test. The possible values are those of the separated by commas. + true if the regular expression finds a match; otherwise, false. + + + + + + + + + + + Marks the class as containing condition methods. + + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Gets the expression to be negated. + + The expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition or expression. + + + + + Initializes a new instance of the class. + + Left hand side of the OR expression. + Right hand side of the OR expression. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + Exception during parsing of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Condition parser. Turns a string representation of condition expression + into an expression tree. + + + + + Initializes a new instance of the class. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + Instance of used to resolve references to condition methods and layout renderers. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + + Try stringed keyword to + + + + success? + + + + Parse number + + negative number? minus should be parsed first. + + + + + Condition relational (==, !=, <, <=, + > or >=) expression. + + + + + Initializes a new instance of the class. + + The left expression. + The right expression. + The relational operator. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Gets the relational operator. + + The operator. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Compares the specified values using specified relational operator. + + The first value. + The second value. + The relational operator. + Result of the given relational operator. + + + + Promote values to the type needed for the comparision, e.g. parse a string to int. + + + + + + + Promotes to type + + + + success? + + + + Try to promote both values. First try to promote to , + when failed, try to . + + + + + + Get the order for the type for comparision. + + + index, 0 to max int. Lower is first + + + + Dictionary from type to index. Lower index should be tested first. + + + + + Build the dictionary needed for the order of the types. + + + + + + Get the string representing the current + + + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + Hand-written tokenizer for conditions. + + + + + Initializes a new instance of the class. + + The string reader. + + + + Gets the type of the token. + + The type of the token. + + + + Gets the token value. + + The token value. + + + + Gets the value of a string token. + + The string token value. + + + + Asserts current token type and advances to the next token. + + Expected token type. + If token type doesn't match, an exception is thrown. + + + + Asserts that current token is a keyword and returns its value and advances to the next token. + + Keyword value. + + + + Gets or sets a value indicating whether current keyword is equal to the specified value. + + The keyword. + + A value of true if current keyword is equal to the specified value; otherwise, false. + + + + + Gets or sets a value indicating whether the tokenizer has reached the end of the token stream. + + + A value of true if the tokenizer has reached the end of the token stream; otherwise, false. + + + + + Gets or sets a value indicating whether current token is a number. + + + A value of true if current token is a number; otherwise, false. + + + + + Gets or sets a value indicating whether the specified token is of specified type. + + The token type. + + A value of true if current token is of specified type; otherwise, false. + + + + + Gets the next token and sets and properties. + + + + + Try the comparison tokens (greater, smaller, greater-equals, smaller-equals) + + current char + is match + + + + Try the logical tokens (and, or, not, equals) + + current char + is match + + + + Mapping between characters and token types for punctuations. + + + + + Initializes a new instance of the CharToTokenType struct. + + The character. + Type of the token. + + + + Token types for condition expressions. + + + + + Marks the class or a member as advanced. Advanced classes and members are hidden by + default in generated documentation. + + + + + Initializes a new instance of the class. + + + + + Identifies that the output of layout or layout render does not change for the lifetime of the current appdomain. + + + A layout(renderer) could be converted to a literal when: + - The layout and all layout properties are SimpleLayout or [AppDomainFixedOutput] + + Recommendation: Apply this attribute to a layout or layout-renderer which have the result only changes by properties of type Layout. + + + + + Used to mark configurable parameters which are arrays. + Specifies the mapping between XML elements and .NET types. + + + + + Initializes a new instance of the class. + + The type of the array item. + The XML element name that represents the item. + + + + Gets the .NET type of the array item. + + + + + Gets the XML element name. + + + + + An assembly is trying to load. + + + + + New event args + + + + + + The assembly that is trying to load. + + + + + Constructs a new instance the configuration item (target, layout, layout renderer, etc.) given its type. + + Type of the item. + Created object of the specified type. + + + + Provides registration information for named items (targets, layouts, layout renderers, etc.) managed by NLog. + + Everything of an assembly could be loaded by + + + + + Called before the assembly will be loaded. + + + + + Initializes a new instance of the class. + + The assemblies to scan for named items. + + + + Gets or sets default singleton instance of . + + + This property implements lazy instantiation so that the is not built before + the internal logger is configured. + + + + + Gets or sets the creator delegate used to instantiate configuration objects. + + + By overriding this property, one can enable dependency injection or interception for created objects. + + + + + Gets the factory. + + The target factory. + + + + Gets the factory. + + The filter factory. + + + + gets the factory + + not using due to backwards-compatibility. + + + + + Gets the factory. + + The layout renderer factory. + + + + Gets the factory. + + The layout factory. + + + + Gets the ambient property factory. + + The ambient property factory. + + + + Legacy interface, no longer used by the NLog engine + + + + + Gets or sets the JSON serializer to use with or + + + + + Gets or sets the string serializer to use with + + + + + Gets or sets the custom object-type transformation for use in , or + + + + + Gets or sets the parameter converter to use with , or + + + + + Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) + + + - Null (Auto Detect) : NLog-parser checks for positional parameters, and will then fallback to string.Format-rendering. + - True: Always performs the parsing of and rendering of using the NLog-parser (Allows custom formatting with ) + - False: Always performs parsing and rendering using string.Format (Fastest if not using structured logging) + + + + + Gets the time source factory. + + The time source factory. + + + + Gets the condition method factory. + + The condition method factory. + + + + Gets the condition method factory (precompiled) + + The condition method factory. + + + + Registers named items from the assembly. + + The assembly. + + + + Registers named items from the assembly. + + The assembly. + Item name prefix. + + + + Call Preload for NLogPackageLoader + + + Every package could implement a class "NLogPackageLoader" (namespace not important) with the public static method "Preload" (no arguments) + This method will be called just before registering all items in the assembly. + + + + + + Call the Preload method for . The Preload method must be static. + + + + + + Clears the contents of all factories. + + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Builds the default configuration item factory. + + Default factory. + + + + Registers items in NLog.Extended.dll using late-bound types, so that we don't need a reference to NLog.Extended.dll. + + + + + Attribute used to mark the default parameters for layout renderers. + + + + + Initializes a new instance of the class. + + + + + Dynamic filtering with a positive list of enabled levels + + + + + Dynamic filtering with a minlevel and maxlevel range + + + + + Format of the exception output to the specific target. + + + + + Appends the Message of an Exception to the specified target. + + + + + Appends the type of an Exception to the specified target. + + + + + Appends the short type of an Exception to the specified target. + + + + + Appends the result of calling ToString() on an Exception to the specified target. + + + + + Appends the method name from Exception's stack trace to the specified target. + + + + + Appends the stack trace from an Exception to the specified target. + + + + + Appends the contents of an Exception's Data property to the specified target. + + + + + Destructure the exception (usually into JSON) + + + + + Appends the from the application or the object that caused the error. + + + + + Appends the from the application or the object that caused the error. + + + + + Appends any additional properties that specific type of Exception might have. + + + + + Factory for class-based items. + + The base type of each item. + The type of the attribute used to annotate items. + + + + Scans the assembly. + + The types to scan. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the item based on a type name. + + Name of the item. + Name of the type. + + + + Clears the contents of the factory. + + + + + Registers a single type definition. + + The item name. + The type of the item. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Creates an item instance. + + The name of the item. + Created item. + + + + Factory specialized for s. + + + + + Clear all func layouts + + + + + Register a layout renderer with a callback function. + + Name of the layoutrenderer, without ${}. + the renderer that renders the value. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides means to populate factories of named items (such as targets, layouts, layout renderers, etc.). + + + + + Implemented by objects which support installation and uninstallation. + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Interface for accessing configuration details + + + + + Name of the config section + + + + + Configuration Key/Value Pairs + + + + + Child config sections + + + + + Interface for loading NLog + + + + + Finds and loads the NLog configuration + + LogFactory that owns the NLog configuration + Name of NLog.config file (optional) + NLog configuration (or null if none found) + + + + Notifies when LoggingConfiguration has been successfully applied + + LogFactory that owns the NLog configuration + NLog Config + + + + Get file paths (including filename) for the possible NLog config files. + + Name of NLog.config file (optional) + The file paths to the possible config file + + + + Level enabled flags for each LogLevel ordinal + + + + + Converts the filter into a simple + + + + + Represents a factory of named items (such as targets, layouts, layout renderers, etc.). + + Base type for each item instance. + Item definition type (typically or ). + + + + Registers new item definition. + + Name of the item. + Item definition. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Creates item instance. + + Name of the item. + Newly created item instance. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides context for install/uninstall operations. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log output. + + + + Gets or sets the installation log level. + + + + + Gets or sets a value indicating whether to ignore failures during installation. + + + + + Whether installation exceptions should be rethrown. If IgnoreFailures is set to true, + this property has no effect (there are no exceptions to rethrow). + + + + + Gets the installation parameters. + + + + + Gets or sets the log output. + + + + + Logs the specified trace message. + + The message. + The arguments. + + + + Logs the specified debug message. + + The message. + The arguments. + + + + Logs the specified informational message. + + The message. + The arguments. + + + + Logs the specified warning message. + + The message. + The arguments. + + + + Logs the specified error message. + + The message. + The arguments. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Creates the log event which can be used to render layouts during installation/uninstallations. + + Log event info object. + + + + Convert object-value into specified type + + + + + Parses the input value and converts into the wanted type + + Input Value + Wanted Type + Format to use when parsing + Culture to use when parsing + Output value with wanted type + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for extension loading + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for enabling NLog + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + LoggingConfiguration being built + + + + + Interface for fluent setup of LogFactory options for logevent serialization + + + + + LogFactory under configuration + + + + + Encapsulates and the logic to match the actual logger name + All subclasses defines immutable objects. + Concrete subclasses defines various matching rules through + + + + + Creates a concrete based on . + + + Rules used to select the concrete implementation returned: + + if is null => returns (never matches) + if doesn't contains any '*' nor '?' => returns (matches only on case sensitive equals) + if == '*' => returns (always matches) + if doesn't contain '?' + + if contains exactly 2 '*' one at the beginning and one at the end (i.e. "*foobar*) => returns + if contains exactly 1 '*' at the beginning (i.e. "*foobar") => returns + if contains exactly 1 '*' at the end (i.e. "foobar*") => returns + + + returns + + + + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + A concrete + + + + Returns the argument passed to + + + + + Checks whether given name matches the logger name pattern. + + String to be matched. + A value of when the name matches, otherwise. + + + + Defines a that never matches. + Used when pattern is null + + + + + Defines a that always matches. + Used when pattern is '*' + + + + + Defines a that matches with a case-sensitive Equals + Used when pattern is a string without wildcards '?' '*' + + + + + Defines a that matches with a case-sensitive StartsWith + Used when pattern is a string like "*foobar" + + + + + Defines a that matches with a case-sensitive EndsWith + Used when pattern is a string like "foobar*" + + + + + Defines a that matches with a case-sensitive Contains + Used when pattern is a string like "*foobar*" + + + + + Defines a that matches with a complex wildcards combinations: + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + used when pattern is a string containing any number of '?' or '*' in any position + i.e. "*Server[*].Connection[?]" + + + + + Keeps logging configuration and provides simple API to modify it. + + This class is thread-safe..ToList() is used for that purpose. + + + + Variables defined in xml or in API. name is case case insensitive. + + + + + Gets the factory that will be configured + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete on NLog 4.1 and it may be removed in a future release. + + + + Gets the variables defined in the configuration. + + + + + Gets a collection of named targets specified in the configuration. + + + A list of named targets. + + + Unnamed targets (such as those wrapped by other targets) are not returned. + + + + + Gets the collection of file names which should be watched for changes by NLog. + + + + + Gets the collection of logging rules. + + + + + Gets or sets the default culture info to use as . + + + Specific culture info or null to use + + + + + Gets all targets. + + + + + Compare objects based on their name. + + This property is use to cache the comparer object. + + + + Defines methods to support the comparison of objects for equality based on their name. + + + + + Registers the specified target object. The name of the target is read from . + + + The target object with a non + + when is + + + + Registers the specified target object under a given name. + + Name of the target. + The target object. + when is + when is + + + + Finds the target with the specified name. + + + The name of the target to be found. + + + Found target or when the target is not found. + + + + + Finds the target with the specified name and specified type. + + + The name of the target to be found. + + Type of the target + + Found target or when the target is not found of not of type + + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for all loglevels. + + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Finds the logging rule with the specified name. + + The name of the logging rule to be found. + Found logging rule or when not found. + + + + Removes the specified named logging rule. + + The name of the logging rule to be removed. + Found one or more logging rule to remove, or when not found. + + + + Called by LogManager when one of the log configuration files changes. + + + A new instance of that represents the updated configuration. + + + + + Removes the specified named target. + + Name of the target. + + + + Installs target-specific objects on current system. + + The installation context. + + Installation typically runs with administrative permissions. + + + + + Uninstalls target-specific objects from current system. + + The installation context. + + Uninstallation typically runs with administrative permissions. + + + + + Closes all targets and releases any unmanaged resources. + + + + + Log to the internal (NLog) logger the information about the and associated with this instance. + + + The information are only recorded in the internal logger if Debug level is enabled, otherwise nothing is + recorded. + + + + + Validates the configuration. + + + + + Copies all variables from provided dictionary into current configuration variables. + + Master variables dictionary + + + + Replace a simple variable with a value. The original value is removed and thus we cannot redo this in a later stage. + + + + + + + Checks whether unused targets exist. If found any, just write an internal log at Warn level. + If initializing not started or failed, then checking process will be canceled + + + + + + + + Arguments for events. + + + + + Initializes a new instance of the class. + + The new configuration. + The old configuration. + + + + Gets the old configuration. + + The old configuration. + + + + Gets the new configuration. + + The new configuration. + + + + Gets the new configuration + + The new configuration. + + + + Gets the old configuration + + The old configuration. + + + + Gets the optional boolean attribute value. + + + Name of the attribute. + Default value to return if the attribute is not found or if there is a parse error + Boolean attribute value or default. + + + + Remove the namespace (before :) + + + x:a, will be a + + + + + + + Enables loading of NLog configuration from a file + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Loads NLog configuration from + + + + + Constructor + + + + + + Loads NLog configuration from provided config section + + + + + + + Builds list with unique keys, using last value of duplicates. High priority keys placed first. + + + + + + + Parse loglevel, but don't throw if exception throwing is disabled + + Name of attribute for logging. + Value of parse. + Used if there is an exception + + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Parse {Rules} xml element + + + Rules are added to this parameter. + + + + Parse {Logger} xml element + + + + + + Parse boolean + + Name of the property for logging. + value to parse + Default value to return if the parse failed + Boolean attribute value or default. + + + + Represents a logging rule. An equivalent of <logger /> configuration element. + + + + + Create an empty . + + + + + Create an empty . + + + + + Create a new with a and which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a new with a which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a (disabled) . You should call or see cref="EnableLoggingForLevels"/> to enable logging. + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Target to be written to when the rule matches. + + + + Rule identifier to allow rule lookup + + + + + Gets a collection of targets that should be written to when this rule matches. + + + + + Gets a collection of child rules to be evaluated when this rule matches. + + + + + Gets a collection of filters to be checked before writing to targets. + + + + + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + + Gets or sets logger name pattern. + + + Logger name pattern used by to check if a logger name matches this rule. + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + + + + Gets the collection of log levels enabled by this rule. + + + + + Default action if none of the filters match + + + + + Enables logging for a particular level. + + Level to be enabled. + + + + Enables logging for a particular levels between (included) and . + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Disables logging for a particular level. + + Level to be disabled. + + + + Disables logging for particular levels between (included) and . + + Minimum log level to be disables. + Maximum log level to de disabled. + + + + Enables logging the levels between (included) and . All the other levels will be disabled. + + >Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Returns a string representation of . Used for debugging. + + + A that represents the current . + + + + + Checks whether te particular log level is enabled for this rule. + + Level to be checked. + A value of when the log level is enabled, otherwise. + + + + Checks whether given name matches the . + + String to be matched. + A value of when the name matches, otherwise. + + + + Default filtering with static level config + + + + + Factory for locating methods. + + + + + Initializes a new instance of the class. + + Helper method to extract relevant methods from type + + + + Scans the assembly for classes marked with expected class + and methods marked with expected and adds them + to the factory. + + The types to scan. + The prefix to use for names. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Scans a type for relevant methods with their symbolic names + + Include types that are marked with this attribute + Include methods that are marked with this attribute + Class Type to scan + Collection of methods with their symbolic names + + + + Clears contents of the factory. + + + + + Registers the definition of a single method. + + The method name. + The method info. + + + + Registers the definition of a single method. + + The method name. + The method info. + The precompiled method delegate. + + + + Tries to retrieve method by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Tries to retrieve method-delegate by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Retrieves method by name. + + Method name. + MethodInfo object. + + + + Retrieves method by name. + + Method name. + Method delegate object. + + + + Tries to get method definition. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Marks the layout or layout renderer depends on mutable objects from the LogEvent + + This can be or + + + + + Attaches a simple name to an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The name of the item. + + + + Gets the name of the item. + + The name of the item. + + + + Indicates NLog should not scan this property during configuration. + + + + + Initializes a new instance of the class. + + + + + Marks the object as configuration item for NLog. + + + + + Initializes a new instance of the class. + + + + + Represents simple XML element with case-insensitive attribute semantics. + + + + + Initializes a new instance of the class. + + The reader to initialize element from. + + + + Prevents a default instance of the class from being created. + + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + Last error occured during configuration read + + + + + Returns children elements with the specified element name. + + Name of the element. + Children elements with the specified element name. + + + + Asserts that the name of the element is among specified element names. + + The allowed names. + + + + Returns all parsing errors from current and all child elements. + + + + + Special attribute we could ignore + + + + + Default implementation of + + + + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Provides simple programmatic configuration API used for trivial logging cases. + + Warning, these methods will overwrite the current config. + + + + + Configures NLog for to log to the specified target so that all messages + above and including the level are output. + + The target to log all messages to. + + + + Configures NLog for to log to the specified target so that all messages + above and including the specified level are output. + + The target to log all messages to. + The minimal logging level. + + + + Configures NLog for file logging so that all messages above and including + the level are written to the specified file. + + Log file name. + + + + Configures NLog for file logging so that all messages above and including + the specified level are written to the specified file. + + Log file name. + The minimal logging level. + + + + Value indicating how stack trace should be captured when processing the log event. + + + + + Stack trace should not be captured. + + + + + Stack trace should be captured without source-level information. + + + + + Stack trace should be captured including source-level information such as line numbers. + + + + + Capture maximum amount of the stack trace information supported on the platform. + + + + + Marks the layout or layout renderer as thread independent - it producing correct results + regardless of the thread it's running on. + + Without this attribute everything is rendered on the main thread. + + + If this attribute is set on a layout, it could be rendered on the another thread. + This could be more efficient as it's skipped when not needed. + + If context like HttpContext.Current is needed, which is only available on the main thread, this attribute should not be applied. + + See the AsyncTargetWrapper and BufferTargetWrapper with the , using + + Apply this attribute when: + - The result can we rendered in another thread. Delaying this could be more efficient. And/Or, + - The result should not be precalculated, for example the target sends some extra context information. + + + + + Marks the layout or layout renderer as thread safe - it producing correct results + regardless of the number of threads it's running on. + + Without this attribute then the target concurrency will be reduced + + + + + A class for configuring NLog through an XML configuration file + (App.config style or App.nlog style). + + Parsing of the XML file is also implemented in this class. + + + - This class is thread-safe..ToList() is used for that purpose. + - Update TemplateXSD.xml for changes outside targets + + + + + Initializes a new instance of the class. + + Configuration file to be read. + + + + Initializes a new instance of the class. + + Configuration file to be read. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + XML reader to read from. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + The XML contents. + Name of the XML file. + The to which to apply any applicable configuration values. + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + NLog LogFactory + + + + Did the Succeeded? true= success, false= error, null = initialize not started yet. + + + + + Gets or sets a value indicating whether all of the configuration files + should be watched for changes and reloaded automatically when changed. + + + + + Gets the collection of file names which should be watched for changes by NLog. + This is the list of configuration files processed. + If the autoReload attribute is not set it returns empty collection. + + + + + Re-reads the original configuration file and returns the new object. + + The new object. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Create XML reader for (xml config) file. + + filepath + reader or null if filename is empty. + + + + Initializes the configuration. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Checks whether any error during XML configuration parsing has occured. + If there are any and ThrowConfigExceptions or ThrowExceptions + setting is enabled - throws NLogConfigurationException, otherwise + just write an internal log at Warn level. + + Root NLog configuration xml element + + + + Add a file with configuration. Check if not already included. + + + + + + + Parse the root + + + path to config file. + The default value for the autoReload option. + + + + Parse {configuration} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parse {NLog} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Include (multiple) files by filemask, e.g. *.nlog + + base directory in case if is relative + relative or absolute fileMask + + + + + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language + described
here. + + + + + Gets or sets the condition expression. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + An abstract filter class. Provides a way to eliminate log messages + based on properties other than logger name and log level. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the action to be taken when filter matches. + + + + + + Gets the result of evaluating filter against given log event. + + The log event. + Filter result. + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Marks class as a layout renderer and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the filter. + + + + Filter result. + + + + + The filter doesn't want to decide whether to log or discard the message. + + + + + The message should be logged. + + + + + The message should not be logged. + + + + + The message should be logged and processing should be finished. + + + + + The message should not be logged and processing should be finished. + + + + + A base class for filters that are based on comparing a value to a layout. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout to be used to filter log messages. + + The layout. + + + + + Matches when the calculated layout contains the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets the substring to be matched. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets a string to compare the layout to. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches the provided filter-method + + + + + Initializes a new instance of the class. + + + + + + + + Matches when the calculated layout does NOT contain the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets the substring to be matched. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is NOT equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a string to compare the layout to. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the result of the calculated layout has been repeated a moment ago + + + + + How long before a filter expires, and logging is accepted again + + + + + + Max length of filter values, will truncate if above limit + + + + + + Applies the configured action to the initial logevent that starts the timeout period. + Used to configure that it should ignore all events until timeout. + + + + + + Max number of unique filter values to expect simultaneously + + + + + + Default number of unique filter values to expect, will automatically increase if needed + + + + + + Insert FilterCount value into when an event is no longer filtered + + + + + + Append FilterCount to the when an event is no longer filtered + + + + + + Reuse internal buffers, and doesn't have to constantly allocate new buffers + + + + + + Default buffer size for the internal buffers + + + + + + Can be used if has been enabled. + + + + + Initializes a new instance of the class. + + + + + Checks whether log event should be logged or not. In case the LogEvent has just been repeated. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Uses object pooling, and prunes stale filter items when the pool runs dry + + + + + Remove stale filter-value from the cache, and fill them into the pool for reuse + + + + + Renders the Log Event into a filter value, that is used for checking if just repeated + + + + + Repeated LogEvent detected. Checks if it should activate filter-action + + + + + Filter Value State (mutable) + + + + + Filter Lookup Key (immutable) + + + + + A global logging class using caller info to find the logger. + + + + + Starts building a log event with the specified . + + The log level. + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Trace level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Debug level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Info level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Warn level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Error level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Fatal level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + A fluent class to build log events for NLog. + + + + + Initializes a new instance of the class. + + The to send the log event. + + + + Initializes a new instance of the class. + + The to send the log event. + The for the log event. + + + + Gets the created by the builder. + + + + + Sets the information of the logging event. + + The exception information of the logging event. + current for chaining calls. + + + + Sets the level of the logging event. + + The level of the logging event. + current for chaining calls. + + + + Sets the logger name of the logging event. + + The logger name of the logging event. + current for chaining calls. + + + + Sets the log message on the logging event. + + The log message for the logging event. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + The fourth object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + An object that supplies culture-specific formatting information. + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets a per-event context property on the logging event. + + The name of the context property. + The value of the context property. + current for chaining calls. + + + + Sets multiple per-event context properties on the logging event. + + The properties to set. + current for chaining calls. + + + + Sets the timestamp of the logging event. + + The timestamp of the logging event. + current for chaining calls. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + current for chaining calls. + + + + Writes the log event to the underlying logger. + + The method or property name of the caller to the method. This is set at by the compiler. + The full path of the source file that contains the caller. This is set at by the compiler. + The line number in the source file at which the method is called. This is set at by the compiler. + + + + Writes the log event to the underlying logger if the condition delegate is true. + + If condition is true, write log event; otherwise ignore event. + The method or property name of the caller to the method. This is set at by the compiler. + The full path of the source file that contains the caller. This is set at by the compiler. + The line number in the source file at which the method is called. This is set at by the compiler. + + + + Writes the log event to the underlying logger if the condition is true. + + If condition is true, write log event; otherwise ignore event. + The method or property name of the caller to the method. This is set at by the compiler. + The full path of the source file that contains the caller. This is set at by the compiler. + The line number in the source file at which the method is called. This is set at by the compiler. + + + + Extension methods for NLog . + + + + + Starts building a log event with the specified . + + The logger to write the log event to. + The log level. + current for chaining calls. + + + + Starts building a log event at the Trace level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Debug level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Info level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Warn level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Error level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Fatal level. + + The logger to write the log event to. + current for chaining calls. + + + + Global Diagnostics Context + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Global Diagnostics Context - a dictionary structure to hold per-application-instance values. + + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The item value, if defined; otherwise null. + + + + Returns all item names + + A collection of the names of all items in the Global Diagnostics Context. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Include context properties + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Interface for serialization of object values into JSON format + + + + + Serialization of an object into JSON format. + + The object to serialize to JSON. + Output destination. + Serialize succeeded (true/false) + + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format.s + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Logger with only generic methods (passing 'LogLevel' to methods) and core properties. + + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Extensions for NLog . + + + + + Writes the diagnostic message and exception at the specified level. + + A logger implementation that will handle the message. + The log level. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Allocates new builder and appends to the provided target builder on dispose + + + + + Access the new builder allocated + + + + + Helpers for . + + + + + Load from url + + name without .dll + + + + + Forward declare of system delegate type for use by other classes + + + + + Keeps track of pending operation count, and can notify when pending operation count reaches zero + + + + + Mark operation has started + + + + + Mark operation has completed + + Exception coming from the completed operation [optional] + + + + Registers an AsyncContinuation to be called when all pending operations have completed + + Invoked on completion + AsyncContinuation operation + + + + Clear o + + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Legacy attempt to skip async MoveNext, but caused source file line number to be lost + + + + + Gets the entire stack trace. + + + + + Finds first user stack frame in a stack trace + + The stack trace of the logging method invocation + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + Index of the first user stack frame or 0 if all stack frames are non-user + + + + This is only done for legacy reason, as the correct method-name and line-number should be extracted from the MoveNext-StackFrame + + The stack trace of the logging method invocation + Starting point for skipping async MoveNext-frames + + + + Assembly to skip? + + Find assembly via this frame. + true, we should skip. + + + + Is this the type of the logger? + + get type of this logger in this frame. + Type of the logger. + + + + + Memory optimized filtering + + Passing state too avoid delegate capture and memory-allocations. + + + + Provides untyped IDictionary interface on top of generic IDictionary. + + The type of the key. + The type of the value. + + + + Initializes a new instance of the DictionaryAdapter class. + + The implementation. + + + + Gets an object containing the values in the object. + + + + An object containing the values in the object. + + + + + Gets the number of elements contained in the . + + + + The number of elements contained in the . + + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + + + Gets an object that can be used to synchronize access to the . + + + + An object that can be used to synchronize access to the . + + + + + Gets a value indicating whether the object has a fixed size. + + + true if the object has a fixed size; otherwise, false. + + + + + Gets a value indicating whether the object is read-only. + + + true if the object is read-only; otherwise, false. + + + + + Gets an object containing the keys of the object. + + + + An object containing the keys of the object. + + + + + Gets or sets the with the specified key. + + Dictionary key. + Value corresponding to key or null if not found + + + + Adds an element with the provided key and value to the object. + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + + Removes all elements from the object. + + + + + Determines whether the object contains an element with the specified key. + + The key to locate in the object. + + True if the contains an element with the key; otherwise, false. + + + + + Returns an object for the object. + + + An object for the object. + + + + + Removes the element with the specified key from the object. + + The key of the element to remove. + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Wrapper IDictionaryEnumerator. + + + + + Initializes a new instance of the class. + + The wrapped. + + + + Gets both the key and the value of the current dictionary entry. + + + + A containing both the key and the value of the current dictionary entry. + + + + + Gets the key of the current dictionary entry. + + + + The key of the current element of the enumeration. + + + + + Gets the value of the current dictionary entry. + + + + The value of the current element of the enumeration. + + + + + Gets the current element in the collection. + + + + The current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + + True if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Ensures that IDictionary.GetEnumerator returns DictionaryEntry values + + + + + UTF-8 BOM 239, 187, 191 + + + + + Safe way to get environment variables. + + + + + Helper class for dealing with exceptions. + + + + + Mark this exception as logged to the . + + + + + + + Is this exception logged to the ? + + + trueif the has been logged to the . + + + + Determines whether the exception must be rethrown and logs the error to the if is false. + + Advised to log first the error to the before calling this method. + + The exception to check. + Target context of the exception. + trueif the must be rethrown, false otherwise. + + + + Determines whether the exception must be rethrown immediately, without logging the error to the . + + Only used this method in special cases. + + The exception to check. + trueif the must be rethrown, false otherwise. + + + + Object construction helper. + + + + + + + + + + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + Interface for fakeable the current . Not fully implemented, please methods/properties as necessary. + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + Abstract calls for the application environment + + + + + Abstract calls to FileSystem + + + + Determines whether the specified file exists. + The file to check. + + + Returns the content of the specified file + The file to load. + + + + Base class for optimized file appenders. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Gets the path of the file, including file extension. + + The name of the file. + + + + Gets or sets the creation time for a file associated with the appender. The time returned is in Coordinated + Universal Time [UTC] standard. + + The creation time of the file. + + + + Gets or sets the creation time for a file associated with the appender. Synchronized by + The time format is based on + + + + + Gets the last time the file associated with the appender is opened. The time returned is in Coordinated + Universal Time [UTC] standard. + + The time the file was last opened. + + + + Gets the file creation parameters. + + The file creation parameters. + + + + Writes the specified bytes. + + The bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Creates the file stream. + + If set to true sets the file stream to allow shared writing. + If larger than 0 then it will be used instead of the default BufferSize for the FileStream. + A object which can be used to write to the file. + + + + Base class for optimized file appenders which require the usage of a mutex. + + It is possible to use this class as replacement of BaseFileAppender and the mutex functionality + is not enforced to the implementing subclasses. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Implementation of which caches + file information. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Closes this instance of the appender. + + + + + Flushes this current appender. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Writes the specified bytes to a file. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Factory class which creates objects. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Maintains a collection of file appenders usually associated with file targets. + + + + + An "empty" instance of the class with zero size and empty list of appenders. + + + + + Initializes a new "empty" instance of the class with zero size and empty + list of appenders. + + + + + Initializes a new instance of the class. + + + The size of the list should be positive. No validations are performed during initialization as it is an + internal class. + + Total number of appenders allowed in list. + Factory used to create each appender. + Parameters used for creating a file. + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + Interface that provides parameters for create file function. + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + Gets or sets the log file buffer size in bytes. + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + Gets or sets the file attributes (Windows only). + + + + + Should archive mutex be created? + + + + + Should manual simple detection of file deletion be enabled? + + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + Interface implemented by all factories capable of creating file appenders. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + Instance of which can be used to write to the file. + + + + Appender used to discard data for the FileTarget. + Used mostly for testing entire stack except the actual writing to disk. + Throws away all data. + + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Multi-process and multi-host file appender which attempts + to get exclusive write access and retries if it's not available. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Optimized single-process file appender which keeps the file open for exclusive write. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + A layout that represents a filePath. + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Cached invalid file names char array to avoid memory allocation every time Path.GetInvalidFileNameChars() is called. + + + + + not null when == false + + + + + non null is fixed, + + + + + is the cache-key, and when newly rendered filename matches the cache-key, + then it reuses the cleaned cache-value . + + + + + is the cache-value that is reused, when the newly rendered filename + matches the cache-key + + + + Initializes a new instance of the class. + + + + Render the raw filename from Layout + + The log event. + StringBuilder to minimize allocations [optional]. + String representation of a layout. + + + + Convert the raw filename to a correct filename + + The filename generated by Layout. + String representation of a correct filename. + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Convert object to string + + value + format for conversion. + + + If is null and isn't a already, then the will get a locked by + + + + + Format a log message + + + + + Format the message and return + + LogEvent with message to be formatted + formatted message + + + + Has the logevent properties? + + LogEvent with message to be formatted + False when logevent has no properties to be extracted + + + + Appends the logevent message to the provided StringBuilder + + LogEvent with message to be formatted + The to append the formatted message. + + + + Get the Raw, unformatted and unstrinyfied, value + + + + + Get the raw value + + + The value + RawValue supported? + + + + Interface implemented by layouts and layout renderers. + + + + + Renders the the value of layout or layout renderer in the context of the specified log event. + + The log event. + String representation of a layout. + + + + Supports rendering as string value with limited or no allocations (preferred) + + + + + Renders the value of layout renderer in the context of the specified log event + + + null if not possible or unknown + + + + Supports object initialization and termination. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Render the event info as parse as short + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as int + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as bool + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Logger configuration. + + + + + Initializes a new instance of the class. + + The targets by level. + Use the old exception log handling of NLog 3.0? + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete before NLog 4.3.11 and it will be removed in NLog 5. + + + + Gets targets for the specified level. + + The level. + Chain of targets with attached filters. + + + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + New formatter + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + The MessageFormatter delegate + + + + + + + + Most-Recently-Used-Cache, that discards less frequently used items on overflow + + + + + Constructor + + Maximum number of items the cache will hold before discarding. + + + + Attempt to insert item into cache. + + Key of the item to be inserted in the cache. + Value of the item to be inserted in the cache. + true when the key does not already exist in the cache, false otherwise. + + + + Lookup existing item in cache. + + Key of the item to be searched in the cache. + Output value of the item found in the cache. + True when the key is found in the cache, false otherwise. + + + + Network sender which uses HTTP or HTTPS POST. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Creates instances of objects for given URLs. + + + + + Creates a new instance of the network sender based on a network URL. + + URL that determines the network sender to be created. + The maximum queue size. + SSL protocols for TCP + KeepAliveTime for TCP + + A newly created network sender. + + + + + Interface for mocking socket calls. + + + + + A base class for all network senders. Supports one-way sending of messages + over various protocols. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Gets the address of the network endpoint. + + + + + Gets the last send time. + + + + + Initializes this network sender. + + + + + Closes the sender and releases any unmanaged resources. + + The continuation. + + + + Flushes any pending messages and invokes a continuation. + + The continuation. + + + + Send the given text over the specified protocol. + + Bytes to be sent. + Offset in buffer. + Number of bytes to send. + The asynchronous continuation. + + + + Closes the sender and releases any unmanaged resources. + + + + + Performs sender-specific initialization. + + + + + Performs sender-specific close operation. + + The continuation. + + + + Performs sender-specific flush. + + The continuation. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Parses the URI into an endpoint address. + + The URI to parse. + The address family. + Parsed endpoint. + + + + Default implementation of . + + + + + + + + A base class for network senders that can block or send out-of-order + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Performs sender-specific flush. + + The continuation. + + + + Socket proxy for mocking Socket code. + + + + + Initializes a new instance of the class. + + The address family. + Type of the socket. + Type of the protocol. + + + + Gets underlying socket instance. + + + + + Closes the wrapped socket. + + + + + Invokes ConnectAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendToAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Sends messages over a TCP network connection. + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + The address family. + + + + Creates the socket with given parameters. + + The host address. + The address family. + Type of the socket. + Type of the protocol. + Instance of which represents the socket. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Facilitates mocking of class. + + + + + Raises the Completed event. + + + + + Sends messages over the network as UDP datagrams. + + + + + Initializes a new instance of the class. + + URL. Must start with udp://. + The address family. + + + + Creates the socket. + + The address family. + Type of the socket. + Type of the protocol. + Implementation of to use. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Sends the specified text as a UDP datagram. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Scans (breadth-first) the object graph following all the edges whose are + instances have attached and returns + all objects implementing a specified interfaces. + + + + + Finds the objects which have attached which are reachable + from any of the given root objects when traversing the object graph over public properties. + + Type of the objects to return. + Also search the properties of the wanted objects. + The root objects. + Ordered list of objects implementing T. + + + ISet is not there in .net35, so using HashSet + + + + Helper for extracting propertyPath + + + + + Object Path to check + + + + + Try get value from , using , and set into + + + + + + + + Converts object into a List of property-names and -values using reflection + + + + + Scans properties for name (Skips string-compare and value-lookup until finding match) + + + + + Scans properties for name (Skips property value lookup until finding match) + + + + + Scans properties for name + + + + + Combine paths + + basepath, not null + optional dir + optional file + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Trims directory separators from the path + + path, could be null + never null + + + + Detects the platform the NLog is running on. + + + + + Gets the current runtime OS. + + + + + Gets a value indicating whether current OS is Win32-based (desktop or mobile). + + + + + Gets a value indicating whether current OS is Unix-based. + + + + + Gets a value indicating whether current runtime is Mono-based + + + + + Gets a value indicating whether current runtime supports use of mutex + + + + + Will creating a mutex succeed runtime? + "Cached" detection + + + + + Will creating a mutex succeed runtime? + + + + + Dictionary that combines the standard with the + MessageTemplate-properties extracted from the . + + The are returned as the first items + in the collection, and in positional order. + + + + + Value of the property + + + + + Is this a property of the message? + + + + + + + Value of the property + Is this a property of the message? + + + + The properties of the logEvent + + + + + The properties extracted from the message + + + + + Injects the list of message-template-parameter into the IDictionary-interface + + Message-template-parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check if the message-template-parameters can be used directly without allocating a dictionary + + Message-template-parameters + Are all parameter names unique (true / false) + + + + Attempt to insert the message-template-parameters into an empty dictionary + + Message-template-parameters + The initially empty dictionary + Message-template-parameters was inserted into dictionary without trouble (true/false) + + + + Attempt to override the existing dictionary values using the message-template-parameters + + Message-template-parameters + The already filled dictionary + List of unique message-template-parameters + + + + + + + + + + + + + + + + + + + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + + + + + + + + + + + + + + + + + Reflection helpers for accessing properties. + + + + + Set value parsed from string. + + object instance to set with property + name of the property on + The value to be parsed. + + + + + Get property info + + object which could have property + property name on + result when success. + success. + + + + Try parse of string to (Generic) list, comma separated. + + + If there is a comma in the value, then (single) quote the value. For single quotes, use the backslash as escape + + + + + Attempt to reuse the HashSet.Comparer from the original HashSet-object (Ex. StringComparer.OrdinalIgnoreCase) + + + + + Try get the property + + + + + Reflection helpers. + + + + + Gets all usable exported types from the given assembly. + + Assembly to scan. + Usable types from the given assembly. + Types which cannot be loaded are skipped. + + + + Is this a static class? + + + + This is a work around, as Type doesn't have this property. + From: https://stackoverflow.com/questions/1175888/determine-if-a-type-is-static + + + + + Optimized delegate for calling MethodInfo + + Object instance, use null for static methods. + Complete list of parameters that matches the method, including optional/default parameters. + + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Controls a single allocated AsyncLogEventInfo-List for reuse (only one active user) + + + + + Controls a single allocated char[]-buffer for reuse (only one active user) + + + + + Controls a single allocated StringBuilder for reuse (only one active user) + + + + + Controls a single allocated object for reuse (only one active user) + + + + Empty handle when is disabled + + + + Creates handle to the reusable char[]-buffer for active usage + + Handle to the reusable item, that can release it again + + + + Access the acquired reusable object + + + + + Controls a single allocated MemoryStream for reuse (only one active user) + + + + + Supported operating systems. + + + If you add anything here, make sure to add the appropriate detection + code to + + + + + Unknown operating system. + + + + + Unix/Linux operating systems. + + + + + Desktop versions of Windows (95,98,ME). + + + + + Windows NT, 2000, 2003 and future versions based on NT technology. + + + + + Macintosh Mac OSX + + + + + Simple character tokenizer. + + + + + Initializes a new instance of the class. + + The text to be tokenized. + + + + Current position in + + + + + Full text to be parsed + + + + + Check current char while not changing the position. + + + + + + Read the current char and change position + + + + + + Get the substring of the + + + + + + + + Implements a single-call guard around given continuation function. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + + + + Continuation function which implements the single-call guard. + + The exception. + + + + HashSet optimized for single item + + + + + + Insert single item on scope start, and remove on scope exit + + Item to insert in scope + Existing hashset to update + Force allocation of real hashset-container + HashSet EqualityComparer + + + + Add item to collection, if it not already exists + + Item to insert + + + + Clear hashset + + + + + Check if hashset contains item + + + Item exists in hashset (true/false) + + + + Remove item from hashset + + + Item removed from hashset (true/false) + + + + Copy items in hashset to array + + Destination array + Array offset + + + + Create hashset enumerator + + Enumerator + + + + Provides helpers to sort log events and associated continuations. + + + + + Key selector delegate. + + The type of the value. + The type of the key. + Value to extract key information from. + Key selected from log event. + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + The key comparer function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Single-Bucket optimized readonly dictionary. Uses normal internally Dictionary if multiple buckets are needed. + + Avoids allocating a new dictionary, when all items are using the same bucket + + The type of the key. + The type of the value. + + + + + + + + + + + + + + + + Allows direct lookup of existing keys. If trying to access non-existing key exception is thrown. + Consider to use instead for better safety. + + Key value for lookup + Mapped value found + + + + Non-Allocating struct-enumerator + + + + + + + + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + + + + Will always throw, as dictionary is readonly + + + + Utilities for dealing with values. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + + + + Returns the assembly from the provided StackFrame (If not internal assembly) + + Valid assembly, or null if assembly was internal + + + + Returns the classname from the provided StackFrame (If not from internal assembly) + + + Valid class name, or empty string if assembly was internal + + + + Stream helpers + + + + + Copy to output stream and skip BOM if encoding is UTF8 + + + + + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + .net35 doesn't have a .copyto + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + first bytes to skip (optional) + + + + Helpers for , which is used in e.g. layout renderers. + + + + + Renders the specified log event context item and appends it to the specified . + + append to this + value to be appended + format string. If @, then serialize the value with the Default JsonConverter. + provider, for example culture + + + + Appends int without using culture, and most importantly without garbage + + + value to append + + + + Appends uint without using culture, and most importantly without garbage + + Credits Gavin Pugh - https://www.gavpugh.com/2010/04/01/xnac-avoiding-garbage-when-working-with-stringbuilder/ + + + value to append + + + + Convert DateTime into UTC and format to yyyy-MM-ddTHH:mm:ss.fffffffZ - ISO 6801 date (Round-Trip-Time) + + + + + Clears the provider StringBuilder + + + + + + Copies the contents of the StringBuilder to the MemoryStream using the specified encoding (Without BOM/Preamble) + + StringBuilder source + MemoryStream destination + Encoding used for converter string into byte-stream + Helper char-buffer to minimize memory allocations + + + + Copies the contents of the StringBuilder to the destination StringBuilder + + StringBuilder source + StringBuilder destination + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle character to search for + + Index of the first occurrence (Else -1) + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle characters to search for + + Index of the first occurrence (Else -1) + + + + Compares the contents of two StringBuilders + + + Correct implementation of that also works when is not the same + + True when content is the same + + + + Compares the contents of a StringBuilder and a String + + True when content is the same + + + + Append a number and pad with 0 to 2 digits + + append to this + the number + + + + Append a number and pad with 0 to 4 digits + + append to this + the number + + + + Append a int type (byte, int) as string + + + + + Constructor + + Max number of items + Initial StringBuilder Size + Max StringBuilder Size + + + + Takes StringBuilder from pool + + Allow return to pool + + + + Releases StringBuilder back to pool at its right place + + + + + Keeps track of acquired pool item + + + + + Releases pool item back into pool + + + + + Helpers for . + + + + + IsNullOrWhiteSpace, including for .NET 3.5 + + + + + + + Split a string + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Represents target with a chain of filters which determine + whether logging should happen. + + + + + cached result as calculating is expensive. + + + + + Initializes a new instance of the class. + + The target. + The filter chain. + Default action if none of the filters match. + + + + Gets the target. + + The target. + + + + Gets the filter chain. + + The filter chain. + + + + Default action if none of the filters match. + + + + + Gets or sets the next item in the chain. + + The next item in the chain. + This is for example the 'target2' logger in writeTo='target1,target2' + + + + Gets the stack trace usage. + + A value that determines stack trace handling. + + + + Helper for dealing with thread-local storage. + + + + + Allocates the data slot for storing thread-local information. + + Allocated slot key. + + + + Gets the data for a slot in thread-local storage. + + Type of the data. + The slot to get data for. + Automatically create the object if it doesn't exist. + + Slot data (will create T if null). + + + + + Wraps with a timeout. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + The timeout. + + + + Continuation function which implements the timeout logic. + + The exception. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Transformation on a layout. Pre-calculated if the layout has a fixed value. + + + + + Create TransformedLayout. + + Layout + Transformation method + Optional renderer, otherwise is used + + + + + + + Create TransformedLayout. If is null, then the returns null + + Layout + Transformation method + Optional renderer, otherwise is used + null if is null + + + + + + + + + + URL Encoding helper. + + + + Allow UnreservedMarks instead of ReservedMarks, as specified by chosen RFC + + + Use RFC2396 standard (instead of RFC3986) + + + Should use lowercase when doing HEX escaping of special characters + + + Replace space ' ' with '+' instead of '%20' + + + Skip UTF8 encoding, and prefix special characters with '%u' + + + + Escape unicode string data for use in http-requests + + unicode string-data to be encoded + target for the encoded result + s for how to perform the encoding + + + + Convert the wide-char into utf8-bytes, and then escape + + + + + + + + + Is allowed? + + + + + + + + Is a-z / A-Z / 0-9 + + + + + + + Prevents the Xamarin linker from linking the target. + + + By applying this attribute all of the members of the target will be kept as if they had been referenced by the code. + + + + + Ensures that all members of this type are preserved + + + + + Flags the method as a method to preserve during linking if the container class is pulled in. + + + + + Helper class for XML + + + + + removes any unusual unicode characters that can't be encoded into XML + + + + + Pretest, small text and not escape needed + + + + + + + + Converts object value to invariant format, and strips any invalid xml-characters + + Object value + Object value converted to string + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object value converted to string + + + + XML elements must follow these naming rules: + - Element names are case-sensitive + - Element names must start with a letter or underscore + - Element names can contain letters, digits, hyphens, underscores, and periods + - Element names cannot contain spaces + + + + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object TypeCode + Check and remove unusual unicode characters from the result string. + Object value converted to string + + + + Safe version of WriteAttributeString + + + + + + + + + + Safe version of WriteAttributeString + + + + + + + + Safe version of WriteElementSafeString + + + + + + + + + + Safe version of WriteCData + + + + + + + Interface for handling object transformation + + + + + Takes a dangerous (or massive) object and converts into a safe (or reduced) object + + + Null if unknown object, or object cannot be handled + + + + + Provides an interface to execute System.Actions without surfacing any exceptions raised for that action. + + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Logs an exception is logged at Error level if the provided task does not run to completion. + + The task for which to log an error if it does not run to completion. + This method is useful in fire-and-forget situations, where application logic does not depend on completion of task. This method is avoids C# warning CS4014 in such situations. + + + + Returns a task that completes when a specified task to completes. If the task does not run to completion, an exception is logged at Error level. The returned task always runs to completion. + + The task for which to log an error if it does not run to completion. + A task that completes in the state when completes. + + + + Runs async action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Async action to execute. + A task that completes in the state when completes. + + + + Runs the provided async function and returns its result. If the task does not run to completion, an exception is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Async function to run. + A task that represents the completion of the supplied task. If the supplied task ends in the state, the result of the new task will be the result of the supplied task; otherwise, the result of the new task will be the default value of type . + + + + Runs the provided async function and returns its result. If the task does not run to completion, an exception is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Async function to run. + Fallback value to return if the task does not end in the state. + A task that represents the completion of the supplied task. If the supplied task ends in the state, the result of the new task will be the result of the supplied task; otherwise, the result of the new task will be the fallback value. + + + + Render a message template property to a string + + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Log event context data. + + + + + Initializes a new instance of the class. + + + + + Gets or sets string that will be used to separate key/value pairs. + + + + + + Get or set if empty values should be included. + + A value is empty when null or in case of a string, null or empty string. + + + + + + Gets or sets the keys to exclude from the output. If omitted, none are excluded. + + + + + + Also render the caller information attributes? (, + , ). + + See https://msdn.microsoft.com/en-us/library/hh534540.aspx + + + + + + Gets or sets how key/value pairs will be formatted. + + + + + + Renders all log event's properties and appends them to the specified . + + The to append the rendered data to. + Logging event. + + + + The names of caller information attributes. + , , ). + https://msdn.microsoft.com/en-us/library/hh534540.aspx + TODO NLog ver. 5 - Remove these properties + + + + + Designates a property of the class as an ambient property. + + + non-ambient: ${uppercase:${level}} + ambient : ${level:uppercase} + + + + + Initializes a new instance of the class. + + Ambient property name. + + + + Used to render the application domain name. + + + + + Create a new renderer + + + + + Create a new renderer + + + + + Format string. Possible values: "Short", "Long" or custom like {0} {1}. Default "Long" + The first parameter is the , the second the second the + This string is used in + + + + + + + + + + + + + + + Renders the assembly version information for the entry assembly or a named assembly. + + + As this layout renderer uses reflection and version information is unlikely to change during application execution, + it is recommended to use it in conjunction with the . + + + The entry assembly can't be found in some cases e.g. ASP.NET, unit tests, etc. + + + + + Initializes a new instance of the class. + + + + + The (full) name of the assembly. If null, using the entry assembly. + + + + + + Gets or sets the type of assembly version to retrieve. + + + Some version type and platform combinations are not fully supported. + - UWP earlier than .NET Standard 1.5: Value for is always returned unless the parameter is specified. + - Silverlight: Value for is always returned. + + + + + + Gets or sets the custom format of the assembly version output. + + + Supported placeholders are 'major', 'minor', 'build' and 'revision'. + The default .NET template for version numbers is 'major.minor.build.revision'. See + https://docs.microsoft.com/en-gb/dotnet/api/system.version?view=netframework-4.7.2#remarks + for details. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders an assembly version and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Type of assembly version to retrieve. + + + + + Gets the assembly version. + + + + + Gets the file version. + + + + + Gets additional version information. + + + + + The current application domain's base directory. + + + + + Use base dir of current process. Alternative one can just use ${processdir} + + + + + + Fallback to the base dir of current process, when AppDomain.BaseDirectory is Temp-Path (.NET Core 3 - Single File Publish) + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the base directory. + + + + + + Renders the application base directory and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site source file name. Full callsite + + + + + Gets or sets a value indicating whether to include source file path. + + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + + + + + + The call site (class name, method name and source information). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to render the class name. + + + + + + Gets or sets a value indicating whether to render the include the namespace with . + + + + + + Gets or sets a value indicating whether to render the method name. + + + + + + Gets or sets a value indicating whether the method name will be cleaned up if it is detected as an anonymous delegate. + + + + + + Gets or sets a value indicating whether the method and class names will be cleaned up if it is detected as an async continuation + (everything after an await-statement inside of an async method). + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets a value indicating whether to render the source file name and line number. + + + + + + Gets or sets a value indicating whether to include source file path. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site source line number. Full callsite + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + + + + + + A counter value (increases on each layout rendering). + + + + + Gets or sets the initial value of the counter. + + + + + + Gets or sets the value to be added to the counter after each layout rendering. + + + + + + Gets or sets the name of the sequence. Different named sequences can have individual values. + + + + + + + + + The current working directory of the application. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the current directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the current directory. + + + + + + + + + + + + Current date and time. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the date format. Can be any argument accepted by DateTime.ToString(format). + + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + + + + + + + + + + DB null for a database + + + + + + + + + + + The OS dependent directory separator + + + + + + + + + + + The environment variable. + + + + + Gets or sets the name of the environment variable. + + + + + + Gets or sets the default value to be used when the environment variable is not set. + + + + + + + + + + + + Log event context data. + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the name of the item. + + + + + + Renders the specified log event context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Log event context data. See . + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + + + + + + + + + + Exception information provided through + a call to one of the Logger.*Exception() methods. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the format of the output. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + + + Gets or sets the format of the output of inner exceptions. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + Gets or sets the separator used to concatenate parts specified in the Format. + + + + + + Gets or sets the separator used to concatenate exception data specified in the Format. + + + + + + Gets or sets the maximum number of inner exceptions to include in the output. + By default inner exceptions are not enabled for compatibility with NLog 1.0. + + + + + + Gets or sets the separator between inner exceptions. + + + + + + Gets or sets whether to render innermost Exception from + + + + + Gets the formats of the output of inner exceptions to be rendered in target. + + + + + + + Gets the formats of the output to be rendered in target. + + + + + + + + + + + + + Appends the Message of an Exception to the specified . + + The to append the rendered data to. + The exception containing the Message to append. + + + + Appends the method name from Exception's stack trace to the specified . + + The to append the rendered data to. + The Exception whose method name should be appended. + + + + Appends the stack trace from an Exception to the specified . + + The to append the rendered data to. + The Exception whose stack trace should be appended. + + + + Appends the result of calling ToString() on an Exception to the specified . + + The to append the rendered data to. + The Exception whose call to ToString() should be appended. + + + + Appends the type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose type should be appended. + + + + Appends the short type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose short type should be appended. + + + + Appends the application source of an Exception to the specified . + + The to append the rendered data to. + The Exception whose source should be appended. + + + + Appends the HResult of an Exception to the specified . + + The to append the rendered data to. + The Exception whose HResult should be appended. + + + + Appends the contents of an Exception's Data property to the specified . + + The to append the rendered data to. + The Exception whose Data property elements should be appended. + + + + Appends all the serialized properties of an Exception into the specified . + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Appends all the additional properties of an Exception like Data key-value-pairs + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Split the string and then compile into list of Rendering formats. + + + + + Find name of method on stracktrace. + + Full stracktrace + + + + + Renders contents of the specified file. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file. + + + + + + Gets or sets the encoding used in the file. + + The encoding. + + + + + Renders the contents of the specified file and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + Name used in config without ${}. E.g. "test" could be used as "${test}". + + + + + Method that renders the layout. + + + + + Format string for conversion from object to string. + + + + + + + + + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + The information about the garbage collector. + + + + + Gets or sets the property to retrieve. + + + + + + + + + Gets or sets the property of System.GC to retrieve. + + + + + Total memory allocated. + + + + + Total memory allocated (perform full garbage collection first). + + + + + Gets the number of Gen0 collections. + + + + + Gets the number of Gen1 collections. + + + + + Gets the number of Gen2 collections. + + + + + Maximum generation number supported by GC. + + + + + Render a Global Diagnostics Context item. See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + + + + Globally-unique identifier (GUID). + + + + + Gets or sets the GUID format as accepted by Guid.ToString() method. + + + + + + Generate the Guid from the NLog LogEvent (Will be the same for all targets) + + + + + + + + + + + + + + + The host name that the process is running on. + + + + + + + + Gets the host name and falls back to computer name if not available + + + + + Tries the lookup value. + + The lookup function. + Type of the lookup. + + + + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Gets or sets the name of the parameter. + + + + + + Renders the specified installation parameter and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render environmental information related to logging events. + + + + + Gets the logging configuration this target is part of. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Renders the the value of layout renderer in the context of the specified log event. + + The log event. + String representation of a layout renderer. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Renders the value of layout renderer in the context of the specified log event. + + The log event. + The layout render output is appended to builder + + + + Renders the value of layout renderer in the context of the specified log event into . + + The to append the rendered data to. + Logging event. + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Get the for rendering the messages to a + + LogEvent with culture + Culture in on Layout level + + + + + Get the for rendering the messages to a , needed for date and number formats + + LogEvent with culture + Culture in on Layout level + + + is preferred + + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Marks class as a layout renderer and assigns a name to it. + + This attribute is not required when registering the layout in the API. + + + + Initializes a new instance of the class. + + Name of the layout renderer, without the `${ }` + + + + Format of the ${level} layout renderer output. + + + + + Render the LogLevel standard name. + + + + + Render the first character of the level. + + + + + Render the ordinal (aka number) for the level. + + + + + Render the LogLevel full name, expanding Warn / Info abbreviations + + + + + The log level. + + + + + Gets or sets a value indicating the output format of the level. + + + + + + + + + + + + + + + A string literal. + + + This is used to escape '${' sequence + as ;${literal:text=${}' + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The literal text value. + This is used by the layout compiler. + + + + Gets or sets the literal text. + + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes the layout renderer. + + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets a value indicating whether the XML should use spaces for indentation. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDLC item separator. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the XML logging event and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The logger name. + + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + + + + + + + The date and time in a long, sortable format yyyy-MM-dd HH:mm:ss.ffff. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the date in the long format (yyyy-MM-dd HH:mm:ss.ffff) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The machine name that the process is running on. + + + + + + + + + + + Render a Mapped Diagnostic Context item, See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + Render a Mapped Diagnostic Logical Context item (based on CallContext). + See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + The formatted log message. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to log exception along with message. + + + + + + Gets or sets the string that separates message from the exception. + + + + + + Gets or sets whether it should render the raw message without formatting parameters + + + + + + + + + + + + Render a Nested Diagnostic Context item. + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested diagnostics context output. + + + + + + Renders the specified Nested Diagnostics Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render a Nested Diagnostic Logical Context item (Async scope) + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested logical context output. + + + + + + Renders the specified Nested Logical Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Timing Renderer (Async scope) + + + + + Gets or sets whether to only include the duration of the last scope created + + + + + + Gets or sets whether to just display the scope creation time, and not the duration + + + + + + Gets or sets the TimeSpan format. Can be any argument accepted by TimeSpan.ToString(format). + + + + + + Renders the timing details of the Nested Logical Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A newline literal. + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Property of System.Diagnostics.Process to retrieve. + + + + + Base Priority. + + + + + Exit Code. + + + + + Exit Time. + + + + + Process Handle. + + + + + Handle Count. + + + + + Whether process has exited. + + + + + Process ID. + + + + + Machine name. + + + + + Handle of the main window. + + + + + Title of the main window. + + + + + Maximum Working Set. + + + + + Minimum Working Set. + + + + + Non-paged System Memory Size. + + + + + Non-paged System Memory Size (64-bit). + + + + + Paged Memory Size. + + + + + Paged Memory Size (64-bit).. + + + + + Paged System Memory Size. + + + + + Paged System Memory Size (64-bit). + + + + + Peak Paged Memory Size. + + + + + Peak Paged Memory Size (64-bit). + + + + + Peak Virtual Memory Size. + + + + + Peak Virtual Memory Size (64-bit).. + + + + + Peak Working Set Size. + + + + + Peak Working Set Size (64-bit). + + + + + Whether priority boost is enabled. + + + + + Priority Class. + + + + + Private Memory Size. + + + + + Private Memory Size (64-bit). + + + + + Privileged Processor Time. + + + + + Process Name. + + + + + Whether process is responding. + + + + + Session ID. + + + + + Process Start Time. + + + + + Total Processor Time. + + + + + User Processor Time. + + + + + Virtual Memory Size. + + + + + Virtual Memory Size (64-bit). + + + + + Working Set Size. + + + + + Working Set Size (64-bit). + + + + + The process time in format HH:mm:ss.mmm. + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + Write timestamp to builder with format hh:mm:ss:fff + + + + + The sequence ID + + + + + + + + + + + The short date in a sortable format yyyy-MM-dd. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the current short date string (yyyy-MM-dd) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Format of the ${stacktrace} layout renderer output. + + + + + Raw format (multiline - as returned by StackFrame.ToString() method). + + + + + Flat format (class and method names displayed in a single line). + + + + + Detailed flat format (method signatures displayed in a single line). + + + + + Stack trace renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the output format of the stack trace. + + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets the stack frame separator string. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A temporary directory. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The identifier of the current thread. + + + + + + + + The name of the current thread. + + + + + + + + The Ticks value of current date and time. + + + + + + + + + + + The time in a 24-hour, sortable format HH:mm:ss.mmmm. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + Render a NLog variable (xml or config) + + + + + Gets or sets the name of the NLog variable. + + + + + + Gets or sets the default value to be used when the variable is not set. + + Not used if Name is null + + + + + Initializes the layout renderer. + + + + + Try get the + + + + + + + Renders the specified variable and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Applies caching to another layout output. + + + The value of the inner layout will be rendered only once and reused subsequently. + + + + + A value indicating when the cache is cleared. + + + + Never clear the cache. + + + Clear the cache whenever the is initialized. + + + Clear the cache whenever the is closed. + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether this is enabled. + + + + + + Gets or sets a value indicating when the cache is cleared. + + + + + + Cachekey. If the cachekey changes, resets the value. For example, the cachekey would be the current day.s + + + + + + Gets or sets a value indicating how many seconds the value should stay cached until it expires + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + + + + Filters characters not allowed in the file names by replacing them with safe character. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to modify the output of this renderer so it can be used as a part of file path + (illegal characters are replaced with '_'). + + + + + + + + + + + + Escapes output of another layout using JSON rules. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply JSON encoding. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + + + + + + + Left part of a text + + + + + Gets or sets the length in characters. + + + + + + Same as -property, so it can be used as ambient property. + + + ${message:truncate=80} + + + + + + + + + + + + Converts the result of another layout output to lower case. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Render the non-raw value of an object. + + For performance and/or full (formatted) control of the output. + + + + Gets or sets a value indicating whether to disable the IRawValue-interface + + A value of true if IRawValue-interface should be ignored; otherwise, false. + + + + + + + + + + + Render a single property of a object + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + Shortcut for + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + Only outputs the inner layout when exception has been defined for log message. + + + + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + ${onhasproperties:, Properties\: ${all-event-properties}} + + + + + + + + + + + Horizontal alignment for padding layout renderers. + + + + + When layout text is too long, align it to the left + (remove characters from the right). + + + + + When layout text is too long, align it to the right + (remove characters from the left). + + + + + Applies padding to another layout output. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of characters to pad the output to. + + + Positive padding values cause left padding, negative values + cause right padding to the desired width. + + + + + + Gets or sets the padding character. + + + + + + Gets or sets a value indicating whether to trim the + rendered text to the absolute value of the padding length. + + + + + + Gets or sets a value indicating whether a value that has + been truncated (when is true) + will be left-aligned (characters removed from the right) + or right-aligned (characters removed from the left). The + default is left alignment. + + RegistryLayoutRenderer + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Replaces a string in the output of another layout with another string. + + + ${replace:searchFor=\\n+:replaceWith=-:regex=true:inner=${message}} + + + + + Gets or sets the text to search for. + + The text search for. + + + + + Gets or sets a value indicating whether regular expressions should be used. + + A value of true if regular expressions should be used otherwise, false. + + + + + Gets or sets the replacement string. + + The replacement string. + + + + + Gets or sets the group name to replace when using regular expressions. + Leave null or empty to replace without using group name. + + The group name. + + + + + Gets or sets a value indicating whether to ignore case. + + A value of true if case should be ignored when searching; otherwise, false. + + + + + Gets or sets a value indicating whether to search for whole words. + + A value of true if whole words should be searched for; otherwise, false. + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Initializes the layout renderer. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + This class was created instead of simply using a lambda expression so that the "ThreadAgnosticAttributeTest" will pass + + + + + A match evaluator for Regular Expression based replacing + + Input string. + Group name in the regex. + Replace value. + Match from regex. + Groups replaced with . + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating the string that should be used for separating lines. + + + + + + + + + + + + Right part of a text + + + + + Gets or sets the length in characters. + + + + + + + + + + + + Decodes text "encrypted" with ROT-13. + + + See https://en.wikipedia.org/wiki/ROT13. + + + + + Gets or sets the layout to be wrapped. + + The layout to be wrapped. + This variable is for backwards compatibility + + + + + Encodes/Decodes ROT-13-encoded string. + + The string to be encoded/decoded. + Encoded/Decoded text. + + + + + + + + + + Encodes/Decodes ROT-13-encoded string. + + + + + Substring the result + + + ${substring:${level}:start=2:length=2} + ${substring:${level}:start=-2:length=2} + ${substring:Inner=${level}:start=2:length=2} + + + + + Initializes a new instance of the class. + + + + + Gets or sets the start index. + + Index + + + + + Gets or sets the length in characters. If null, then the whole string + + Index + + + + + + + + + + + Calculate start position + + 0 or positive number + + + + Calculate needed length + + 0 or positive number + + + + Trims the whitespace from the result of another layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + + + + + + + Converts the result of another layout output to upper case. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + ${level:uppercase} // [AmbientProperty] + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether upper case conversion should be applied. + + A value of true if upper case conversion should be applied otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Encodes the result of another layout output for use with URLs. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether spaces should be translated to '+' or '%20'. + + A value of true if space should be translated to '+'; otherwise, false. + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + + + Gets or sets the layout to be rendered when original layout produced empty result. + + + + + + + + + + + + + + + Only outputs the inner layout when the specified condition has been met. + + + + + Gets or sets the condition that must be met for the layout to be printed. + + + + + + If is not met, print this layout. + + + + + + + + + + + + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the line length for wrapping. + + + Only positive values are allowed + + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + Base class for s which wrapping other s. + + This has the property (which is default) and can be used to wrap. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + + + + + Gets or sets the wrapped layout. + + [DefaultParameter] so Inner: is not required if it's the first + + + + + + + + + Renders the inner message, processes it and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Appends the rendered output from -layout and transforms the added output (when necessary) + + Logging event. + The to append the rendered data to. + Start position for any necessary transformation of . + + + + Transforms the output of another layout. + + Logging event. + Output to be transform. + Transformed text. + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + Base class for s which wrapping other s. + + This expects the transformation to work on a + + + + + + + + Transforms the output of another layout. + + + Output to be transform. + + + + Transforms the output of another layout. + + Output to be transform. + + + + Renders the inner layout contents. + + + for the result + + + + + + + + + + + + + + + + + + Converts the result of another layout output to be XML-compliant. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply XML encoding. + + Ensures always valid XML, but gives a performance hit + + + + + Gets or sets a value indicating whether to transform newlines (\r\n) into ( ) + + + + + + + + + + + + A layout containing one or more nested layouts. + + + + + Initializes a new instance of the class. + + + + + Gets the inner layouts. + + + + + + Initializes the layout. + + + + + Formats the log event relying on inner layouts. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event relying on inner layouts. + + The logging event. + for the result + + + + Closes the layout. + + + + + Generate description of Compound Layout + + Compound Layout String Description + + + + A column in the CSV. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the column. + The layout of the column. + + + + Gets or sets the name of the column. + + + + + + Gets or sets the layout of the column. + + + + + + Gets or sets the override of Quoting mode + + + and are faster than the default + + + + + + Specifies allowed column delimiters. + + + + + Automatically detect from regional settings. + + + + + Comma (ASCII 44). + + + + + Semicolon (ASCII 59). + + + + + Tab character (ASCII 9). + + + + + Pipe character (ASCII 124). + + + + + Space character (ASCII 32). + + + + + Custom string, specified by the CustomDelimiter. + + + + + A specialized layout that renders CSV-formatted events. + + If is set, then the header generation with column names will be disabled. + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + Gets or sets a value indicating whether CVS should include header. + + A value of true if CVS should include header; otherwise, false. + + + + + Gets or sets the column delimiter. + + + + + + Gets or sets the quoting mode. + + + + + + Gets or sets the quote Character. + + + + + + Gets or sets the custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). + + + + + + Initializes the layout. + + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event for write. + + The logging event. + for the result + + + + Get the headers with the column names. + + + + + + Header with column names for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Generate description of CSV Layout + + CSV Layout String Description + + + + Specifies CSV quoting modes. + + + + + Quote all column (Fast) + + + + + Quote nothing (Very fast) + + + + + Quote only whose values contain the quote symbol or the separator (Slow) + + + + + JSON attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with json-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Json encoded. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A specialized layout that renders JSON-formatted events. + + + + + Initializes a new instance of the class. + + + + + Gets the array of attributes' configurations. + + + + + + Gets or sets the option to suppress the extra spaces in the output json + + + + + + Gets or sets the option to render the empty object value {} + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as JSON) + + + + + + List of property names to exclude when is true + + + + + + How far should the JSON serializer follow object references before backing off + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Formats the log event as a JSON document for writing. + + The logging event. + for the result + + + + Formats the log event as a JSON document for writing. + + The log event to be formatted. + A JSON string representation of the log event. + + + + Generate description of JSON Layout + + JSON Layout String Description + + + + Abstract interface that layouts must implement. + + + + + Is this layout initialized? See + + + + + Gets a value indicating whether this layout is thread-agnostic (can be rendered on any thread). + + + Layout is thread-agnostic if it has been marked with [ThreadAgnostic] attribute and all its children are + like that as well. + + Thread-agnostic layouts only use contents of for its output. + + + + + Gets the level of stack trace information required for rendering. + + + + + Gets the logging configuration this target is part of. + + + + + Converts a given text to a . + + Text to be converted. + object represented by the text. + + + + Implicitly converts the specified string to a . + + The layout string. + Instance of .' + + + + Implicitly converts the specified string to a . + + The layout string. + The NLog factories to use when resolving layout renderers. + Instance of . + + + + Implicitly converts the specified string to a . + + The layout string. + Whether should be thrown on parse errors (false = replace unrecognized tokens with a space). + Instance of . + + + + Create a from a lambda method. + + Method that renders the layout. + Tell if method is safe for concurrent threading. + Instance of . + + + + Precalculates the layout for the specified log event and stores the result + in per-log event cache. + + Only if the layout doesn't have [ThreadAgnostic] and doesn't contain layouts with [ThreadAgnostic]. + + The log event. + + Calling this method enables you to store the log event in a buffer + and/or potentially evaluate it in another thread even though the + layout may contain thread-dependent renderer. + + + + + Renders the event info in layout. + + The event info. + String representing log event. + + + + Optimized version of for internal Layouts. Works best + when override of is available. + + The event info. + Appends the string representing log event to target + Should rendering result be cached on LogEventInfo + + + + Valid default implementation of , when having implemented the optimized + + The logging event. + StringBuilder to help minimize allocations [optional]. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Optimized version of for internal Layouts, when + override of is available. + + + + + Try get value + + + rawValue if return result is true + false if we could not determine the rawValue + + + + Marks class as a layout renderer and assigns a format string to it. + + + + + Initializes a new instance of the class. + + Layout name. + + + + Parses layout strings. + + + + + Add to + + + + + + + Options available for + + + + + Default options + + + + + Layout renderer method can handle concurrent threads + + + + + Layout renderer method is agnostic to current thread context. This means it will render the same result indepdent of thread-context. + + + + + A specialized layout that supports header and footer. + + + + + Gets or sets the body layout (can be repeated multiple times). + + + + + + Gets or sets the header layout. + + + + + + Gets or sets the footer layout. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result. + + + + A specialized layout that renders Log4j-compatible XML events. + + + This layout is not meant to be used explicitly. Instead you can use ${log4jxmlevent} layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets the instance that renders log events. + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Represents a string with embedded placeholders that can render contextual information. + + + This layout is not meant to be used explicitly. Instead you can just use a string containing layout + renderers everywhere the layout is required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout string to parse. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + Whether should be thrown on parse errors. + + + + Original text before compile to Layout renderes + + + + + Gets or sets the layout text. + + + + + + Is the message fixed? (no Layout renderers used) + + + + + Get the fixed text. Only set when is true + + + + + Is the message a simple formatted string? (Can skip StringBuilder) + + + + + Gets a collection of objects that make up this layout. + + + + + Gets the level of stack trace information required for rendering. + + + + + Converts a text to a simple layout. + + Text to be converted. + A object. + + + + Escapes the passed text so that it can + be used literally in all places where + layout is normally expected without being + treated as layout. + + The text to be escaped. + The escaped text. + + Escaping is done by replacing all occurrences of + '${' with '${literal:text=${}' + + + + + Evaluates the specified text by expanding all layout renderers. + + The text to be evaluated. + Log event to be used for evaluation. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Evaluates the specified text by expanding all layout renderers + in new context. + + The text to be evaluated. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Returns a that represents the current object. + + + A that represents the current object. + + + + + + + + + + + + + + + + + + + + XML attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with xml-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A XML Element + + + + + + + + + + + Name of the element + + + + + + Value inside the element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + The name of the top XML node + The value of the top XML node + + + + Name of the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Value inside the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Auto indent and create new lines + + + + + + Gets the array of xml 'elements' configurations. + + + + + + Gets the array of 'attributes' configurations for the element + + + + + + Gets or sets whether a ElementValue with empty value should be included in the output + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as XML) + + + + + + List of property names to exclude when is true + + + + + + XML element name to use when rendering properties + + + Support string-format where {0} means property-key-name + + Skips closing element tag when having configured + + + + + + XML attribute name to use when rendering property-key + + When null (or empty) then key-attribute is not included + + + Will replace newlines in attribute-value with + + + + + + XML attribute name to use when rendering property-value + + When null (or empty) then value-attribute is not included and + value is formatted as XML-element-value + + + Skips closing element tag when using attribute for value + + Will replace newlines in attribute-value with + + + + + + XML element name to use for rendering IList-collections items + + + + + + How far should the XML serializer follow object references before backing off + + + + + + Initializes the layout. + + + + + Formats the log event as a XML document for writing. + + The logging event. + for the result + + + + Formats the log event as a XML document for writing. + + The log event to be formatted. + A XML string representation of the log event. + + + + write attribute, only if is not empty + + + + + rendered + + + + Generate description of XML Layout + + XML Layout String Description + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + + + + + + + Name of the root XML element + + + + + + Value inside the root XML element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Represents the logging event. + + + + + Gets the date of the first log event created. + + + + + The formatted log message. + + + + + The log message including any parameter placeholders + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + Exception information. + + + + Gets the unique identifier of log event which is automatically generated + and monotonously increasing. + + + + + Gets or sets the timestamp of the logging event. + + + + + Gets or sets the level of the logging event. + + + + + Gets a value indicating whether stack trace has been set for this event. + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Gets the entire stack trace. + + + + + Gets the callsite class name + + + + + Gets the callsite member function name + + + + + Gets the callsite source file path + + + + + Gets the callsite source file line number + + + + + Gets or sets the exception information. + + + + + Gets or sets the logger name. + + + + + Gets the logger short name. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the log message including any parameter placeholders. + + + + + Gets or sets the parameter values or null if no parameters have been specified. + + + + + Gets or sets the format provider that was provided while logging or + when no formatProvider was specified. + + + + + Gets or sets the message formatter for generating + Uses string.Format(...) when nothing else has been configured. + + + + + Gets the formatted message. + + + + + Checks if any per-event properties (Without allocation) + + + + + Gets the dictionary of per-event context properties. + + + + + Gets the dictionary of per-event context properties. + Internal helper for the PropertiesDictionary type. + + Create the event-properties dictionary, even if no initial template parameters + Provided when having parsed the message template and capture template parameters (else null) + + + + + Gets the named parameters extracted from parsing as MessageTemplate + + + + + Gets the dictionary of per-event context properties. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + The exception. + Instance of . + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates from this by attaching the specified asynchronous continuation. + + The asynchronous continuation. + Instance of with attached continuation. + + + + Returns a string representation of this log event. + + String representation of the log event. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace (Negative means NLog should skip stackframes from System-assemblies). + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Set the + + true = Always, false = Never, null = Auto Detect + + + + Specialized LogFactory that can return instances of custom logger types. + + Use this only when a custom Logger type is defined. + The type of the logger to be returned. Must inherit from . + + + + Gets the logger with type . + + The logger name. + An instance of . + + + + Gets a custom logger with the full name of the current class (so namespace and class name) and type . + + An instance of . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Overwrite possible file paths (including filename) for possible NLog config files. + When this property is null, the default file paths ( are used. + + + + + Occurs when logging changes. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The config. + + + + Initializes a new instance of the class. + + The config loader + The custom AppEnvironmnet override + + + + Gets the current . + + + + + Gets or sets a value indicating whether exceptions should be thrown. See also . + + A value of true if exception should be thrown; otherwise, false. + By default exceptions are not thrown under any circumstances. + + + + Gets or sets a value indicating whether should be thrown. + + If null then is used. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. After setting this property all + existing loggers will be re-configured, so there is no need to call + manually. + + + + + Gets or sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets the default culture info to use as . + + + Specific culture info or null to use + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting + unmanaged resources. + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Creates a logger that discards all log messages. + + Null logger instance. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets the logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + The logger with type . + Type of the logger + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The type of the logger to create. The type must inherit from + The logger of type . + This is a slow-running method. Make sure you are not calling this method in a + loop. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + Name of the logger. + Type of the logger + The logger reference with type . Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The type of the logger to create. The type must inherit from . + The logger of type . Multiple calls to GetLogger with the + same argument aren't guaranteed to return the same logger reference. + + + + Loops through all loggers previously returned by GetLogger and recalculates their + target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time + will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flushes any pending log messages on all appenders. + + Config containing Targets to Flush + Flush completed notification (success / timeout) + Optional timeout that guarantees that completed notication is called. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Returns if logging is currently enabled. + + A value of if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Raises the event when the configuration is reloaded. + + Event arguments. + + + + Currently this is disposing? + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Logger cache key. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Determines if two objects are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Determines if two objects of the same type are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Logger cache. + + + + + Inserts or updates. + + + + + + + Internal for unit tests + + + + + Enables logging in implementation. + + + + + Initializes a new instance of the class. + + The factory. + + + + Enables logging. + + + + + Logging methods which only are executed when the DEBUG conditional compilation symbol is set. + + Remarks: + The DEBUG conditional compilation symbol is default enabled (only) in a debug build. + + If the DEBUG conditional compilation symbol isn't set in the calling library, the compiler will remove all the invocations to these methods. + This could lead to better performance. + + See: https://msdn.microsoft.com/en-us/library/4xssyw96%28v=vs.90%29.aspx + + + Provides logging interface and utility functions. + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Initializes a new instance of the class. + + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Collection of context properties for the Logger. The logger will append it for all log events + + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Creates new logger that automatically appends the specified property to all log events (without changing current logger) + + Property Name + Property Value + New Logger object that automatically appends specified property + + + + Updates the specified context property for the current logger. The logger will append it for all log events. + + It could be rendered with ${event-properties:YOURNAME} + + With property, all properties could be changed. + + + Will affect all locations/contexts that makes use of the same named logger object. + + Property Name + Property Value + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Logs an exception is logged at Error level if the provided task does not run to completion. + + The task for which to log an error if it does not run to completion. + This method is useful in fire-and-forget situations, where application logic does not depend on completion of task. This method is avoids C# warning CS4014 in such situations. + + + + Returns a task that completes when a specified task to completes. If the task does not run to completion, an exception is logged at Error level. The returned task always runs to completion. + + The task for which to log an error if it does not run to completion. + A task that completes in the state when completes. + + + + Runs async action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Async action to execute. + + + + Runs the provided async function and returns its result. If the task does not run to completion, an exception is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Async function to run. + A task that represents the completion of the supplied task. If the supplied task ends in the state, the result of the new task will be the result of the supplied task; otherwise, the result of the new task will be the default value of type . + + + + Runs the provided async function and returns its result. If the task does not run to completion, an exception is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Async function to run. + Fallback value to return if the task does not end in the state. + A task that represents the completion of the supplied task. If the supplied task ends in the state, the result of the new task will be the result of the supplied task; otherwise, the result of the new task will be the fallback value. + + + + Raises the event when the logger is reconfigured. + + Event arguments + + + + Implementation of logging engine. + + + + + Gets the filter result. + + The filter chain. + The log event. + default result if there are no filters, or none of the filters decides. + The result of the filter. + + + + Defines available log levels. + + + + + Trace log level. + + + + + Debug log level. + + + + + Info log level. + + + + + Warn log level. + + + + + Error log level. + + + + + Fatal log level. + + + + + Off log level. + + + + + Gets all the available log levels (Trace, Debug, Info, Warn, Error, Fatal, Off). + + + + + Gets all the log levels that can be used to log events (Trace, Debug, Info, Warn, Error, Fatal) + i.e LogLevel.Off is excluded. + + + + + Initializes a new instance of . + + The log level name. + The log level ordinal number. + + + + Gets the name of the log level. + + + + + Gets the ordinal of the log level. + + + + + Compares two objects + and returns a value indicating whether + the first one is equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal == level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is not equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal != level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than the second one. + + The first level. + The second level. + The value of level1.Ordinal > level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal >= level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than the second one. + + The first level. + The second level. + The value of level1.Ordinal < level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal <= level2.Ordinal. + + + + Gets the that corresponds to the specified ordinal. + + The ordinal. + The instance. For 0 it returns , 1 gives and so on. + + + + Returns the that corresponds to the supplied . + + The textual representation of the log level. + The enumeration value. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Determines whether the specified instance is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Compares the level to the other object. + + + The object object. + + + A value less than zero when this logger's is + less than the other logger's ordinal, 0 when they are equal and + greater than zero when this ordinal is greater than the + other ordinal. + + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Delegate used to set/get the culture in use. + + This delegate marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the instance used in the . + + Could be used to pass the to other methods + + + + Occurs when logging changes. + + + + + Gets or sets a value indicating whether NLog should throw exceptions. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether should be thrown. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Gets or sets the global log threshold. Log events below this threshold are not logged. + + + + + Gets or sets the default culture to use. + + This property was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Adds the given assembly which will be skipped + when NLog is trying to find the calling method on stack trace. + + The assembly to skip. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The logger class. This class must inherit from . + The logger of type . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates a logger that discards all log messages. + + Null logger which discards all log messages. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + + + + Gets the specified named custom logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The logger class. This class must inherit from . + The logger of type . Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + The generic way for this method is + + + + Loops through all loggers previously returned by GetLogger. + and recalculates their target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Checks if logging is currently enabled. + + if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Dispose all targets, and shutdown logging. + + + + + Generates a formatted message from the log event + + Log event. + Formatted message + + + + Returns a log message. Used to defer calculation of + the log message until it's actually needed. + + Log message. + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + + + + + Gets the thread-local dictionary + + Must be true for any subsequent dictionary modification operation + + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The to use when converting a value to a . + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Returns all item names + + A set of the names of all items in current thread-MDC. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified exists in current thread MDC. + + + + Removes the specified from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Async version of Mapped Diagnostics Context - a logical context structure that keeps a dictionary + of strings and provides methods to output them in layouts. Allows for maintaining state across + asynchronous tasks and call contexts. + + + Ideally, these changes should be incorporated as a new version of the MappedDiagnosticsContext class in the original + NLog library so that state can be maintained for multiple threads in asynchronous situations. + + + + + Simulate ImmutableDictionary behavior (which is not yet part of all .NET frameworks). + In future the real ImmutableDictionary could be used here to minimize memory usage and copying time. + + Must be true for any subsequent dictionary modification operation + Prepare dictionary for additional inserts + + + + + Gets the current logical context named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current logical context named item, as . + + Item name. + The to use when converting a value to a string. + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current logical context named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Updates the current logical context with multiple items in single operation + + . + >An that can be used to remove the item from the current logical context (null if no items). + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Returns all item names + + A collection of the names of all items in current logical context. + + + + Checks whether the specified exists in current logical context. + + Item name. + A boolean indicating whether the specified exists in current logical context. + + + + Removes the specified from current logical context. + + Item name. + + + + Clears the content of current logical context. + + + + + Clears the content of current logical context. + + Free the full slot. + + + + Mapped Diagnostics Context + + This class marked as obsolete before NLog 2.0 and it may be removed in a future release. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified item exists in current thread MDC. + + + + Removes the specified item from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Mark a parameter of a method for message templating + + + + + Specifies which parameter of an annotated method should be treated as message-template-string + + + + + The name of the parameter that should be as treated as message-template-string + + + + + The type of the captured hole + + + + + Not decided + + + + + normal {x} + + + + + Serialize operator {@x} (aka destructure) + + + + + stringification operator {$x} + + + + + A hole that will be replaced with a value + + + + + Constructor + + + + Parameter name sent to structured loggers. + This is everything between "{" and the first of ",:}". + Including surrounding spaces and names that are numbers. + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + Type + + + + When the template is positional, this is the parsed name of this parameter. + For named templates, the value of Index is undefined. + + + Alignment to render the parameter, by default 0. + This is the parsed value between "," and the first of ":}" + + + + A fixed value + + + + Number of characters from the original template to copy at the current position. + This can be 0 when the template starts with a hole or when there are multiple consecutive holes. + + + Number of characters to skip in the original template at the current position. + 0 is a special value that mean: 1 escaped char, no hole. It can also happen last when the template ends with a literal. + + + + Combines Literal and Hole + + + + Literal + + + Hole + Uninitialized when = 0. + + + + Description of a single parameter extracted from a MessageTemplate + + + + + Parameter Name extracted from + This is everything between "{" and the first of ",:}". + + + + + Parameter Value extracted from the -array + + + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + + Parameter method that should be used to render the parameter + See also + + + + + Returns index for , when + + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + Parameter CaptureType + + + + Parameters extracted from parsing as MessageTemplate + + + + + + + + + + + Gets the parameters at the given index + + + + + Number of parameters + + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Indicates whether the template was parsed successful, and there are no unmatched parameters + + + + + Constructor for parsing the message template with parameters + + including any parameter placeholders + All + + + + Constructor for named parameters that already has been parsed + + + + + Create MessageTemplateParameter from + + + + + A message template + + + + The original template string. + This is the key passed to structured targets. + + + The list of literal parts, useful for string rendering. + It indicates the number of characters from the original string to print, + then there's a hole with how many chars to skip. + + "Hello {firstName} {lastName}!" + ------------------------------------- + ║P |S ║P|S ║P|S║ + ║6 |11 ║1|10 ║1|0║ + ║Hello |{firstName}║ |{lastName}║!║ + + "{x} * 2 = {2x}" + -------------------- + ║P|S ║P |S ║ + ║0|3 ║7 |4 ║ + ║{x}║ * 2 = |{2x}║ + + The tricky part is escaped braces. They are represented by a skip = 0, + which is interpreted as "move one char forward, no hole". + + "Escaped }} is fun." + ---------------------- + ║P |S║P |S║ + ║9 |0║8 |0║ + ║Escaped }|}║ is fun.|║ + + + + This list of holes. It's used both to fill the string rendering + and to send values along the template to structured targets. + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Create a template, which is already parsed + + + + + + + + + Create a template, which is already parsed + + + + + + + + This is for testing only: recreates from the parsed data. + + + + This is for testing only: rebuilds the hole + + Add to this string builder + ref for performance + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Gets the current literal/hole in the template + + + + + Clears the enumerator + + + + + Restarts the enumerator of the template + + + + + Moves to the next literal/hole in the template + + Found new element [true/false] + + + + Parse format after hole name/index. Handle the escaped { and } in the format. Don't read the last } + + + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Error when parsing a template. + + + + + Current index when the error occurred. + + + + + The template we were parsing + + + + + New exception + + The message to be shown. + Current index when the error occurred. + + + + + Render templates + + + + + Render a template to a string. + + The template. + Culture. + Parameters for the holes. + Do not fallback to StringBuilder.Format for positional templates. + The String Builder destination. + Parameters for the holes. + + + + Render a template to a string. + + The template. + The String Builder destination. + Culture. + Parameters for the holes. + Rendered template, never null. + + + + Convert Render or serialize a value, with optionally backwards-compatible with + + + + Singleton + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Format an object to a readable string, or if it's an object, serialize + + The value to convert + + + + + + + + Try serializing a scalar (string, int, NULL) or simple type (IFormattable) + + + + + Serialize Dictionary as JSON like structure, without { and } + + + "FirstOrder"=true, "Previous login"=20-12-2017 14:55:32, "number of tries"=1 + + + formatstring of an item + + + + + + + + + Convert a value to a string with format and append to . + + The value to convert. + Format sting for the value. + Format provider for the value. + Append to this + + + + Nested Diagnostics Context + + This class marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top object off the NDC stack. The object is removed from the stack. + + The top object from the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all objects on the NDC stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Nested Diagnostics Context - a thread-local structure that keeps a stack + of strings and provides methods to output them in layouts + + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object at the top of the NDC stack if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified object on current thread NDC. + + The object to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top message from the NDC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top object off the NDC stack. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Peeks the first object on the NDC stack + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. + + Array of objects on the stack. + + + + Resets the stack to the original count during . + + + + + Initializes a new instance of the class. + + The stack. + The previous count. + + + + Reverts the stack to original item count. + + + + + Async version of - a logical context structure that keeps a stack + Allows for maintaining scope across asynchronous tasks and call contexts. + + + + + Pushes the specified value on current stack + + The value to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified value on current stack + + The value to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDLC stack. + + The top message which is no longer on the stack. + this methods returns a object instead of string, this because of backwards-compatibility + + + + Pops the top message from the NDLC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top message off the current NDLC stack + + The object from the top of the NDLC stack, if defined; otherwise null. + + + + Peeks the top object on the current NDLC stack + + The object from the top of the NDLC stack, if defined; otherwise null. + + + + Peeks the current scope, and returns its start time + + Scope Creation Time + + + + Peeks the first scope, and returns its start time + + Scope Creation Time + + + + Clears current stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Exception thrown during NLog configuration. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The inner exception. + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Exception thrown during log event processing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + It works as a normal but it discards all messages which an application requests + to be logged. + + It effectively implements the "Null Object" pattern for objects. + + + + + Initializes a new instance of . + + The factory class to be used for the creation of this logger. + + + + Extension methods to setup LogFactory options + + + + + Gets the logger with the full name of the current class, so namespace and class name. + + + + + Gets the specified named logger. + + + + + Configures loading of NLog extensions for Targets and LayoutRenderers + + + + + Configures the output of NLog for diagnostics / troubleshooting + + + + + Configures serialization and transformation of LogEvents + + + + + Loads NLog config created by the method + + + + + Loads NLog config provided in + + + + + Loads NLog config from filename if provided, else fallback to scanning for NLog.config + + + + + Loads NLog config from XML in + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Enable/disables autoloading of NLog extensions by scanning and loading available assemblies + + + Enabled by default, and gives a huge performance hit during startup. Recommended to disable this when running in the cloud. + + + + + Registers NLog extensions from the assembly. + + + + + Registers NLog extensions from the assembly type name + + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + MethodInfo extracted by reflection - typeof(MyClass).GetMethod("MyFunc", BindingFlags.Static). + + + + Extension methods to setup NLog options + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Overrides the active with a new custom implementation + + + + + Overrides the active with a new custom implementation + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Specifies the way archive numbering is performed. + + + + + Sequence style numbering. The most recent archive has the highest number. + + + + + Rolling style numbering (the most recent is always #0 then #1, ..., #N. + + + + + Date style numbering. Archives will be stamped with the prior period + (Year, Month, Day, Hour, Minute) datetime. + + + + + Date and sequence style numbering. + Archives will be stamped with the prior period (Year, Month, Day) datetime. + The most recent archive has the highest number (in combination with the date). + + + + + Abstract Target with async Task support + + + + + How many milliseconds to delay the actual write operation to optimize for batching + + + + + How many seconds a Task is allowed to run before it is cancelled. + + + + + How many attempts to retry the same Task, before it is aborted + + + + + How many milliseconds to wait before next retry (will double with each retry) + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Task Scheduler used for processing async Tasks + + + + + Constructor + + + + + Initializes the internal queue for pending logevents + + + + + Override this to create the actual logging task + + Example of how to override this method, and call custom async method + + protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) + { + return CustomWriteAsync(logEvent, token); + } + + private async Task CustomWriteAsync(LogEventInfo logEvent, CancellationToken token) + { + await MyLogMethodAsync(logEvent, token).ConfigureAwait(false); + } + + + The log event. + The cancellation token + + + + + Override this to create the actual logging task for handling batch of logevents + + A batch of logevents. + The cancellation token + + + + + Handle cleanup after failed write operation + + Exception from previous failed Task + The cancellation token + Number of retries remaining + Time to sleep before retrying + Should attempt retry + + + + Schedules the LogEventInfo for async writing + + The log event. + + + + Write to queue without locking + + + + + + Schedules notification of when all messages has been written + + + + + + Closes Target by updating CancellationToken + + + + + Releases any managed resources + + + + + + Checks the internal queue for the next to create a new task for + + Used for race-condition validation between task-completion and timeout + Signals whether previousTask completed an almost full BatchSize + + + + Generates recursive task-chain to perform retry of writing logevents with increasing retry-delay + + + + + Creates new task to handle the writing of the input + + LogEvents to write + New Task created [true / false] + + + + Handles that scheduled task has completed (successfully or failed), and starts the next pending task + + Task just completed + AsyncContinuation to notify of success or failure + + + + Timer method, that is fired when pending task fails to complete within timeout + + + + + + Sends log messages to the remote instance of Chainsaw application from log4j. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a name. + + Name of the target. + + + + Colored console output color. + + + Note that this enumeration is defined to be binary compatible with + .NET 2.0 System.ConsoleColor + some additions + + + + + Black Color (#000000). + + + + + Dark blue Color (#000080). + + + + + Dark green Color (#008000). + + + + + Dark Cyan Color (#008080). + + + + + Dark Red Color (#800000). + + + + + Dark Magenta Color (#800080). + + + + + Dark Yellow Color (#808000). + + + + + Gray Color (#C0C0C0). + + + + + Dark Gray Color (#808080). + + + + + Blue Color (#0000FF). + + + + + Green Color (#00FF00). + + + + + Cyan Color (#00FFFF). + + + + + Red Color (#FF0000). + + + + + Magenta Color (#FF00FF). + + + + + Yellow Color (#FFFF00). + + + + + White Color (#FFFFFF). + + + + + Don't change the color. + + + + + The row-highlighting condition. + + + + + Initializes static members of the ConsoleRowHighlightingRule class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The condition. + Color of the foreground. + Color of the background. + + + + Gets the default highlighting rule. Doesn't change the color. + + + + + Gets or sets the condition that must be met in order to set the specified foreground and background color. + + + + + + Gets or sets the foreground color. + + + + + + Gets or sets the background color. + + + + + + Checks whether the specified log event matches the condition (if any). + + + Log event. + + + A value of if the condition is not defined or + if it matches, otherwise. + + + + + Information about database command + parameters. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the type of the command. + + The type of the command. + + + + + Gets or sets the connection string to run the command against. If not provided, connection string from the target is used. + + + + + + Gets or sets the command text. + + + + + + Gets or sets a value indicating whether to ignore failures. + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a database named or positional parameter. + + + + + + Information about object-property for the database-connection-object + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name for the object-property + + + + + + Gets or sets the value to assign on the object-property + + + + + + Gets or sets the type of the object-property + + + + + + Gets or sets convert format of the property value + + + + + + Gets or sets the culture used for parsing property string-value for type-conversion + + + + + + Represents a parameter to a Database target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the parameter. + The parameter layout. + + + + Gets or sets the database parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets the database parameter DbType. + + + + + + Gets or sets the database parameter size. + + + + + + Gets or sets the database parameter precision. + + + + + + Gets or sets the database parameter scale. + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets convert format of the database parameter value. + + + + + + Gets or sets the culture used for parsing parameter string-value for type-conversion + + + + + + Writes log messages to the database using an ADO.NET provider. + + + - NETSTANDARD cannot load connectionstrings from .config + + Documentation on NLog Wiki + + + The configuration is dependent on the database type, because + there are different methods of specifying connection string, SQL + command and command parameters. + + MS SQL Server using System.Data.SqlClient: + + Oracle using System.Data.OracleClient: + + Oracle using System.Data.OleDBClient: + + To set up the log target programmatically use code like this (an equivalent of MSSQL configuration): + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets the name of the database provider. + + + + The parameter name should be a provider invariant name as registered in machine.config or app.config. Common values are: + +
    +
  • System.Data.SqlClient - SQL Sever Client
  • +
  • System.Data.SqlServerCe.3.5 - SQL Sever Compact 3.5
  • +
  • System.Data.OracleClient - Oracle Client from Microsoft (deprecated in .NET Framework 4)
  • +
  • Oracle.DataAccess.Client - ODP.NET provider from Oracle
  • +
  • System.Data.SQLite - System.Data.SQLite driver for SQLite
  • +
  • Npgsql - Npgsql driver for PostgreSQL
  • +
  • MySql.Data.MySqlClient - MySQL Connector/Net
  • +
+ (Note that provider invariant names are not supported on .NET Compact Framework). + + Alternatively the parameter value can be be a fully qualified name of the provider + connection type (class implementing ) or one of the following tokens: + +
    +
  • sqlserver, mssql, microsoft or msde - SQL Server Data Provider
  • +
  • oledb - OLEDB Data Provider
  • +
  • odbc - ODBC Data Provider
  • +
+
+ +
+ + + Gets or sets the connection string. When provided, it overrides the values + specified in DBHost, DBUserName, DBPassword, DBDatabase. + + + + + + Gets or sets the connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used. + + + + + + Gets the installation DDL commands. + + + + + + Gets the uninstallation DDL commands. + + + + + + Gets or sets a value indicating whether to keep the + database connection open between the log events. + + + + + + Obsolete - value will be ignored! The logging code always runs outside of transaction. + + Gets or sets a value indicating whether to use database transactions. + Some data providers require this. + + + + This option was removed in NLog 4.0 because the logging code always runs outside of transaction. + This ensures that the log gets written to the database if you rollback the main transaction because of an error and want to log the error. + + + + + Gets or sets the database host name. If the ConnectionString is not provided + this value will be used to construct the "Server=" part of the + connection string. + + + + + + Gets or sets the database user name. If the ConnectionString is not provided + this value will be used to construct the "User ID=" part of the + connection string. + + + + + + Gets or sets the database password. If the ConnectionString is not provided + this value will be used to construct the "Password=" part of the + connection string. + + + + + + Gets or sets the database name. If the ConnectionString is not provided + this value will be used to construct the "Database=" part of the + connection string. + + + + + + Gets or sets the text of the SQL command to be run on each log level. + + + Typically this is a SQL INSERT statement or a stored procedure call. + It should use the database-specific parameters (marked as @parameter + for SQL server or :parameter for Oracle, other data providers + have their own notation) and not the layout renderers, + because the latter is prone to SQL injection attacks. + The layout renderers should be specified as <parameter /> elements instead. + + + + + + Gets or sets the type of the SQL command to be run on each log level. + + + This specifies how the command text is interpreted, as "Text" (default) or as "StoredProcedure". + When using the value StoredProcedure, the commandText-property would + normally be the name of the stored procedure. TableDirect method is not supported in this context. + + + + + + Gets the collection of parameters. Each item contains a mapping + between NLog layout and a database named or positional parameter. + + + + + + Gets the collection of properties. Each item contains a mapping + between NLog layout and a property on the DbConnection instance + + + + + + Gets the collection of properties. Each item contains a mapping + between NLog layout and a property on the DbCommand instance + + + + + + Configures isolated transaction batch writing. If supported by the database, then it will improve insert performance. + + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Set the to use it for opening connections to the database. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the database. It creates + a new database command, prepares parameters for it by calculating + layouts and executes the command. + + The logging event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Write logEvent to database + + + + + Build the connectionstring from the properties. + + + Using at first, and falls back to the properties , + , and + + Event to render the layout inside the properties. + + + + + Escape quotes and semicolons. + See https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms722656(v=vs.85)#setting-values-that-use-reserved-characters + + + + + Create database parameter + + Current command. + Parameter configuration info. + + + + Extract parameter value from the logevent + + Current logevent. + Parameter configuration info. + + + + Create Default Value of Type + + + + + + + Fake transaction + + Transactions aren't in .NET Core: https://github.com/dotnet/corefx/issues/2949 + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Fake option + + + + + A descriptor for an archive created with the DateAndSequence numbering mode. + + + + + The full name of the archive file. + + + + + The parsed date contained in the file name. + + + + + The parsed sequence number contained in the file name. + + + + + Determines whether produces the same string as the current instance's date once formatted with the current instance's date format. + + The date to compare the current object's date to. + True if the formatted dates are equal, otherwise False. + + + + Initializes a new instance of the class. + + + + + Mock target - useful for testing. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + Increases the number of messages. + + The logging event. + + + + Default class for serialization of values to JSON format. + + + + + Singleton instance of the serializer. + + + + + Private. Use + + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + Serialized value. + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + serialisation options + Serialized value. + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + The objects in path (Avoid cyclic reference loop). + The current depth (level) of recursion. + Object serialized successfully (true/false). + + + + No quotes needed for this type? + + + + + Checks the object if it is numeric + + TypeCode for the object + Accept fractional types as numeric type. + + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + all options + JSON escaped string + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + Should non-ascii characters be encoded + + JSON escaped string + + + + Check if cleanup should be performed on initialize new file + + Skip cleanup when initializing new file, just after having performed archive operation + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Characters determining the start of the . + + + + + Characters determining the end of the . + + + + + File name which is used as template for matching and replacements. + It is expected to contain a pattern to match. + + + + + The begging position of the + within the . -1 is returned + when no pattern can be found. + + + + + The ending position of the + within the . -1 is returned + when no pattern can be found. + + + + + Replace the pattern with the specified String. + + + + + + + Archives the log-files using a date style numbering. Archives will be stamped with the + prior period (Year, Month, Day, Hour, Minute) datetime. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Archives the log-files using a date and sequence style numbering. Archives will be stamped + with the prior period (Year, Month, Day) datetime. The most recent archive has the highest number (in + combination with the date). + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Parse filename with date and sequence pattern + + + dateformat for archive + + the found pattern. When failed, then default + the found pattern. When failed, then default + + + + + Archives the log-files using the provided base-archive-filename. If the base-archive-filename causes + duplicate archive filenames, then sequence-style is automatically enforced. + + Example: + Base Filename trace.log + Next Filename trace.0.log + + The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Dynamically converts a non-template archiveFilePath into a correct archiveFilePattern. + Before called the original IFileArchiveMode, that has been wrapped by this + + + + + Determines if the file name as contains a numeric pattern i.e. {#} in it. + + Example: + trace{#}.log Contains the numeric pattern. + trace{###}.log Contains the numeric pattern. + trace{#X#}.log Contains the numeric pattern (See remarks). + trace.log Does not contain the pattern. + + Occasionally, this method can identify the existence of the {#} pattern incorrectly. + File name to be checked. + when the pattern is found; otherwise. + + + + Archives the log-files using a rolling style numbering (the most recent is always #0 then + #1, ..., #N. + + When the number of archive files exceed the obsolete archives + are deleted. + + + + + Replaces the numeric pattern i.e. {#} in a file name with the parameter value. + + File name which contains the numeric pattern. + Value which will replace the numeric pattern. + File name with the value of in the position of the numeric pattern. + + + + Archives the log-files using a sequence style numbering. The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Modes of archiving files based on time. + + + + + Don't archive based on time. + + + + + AddToArchive every year. + + + + + AddToArchive every month. + + + + + AddToArchive daily. + + + + + AddToArchive every hour. + + + + + AddToArchive every minute. + + + + + AddToArchive every Sunday. + + + + + AddToArchive every Monday. + + + + + AddToArchive every Tuesday. + + + + + AddToArchive every Wednesday. + + + + + AddToArchive every Thursday. + + + + + AddToArchive every Friday. + + + + + AddToArchive every Saturday. + + + + + Type of filepath + + + + + Detect of relative or absolute + + + + + Relative path + + + + + Absolute path + + Best for performance + + + + Writes log messages to one or more files. + + Documentation on NLog Wiki + + + + Default clean up period of the initialized files. When a file exceeds the clean up period is removed from the list. + + Clean up period is defined in days. + + + + The maximum number of initialized files before clean up procedures are initiated, + to keep the number of initialized files to a minimum. Chose 25 to cater for monthly rolling of log-files. + + + + + This value disables file archiving based on the size. + + + + + Holds the initialized files each given time by the instance. Against each file, the last write time is stored. + + Last write time is store in local time (no UTC). + + + + List of the associated file appenders with the instance. + + + + + The number of initialized files at any one time. + + + + + The maximum number of archive files that should be kept. + + + + + The maximum days of archive files that should be kept. + + + + + The filename as target + + + + + The archive file name as target + + + + + The date of the previous log event. + + + + + The file name of the previous log event. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the name of the file to write to. + + + This FileName string is a layout which may include instances of layout renderers. + This lets you use a single target to write to multiple files. + + + The following value makes NLog write logging events to files based on the log level in the directory where + the application runs. + ${basedir}/${level}.log + All Debug messages will go to Debug.log, all Info messages will go to Info.log and so on. + You can combine as many of the layout renderers as you want to produce an arbitrary log file name. + + + + + + Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. + If set to false, nothing gets written when the filename is wrong. + + + + + + Is the an absolute or relative path? + + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + + Gets or sets a value indicating whether to delete old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + + + + + + Gets or sets a value indicating whether to replace file contents on each write instead of appending log message at the end. + + + + + + Gets or sets a value indicating whether to keep log file open instead of opening and closing it on each logging event. + + + Setting this property to True helps improve performance. + + + + + + Gets or sets the maximum number of log file names that should be stored as existing. + + + The bigger this number is the longer it will take to write each log record. The smaller the number is + the higher the chance that the clean function will be run when no new files have been opened. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + + Gets or sets the file attributes (Windows only). + + + + + + Gets or sets the line ending mode. + + + + + + Gets or sets a value indicating whether to automatically flush the file buffers after each log message. + + + + + + Gets or sets the number of files to be kept open. Setting this to a higher value may improve performance + in a situation where a single File target is writing to many files + (such as splitting by level or by logger). + + + The files are managed on a LRU (least recently used) basis, which flushes + the files that have not been used for the longest period of time should the + cache become full. As a rule of thumb, you shouldn't set this parameter to + a very high value. A number like 10-15 shouldn't be exceeded, because you'd + be keeping a large number of files open which consumes system resources. + + + + + + Gets or sets the maximum number of seconds that files are kept open. If this number is negative the files are + not automatically closed after a period of inactivity. + + + + + + Gets or sets the maximum number of seconds before open files are flushed. If this number is negative or zero + the files are not flushed by timer. + + + + + + Gets or sets the log file buffer size in bytes. + + + + + + Gets or sets the file encoding. + + + + + + Gets or sets whether or not this target should just discard all data that its asked to write. + Mostly used for when testing NLog Stack except final write + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on different network hosts. + + + This effectively prevents files from being kept open. + + + + + + Gets or sets a value indicating whether to write BOM (byte order mark) in created files + + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + The actual delay is a random value between 0 and the value specified + in this parameter. On each failed attempt the delay base is doubled + up to times. + + + Assuming that ConcurrentWriteAttemptDelay is 10 the time to wait will be:

+ a random value between 0 and 10 milliseconds - 1st attempt
+ a random value between 0 and 20 milliseconds - 2nd attempt
+ a random value between 0 and 40 milliseconds - 3rd attempt
+ a random value between 0 and 80 milliseconds - 4th attempt
+ ...

+ and so on. + + + + +

+ Gets or sets a value indicating whether to archive old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + After archiving the old file, the current log file will be empty. + + +
+ + + Gets or sets a value of the file size threshold to archive old log file on startup. + + + This option won't work if is set to false + Default value is 0 which means that the file is archived as soon as archival on + startup is enabled. + + + + + + Gets or sets a value specifying the date format to use when archiving files. + + + This option works only when the "ArchiveNumbering" parameter is set either to Date or DateAndSequence. + + + + + + Gets or sets the size in bytes above which log files will be automatically archived. + + Warning: combining this with isn't supported. We cannot create multiple archive files, if they should have the same name. + Choose: + + + Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. + + + + + + Gets or sets a value indicating whether to automatically archive log files every time the specified time passes. + + + Files are moved to the archive as part of the write operation if the current period of time changes. For example + if the current hour changes from 10 to 11, the first write that will occur + on or after 11:00 will trigger the archiving. +

+ Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. +

+
+ +
+ + + Is the an absolute or relative path? + + + + + + Gets or sets the name of the file to be used for an archive. + + + It may contain a special placeholder {#####} + that will be replaced with a sequence of numbers depending on + the archiving strategy. The number of hash characters used determines + the number of numerical digits to be used for numbering files. + + + + + + Gets or sets the maximum number of archive files that should be kept. + + + + + + Gets or sets the maximum days of archive files that should be kept. + + + + + + Gets or sets the way file archives are numbered. + + + + + + Used to compress log files during archiving. + This may be used to provide your own implementation of a zip file compressor, + on platforms other than .Net4.5. + Defaults to ZipArchiveFileCompressor on .Net4.5 and to null otherwise. + + + + + + Gets or sets a value indicating whether to compress archive files into the zip archive format. + + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + + Gets or sets a value indicating whether the footer should be written only when the file is archived. + + + + + + Gets the characters that are appended after each line. + + + + + Refresh the ArchiveFilePatternToWatch option of the . + The log file must be watched for archiving when multiple processes are writing to the same + open file. + + + + + Removes records of initialized files that have not been + accessed in the last two days. + + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Removes records of initialized files that have not been + accessed after the specified date. + + The cleanup threshold. + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Flushes all pending file operations. + + The asynchronous continuation. + + The timeout parameter is ignored, because file APIs don't provide + the needed functionality. + + + + + Returns the suitable appender factory ( ) to be used to generate the file + appenders associated with the instance. + + The type of the file appender factory returned depends on the values of various properties. + + suitable for this instance. + + + + Initializes file logging by creating data structures that + enable efficient multi-file logging. + + + + + Closes the file(s) opened for writing. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Get full filename (=absolute) and cleaned if needed. + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes the specified array of logging events to a file specified in the FileName + parameter. + + An array of objects. + + This function makes use of the fact that the events are batched by sorting + the requests by filename. This optimizes the number of open/close calls + and can help improve performance. + + + + + Returns estimated size for memory stream, based on events count and first event size in bytes. + + Count of events + Bytes count of first event + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Gets the bytes to be written to the file. + + Log event. + Array of bytes that are ready to be written. + + + + Modifies the specified byte array before it gets sent to a file. + + The byte array. + The modified byte array. The function can do the modification in-place. + + + + Gets the bytes to be written to the file. + + The log event to be formatted. + to help format log event. + Optional temporary char-array to help format log event. + Destination for the encoded result. + + + + Formats the log event for write. + + The log event to be formatted. + for the result. + + + + Modifies the specified byte array before it gets sent to a file. + + The LogEvent being written + The byte array. + + + + Archives fileName to archiveFileName. + + File name to be archived. + Name of the archive file. + + + + Gets the correct formatting to be used based on the value of for converting values which will be inserting into file + names during archiving. + + This value will be computed only when a empty value or is passed into + + Date format to used irrespectively of value. + Formatting for dates. + + + + Calculate the DateTime of the requested day of the week. + + The DateTime of the previous log event. + The next occuring day of the week to return a DateTime for. + The DateTime of the next occuring dayOfWeek. + For example: if previousLogEventTimestamp is Thursday 2017-03-02 and dayOfWeek is Sunday, this will return + Sunday 2017-03-05. If dayOfWeek is Thursday, this will return *next* Thursday 2017-03-09. + + + + Invokes the archiving process after determining when and which type of archiving is required. + + File name to be checked and archived. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + + + + Gets the pattern that archive files will match + + Filename of the log file + Log event that the instance is currently processing. + A string with a pattern that will match the archive file names + + + + Archives the file if it should be archived. + + The file name to check for. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + True when archive operation of the file was completed (by this target or a concurrent target) + + + + Closes any active file-appenders that matches the input filenames. + File-appender is requested to invalidate/close its filehandle, but keeping its archive-mutex alive + + + + + Indicates if the automatic archiving process should be executed. + + File name to be written. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the correct filename to archive + + + + + + Gets the file name for archiving, or null if archiving should not occur based on file size. + + File name to be written. + The size in bytes of the next chunk of data to be written in the file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the file name for archiving, or null if archiving should not occur based on date/time. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Truncates the input-time, so comparison of low resolution times (like dates) are not affected by ticks + + High resolution Time + Time Resolution Level + Truncated Low Resolution Time + + + + Evaluates which parts of a file should be written (header, content, footer) based on various properties of + instance and writes them. + + File name to be written. + Raw sequence of to be written into the content part of the file. + File has just been opened. + + + + Initialise a file to be used by the instance. Based on the number of initialized + files and the values of various instance properties clean up and/or archiving processes can be invoked. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file (DateTime.MinValue if just initialized). + + + + Writes the file footer and finalizes the file in instance internal structures. + + File name to close. + Indicates if the file is being finalized for archiving. + + + + Writes the footer information to a file. + + The file path to write to. + + + + Decision logic whether to archive logfile on startup. + and properties. + + File name to be written. + Decision whether to archive or not. + + + + Invokes the archiving and clean up of older archive file based on the values of + and + properties respectively. + + File name to be written. + Log event that the instance is currently processing. + + + + Creates the file specified in and writes the file content in each entirety i.e. + Header, Content and Footer. + + The name of the file to be written. + Sequence of to be written in the content section of the file. + First attempt to write? + This method is used when the content of the log file is re-written on every write. + + + + Writes the header information and byte order mark to a file. + + File appender associated with the file. + + + + The sequence of to be written in a file after applying any formatting and any + transformations required from the . + + The layout used to render output message. + Sequence of to be written. + Usually it is used to render the header and hooter of the files. + + + + Check if cleanup should be performed on initialize new file + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Create a wildcard file-mask that allows one to find all files belonging to the same archive. + + Base archive file pattern + Wildcard file-mask + + + + Search directory for all existing files that are part of the same archive. + + Base archive file pattern + + + + + Generate the next archive filename for the archive. + + Base archive file pattern + File date of archive + Existing files in the same archive + + + + + Return all files that should be removed from the provided archive. + + Base archive file pattern + Existing files in the same archive + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + + + + may be configured to compress archived files in a custom way + by setting before logging your first event. + + + + + Create archiveFileName by compressing fileName. + + Absolute path to the log file to compress. + Absolute path to the compressed archive file to create. + + + + Interface for serialization of values, maybe even objects to JSON format. + Useful for wrappers for existing serializers. + + + + + Returns a serialization of an object + into JSON format. + + The object to serialize to JSON. + Serialized value (null = Serialize failed). + + + + Options for JSON serialisation + + + + + Add quotes around object keys? + + + + + Format provider for value + + + + + Format string for value + + + + + Should non-ascii characters be encoded + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + Serialize enum as string value + + + + + Should dictionary keys be sanitized. All characters must either be letters, numbers or underscore character (_). + + Any other characters will be converted to underscore character (_) + + + + + How far down the rabbit hole should the Json Serializer go with object-reflection before stopping + + + + Initializes a new instance of the class. + + + + Line ending mode. + + + + + Insert platform-dependent end-of-line sequence after each line. + + + + + Insert CR LF sequence (ASCII 13, ASCII 10) after each line. + + + + + Insert CR character (ASCII 13) after each line. + + + + + Insert LF character (ASCII 10) after each line. + + + + + Insert null terminator (ASCII 0) after each line. + + + + + Do not insert any line ending. + + + + + Gets the name of the LineEndingMode instance. + + + + + Gets the new line characters (value) of the LineEndingMode instance. + + + + + Initializes a new instance of . + + The mode name. + The new line characters to be used. + + + + Returns the that corresponds to the supplied . + + + The textual representation of the line ending mode, such as CRLF, LF, Default etc. + Name is not case sensitive. + + The value, that corresponds to the . + There is no line ending mode with the specified name. + + + + Compares two objects and returns a + value indicating whether the first one is equal to the second one. + + The first level. + The second level. + The value of mode1.NewLineCharacters == mode2.NewLineCharacters. + + + + Compares two objects and returns a + value indicating whether the first one is not equal to the second one. + + The first mode + The second mode + The value of mode1.NewLineCharacters != mode2.NewLineCharacters. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms + and data structures like a hash table. + + + + + Determines whether the specified is + equal to this instance. + + The to compare with + this instance. + + Value of true if the specified + is equal to this instance; otherwise, false. + + + The parameter is null. + + + + Indicates whether the current object is equal to another object of the same type. + true if the current object is equal to the parameter; otherwise, false. + An object to compare with this object. + + + + Writes log messages to an ArrayList in memory for programmatic retrieval. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the list of logs gathered in the . + + + + + Gets or sets the max number of items to have in memory + + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + A parameter to MethodCall. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout to use for parameter value. + + + + Initializes a new instance of the class. + + Name of the parameter. + The layout. + + + + Initializes a new instance of the class. + + The name of the parameter. + The layout. + The type of the parameter. + + + + Gets or sets the name of the parameter. + + + + + + Gets or sets the type of the parameter. Obsolete alias for + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets the class name. + + + + + + Gets or sets the method name. The method must be public and static. + + Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx + e.g. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Initializes a new instance of the class. + + Name of the target. + Method to call on logevent. + + + + Initializes the target. + + + + + Calls the specified Method. + + Method parameters. + The logging event. + + + + Calls the specified Method. + + Method parameters. + + + + The base class for all targets which call methods (local or remote). + Manages parameters and type coercion. + + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + + + + Prepares an array of parameters to be passed based on the logging event and calls DoInvoke(). + + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Sends log messages over the network. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ To print the results, use any application that's able to receive messages over + TCP or UDP. NetCat is + a simple but very powerful command-line tool that can be used for that. This image + demonstrates the NetCat tool receiving log messages from Network target. +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will be very slow. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+

+ There are two specialized versions of the Network target: Chainsaw + and NLogViewer which write to instances of Chainsaw log4j viewer + or NLogViewer application respectively. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6) (not supported on Windows Phone 7.0)
  • +
  • tcp4://host:port - force TCP/IPv4 (not supported on Windows Phone 7.0)
  • +
  • tcp6://host:port - force TCP/IPv6 (not supported on Windows Phone 7.0)
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6, not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp4://host:port - force UDP/IPv4 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp6://host:port - force UDP/IPv6 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • http://host:port/pageName - HTTP using POST verb
  • +
  • https://host:port/pageName - HTTPS using POST verb
  • +
+ For SOAP-based webservice support over HTTP use WebService target. +
+ +
+ + + Gets or sets a value indicating whether to keep connection open whenever possible. + + + + + + Gets or sets a value indicating whether to append newline at the end of log message. + + + + + + Gets or sets the end of line value if a newline is appended at the end of log message . + + + + + + Gets or sets the maximum message size in bytes. + + + + + + Gets or sets the size of the connection cache (number of connections which are kept alive). + + + + + + Gets or sets the maximum current connections. 0 = no maximum. + + + + + + Gets or sets the action that should be taken if the will be more connections than . + + + + + + Gets or sets the maximum queue size. + + + + + + Gets or sets the action that should be taken if the message is larger than + maxMessageSize. + + + + + + Gets or sets the encoding to be used. + + + + + + Get or set the SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Sends the + rendered logging event over the network optionally concatenating it with a newline character. + + The logging event. + + + + Try to remove. + + + + + removed something? + + + + Gets the bytes to be written. + + Log event. + Byte array. + + + + The action to be taken when there are more connections then the max. + + + + + Just allow it. + + + + + Discard the connection item. + + + + + Block until there's more room in the queue. + + + + + Action that should be taken if the message overflows. + + + + + Report an error. + + + + + Split the message into smaller pieces. + + + + + Discard the entire message. + + + + + Represents a parameter to a NLogViewer target. + + + + + Initializes a new instance of the class. + + + + + Gets or sets viewer parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + Sends log messages to the remote instance of NLog Viewer. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include stack contents. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDLC item separator. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets the layout renderer which produces Log4j-compatible XML events. + + + + + Gets or sets the instance of that is used to format log messages. + + + + + + Discards log messages. Used mainly for debugging and benchmarking. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets a value indicating whether to perform layout calculation. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Does nothing. Optionally it calculates the layout text but + discards the results. + + The logging event. + + + + Outputs log messages through the OutputDebugString() Win32 API. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Outputs the rendered logging event through the OutputDebugString() Win32 API. + + The logging event. + + + + Represents logging target. + + + + Are all layouts in this target thread-agnostic, if so we don't precalculate the layouts + + + + The Max StackTraceUsage of all the in this Target + + + + + Gets or sets the name of the target. + + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers + Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + Gets the object which can be used to synchronize asynchronous operations that must rely on the . + + + + + Gets the logging configuration this target is part of. + + + + + Gets a value indicating whether the target has been initialized. + + + + + Can be used if has been enabled. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Closes the target. + + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Calls the on each volatile layout + used by this target. + This method won't prerender if all layouts in this target are thread-agnostic. + + + The log event. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Writes the log to the target. + + Log event to write. + + + + Writes the array of log events. + + The log events. + + + + Writes the array of log events. + + The log events. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Closes the target and releases any unmanaged resources. + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Writes async log event to the log target. + + Async Log event to be written out. + + + + Writes a log event to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Log event to be written out. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + NOTE! Obsolete, instead override WriteAsyncThreadSafe(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target, in a thread safe manner. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Writes an array of logging events to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Merges (copies) the event context properties from any event info object stored in + parameters of the given event info object. + + The event info object to perform the merge to. + + + + Renders the event info in layout. + + The layout. + The event info. + String representing log event. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Should the exception be rethrown? + + + Upgrade to private protected when using C# 7.2 + + + + Marks class as a logging target and assigns a name to it. + + This attribute is not required when registering the target in the API. + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets a value indicating whether to the target is a wrapper target (used to generate the target summary documentation page). + + + + + Gets or sets a value indicating whether to the target is a compound target (used to generate the target summary documentation page). + + + + + Attribute details for + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Gets or sets when an empty value should cause the property to be included + + + + + Gets or sets the type of the property. + + + + + Represents target that supports context capture using MDLC, MDC, NDLC and NDC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets or sets a value indicating whether to include contents of the dictionary + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the + + + + + + Gets the array of custom attributes to be passed into the logevent context + + + + + + Constructor + + + + + + + + Check if logevent has properties (or context properties) + + + True if properties should be included + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Dictionary with any context properties for the logEvent (Null if none found) + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Optional prefilled dictionary + Dictionary with any context properties for the logEvent (Null if none found) + + + + Creates combined dictionary of all configured properties for logEvent + + + Dictionary with all collected properties for logEvent + + + + Creates combined dictionary of all configured properties for logEvent + + + Optional prefilled dictionary + Dictionary with all collected properties for logEvent + + + + Generates a new unique name, when duplicate names are detected + + LogEvent that triggered the duplicate name + Duplicate item name + Item Value + Dictionary of context values + New (unique) value (or null to skip value). If the same value is used then the item will be overwritten + + + + Returns the captured snapshot of for the + + + Dictionary with MDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with MDLC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDLC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with GDC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDC key + MDC value + Snapshot of MDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDLC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDLC key + MDLC value + Snapshot of MDLC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDC value + Snapshot of NDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDLC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDLC value + Snapshot of NDLC value + Include object value in snapshot + + + + Take snapshot of a single object value + + Log event + Key Name (null when NDC / NDLC) + Object Value + Snapshot of value + Include object value in snapshot + + + Internal Layout that allows capture of MDC context + + + Internal Layout that allows capture of NDC context + + + Internal Layout that allows capture of MDLC context + + + Internal Layout that allows capture of NDLC context + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the layout used to format log messages. + + + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the text to be rendered. + + + + + + Gets or sets the footer. + + + + + + Gets or sets the header. + + + + + + Gets or sets the layout with header and footer. + + The layout with header and footer. + + + + Web service protocol. + + + + + Use SOAP 1.1 Protocol. + + + + + Use SOAP 1.2 Protocol. + + + + + Use HTTP POST Protocol. + + + + + Use HTTP GET Protocol. + + + + + Do an HTTP POST of a JSON document. + + + + + Do an HTTP POST of an XML document. + + + + + Web Service Proxy Configuration Type + + + + + Default proxy configuration from app.config (System.Net.WebRequest.DefaultWebProxy) + + + Example of how to configure default proxy using app.config + + <system.net> + <defaultProxy enabled = "true" useDefaultCredentials = "true" > + <proxy usesystemdefault = "True" /> + </defaultProxy> + </system.net> + + + + + + Automatic use of proxy with authentication (cached) + + + + + Disables use of proxy (fast) + + + + + Custom proxy address (cached) + + + + + Calls the specified web service on each log message. + + Documentation on NLog Wiki + + The web service must implement a method that accepts a number of string parameters. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

The example web service that works with this example is shown below

+ +
+
+ + + dictionary that maps a concrete implementation + to a specific -value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target + + + + Gets or sets the web service URL. + + + + + + Gets or sets the Web service method name. Only used with Soap. + + + + + + Gets or sets the Web service namespace. Only used with Soap. + + + + + + Gets or sets the protocol to be used when calling web service. + + + + + + Gets or sets the proxy configuration when calling web service + + + + + + Gets or sets the custom proxy address, include port separated by a colon + + + + + + Should we include the BOM (Byte-order-mark) for UTF? Influences the property. + + This will only work for UTF-8. + + + + + + Gets or sets the encoding. + + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Gets or sets the name of the root XML element, + if POST of XML document chosen. + If so, this property must not be null. + (see and ). + + + + + + Gets or sets the (optional) root namespace of the XML document, + if POST of XML document chosen. + (see and ). + + + + + + Gets the array of parameters to be passed. + + + + + + Indicates whether to pre-authenticate the HttpWebRequest (Requires 'Authorization' in parameters) + + + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Invokes the web service method. + + Parameters to be passed. + The logging event. + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Builds the URL to use when calling the web service for a message, depending on the WebServiceProtocol. + + + + + + + Write from input to output. Fix the UTF-8 bom + + + + + + + + + base class for POST formatters, that + implement former PrepareRequest() method, + that creates the content for + the requested kind of HTTP request + + + + + Win32 file attributes. + + + For more information see https://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/createfile.asp. + + + + + Read-only file. + + + + + Hidden file. + + + + + System file. + + + + + File should be archived. + + + + + Device file. + + + + + Normal file. + + + + + File is temporary (should be kept in cache and not + written to disk if possible). + + + + + Sparse file. + + + + + Reparse point. + + + + + Compress file contents. + + + + + File should not be indexed by the content indexing service. + + + + + Encrypted file. + + + + + The system writes through any intermediate cache and goes directly to disk. + + + + + The system opens a file with no system caching. + + + + + Delete file after it is closed. + + + + + A file is accessed according to POSIX rules. + + + + + Asynchronous request queue. + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Gets the number of requests currently in the queue. + + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + Queue was empty before enqueue + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued (-1 means everything). + The array of log events. + + + + Dequeues into a preallocated array, instead of allocating a new one + + Maximum number of items to be dequeued + Preallocated list + + + + Clears the queue. + + + + + Gets or sets the request limit. + + + + + Gets or sets the action to be taken when there's no more room in + the queue and another request is enqueued. + + + + + Notifies about log event that was dropped when set to + + + + + Notifies when queue size is growing over + + + + + Raise event when queued element was dropped because of queue overflow + + Dropped queue item + + + + Raise event when RequestCount overflow + + current requests count + + + + Provides asynchronous, buffered execution of target writes. + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queueing + messages and processing them in a separate thread. You should wrap targets + that spend a non-trivial amount of time in their Write() method with asynchronous + target to speed up logging. +

+

+ Because asynchronous logging is quite a common scenario, NLog supports a + shorthand notation for wrapping all targets with AsyncWrapper. Just add async="true" to + the <targets/> element in the configuration file. +

+ + + ... your targets go here ... + + ]]> +
+ +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of requests in the queue. + The action to be taken when the queue overflows. + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Gets or sets the time in milliseconds to sleep between batches. (1 or less means trigger on new activity) + + + + + + Raise event when Target cannot store LogEvent. + Event arg contains lost LogEvents + + + + + Raises when event queue grow. + Queue can grow when was set to + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the limit of full s to write before yielding into + Performance is better when writing many small batches, than writing a single large batch + + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + + Gets the queue of lazy writer thread requests. + + + + + Schedules a flush of pending events in the queue (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target by starting the lazy writer timer. + + + + + Shuts down the lazy writer timer. + + + + + Starts the lazy writer thread which periodically writes + queued log messages. + + + + + Attempts to start an instant timer-worker-thread which can write + queued log messages. + + Returns true when scheduled a timer-worker-thread + + + + Stops the lazy writer thread. + + + + + Adds the log event to asynchronous queue to be processed by + the lazy writer thread. + + The log event. + + The is called + to ensure that the log event can be processed in another thread. + + + + + Write to queue without locking + + + + + + The action to be taken when the queue overflows. + + + + + Grow the queue. + + + + + Discard the overflowing item. + + + + + Block until there's more room in the queue. + + + + + Causes a flush on a wrapped target if LogEvent satisfies the . + If condition isn't set, flushes on each write. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Gets or sets the condition expression. Log events who meet this condition will cause + a flush on the wrapped target. + + + + + + Delay the flush until the LogEvent has been confirmed as written + + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + The wrapped target. + Name of the target + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes the target. + + + + + Forwards the call to the .Write() + and calls on it if LogEvent satisfies + the flush condition or condition is null. + + Logging event to be written out. + + + + Schedules a flush operation, that triggers when all pending flush operations are completed (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + The action to take when the buffer overflows. + + + + Gets or sets the number of log events to be buffered. + + + + + + Gets or sets the timeout (in milliseconds) after which the contents of buffer will be flushed + if there's no write in the specified period of time. Use -1 to disable timed flushes. + + + + + + Gets or sets a value indicating whether to use sliding timeout. + + + This value determines how the inactivity period is determined. If sliding timeout is enabled, + the inactivity timer is reset after each write, if it is disabled - inactivity timer will + count from the first event written to the buffer. + + + + + + Gets or sets the action to take if the buffer overflows. + + + Setting to will replace the + oldest event with new events without sending events down to the wrapped target, and + setting to will flush the + entire buffer to the wrapped target. + + + + + + Flushes pending events in the buffer (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target. + + + + + Closes the target by flushing pending events in the buffer (if any). + + + + + Adds the specified log event to the buffer and flushes + the buffer in case the buffer gets full. + + The log event. + + + + The action to be taken when the buffer overflows. + + + + + Flush the content of the buffer. + + + + + Discard the oldest item. + + + + + A base class for targets which wrap other (multiple) targets + and provide various forms of target routing. + + + + + Initializes a new instance of the class. + + The targets. + + + + Gets the collection of targets managed by this compound target. + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Writes logging event to the log target. + + Logging event to be written out. + + + + Flush any pending log messages for all wrapped targets. + + The asynchronous continuation. + + + + Concurrent Asynchronous request queue based on + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Gets the number of requests currently in the queue. + + + Only for debugging purposes + + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + Queue was empty before enqueue + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued (-1 means everything). + The array of log events. + + + + Dequeues into a preallocated array, instead of allocating a new one + + Maximum number of items to be dequeued + Preallocated list + + + + Clears the queue. + + + + + Provides fallback-on-error. + + Documentation on NLog Wiki + +

This example causes the messages to be written to server1, + and if it fails, messages go to server2.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Gets or sets a value indicating whether to return to the first target after any successful write. + + + + + + + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + The method remembers the last-known-successful target + and starts the iteration from it. + If is set, the method + resets the target to the first target + stored in . + + + + + Filtering rule for . + + + + + Initializes a new instance of the FilteringRule class. + + + + + Initializes a new instance of the FilteringRule class. + + Condition to be tested against all events. + Filter to apply to all log events when the first condition matches any of them. + + + + Gets or sets the condition to be tested. + + + + + + Gets or sets the resulting filter to be applied when the condition matches. + + + + + + Filters log entries based on a condition. + + Documentation on NLog Wiki + +

This example causes the messages not contains the string '1' to be ignored.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The condition. + + + + Initializes a new instance of the class. + + The wrapped target. + The condition. + + + + Gets or sets the condition expression. Log events who meet this condition will be forwarded + to the wrapped target. + + + + + + Gets or sets the filter. Log events who evaluates to will be discarded + + + + + + + + + Checks the condition against the passed log event. + If the condition is met, the log event is forwarded to + the wrapped target. + + Log event. + + + + + + + Limits the number of messages written per timespan to the wrapped target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of messages written per interval. + Interval in which the maximum number of messages can be written. + + + + Gets or sets the maximum allowed number of messages written per . + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets or sets the interval in which messages will be written up to the number of messages. + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets the DateTime when the current will be reset. + + + + + + Gets the number of written in the current . + + + + + + Initializes the target and resets the current Interval and . + + + + + Writes log event to the wrapped target if the current is lower than . + If the is already reached, no log event will be written to the wrapped target. + resets when the current is expired. + + Log event to be written out. + + + + Arguments for events. + + + + + + + + Instance of that was dropped by + + + + + Raises by when + queue is full + and set to + By default queue doubles it size. + + + + + Contains items count and new queue size. + + Required queue size + Current queue size + + + + New queue size + + + + + Current requests count + + + + + Filters buffered log entries based on a set of conditions that are evaluated on a group of events. + + Documentation on NLog Wiki + + PostFilteringWrapper must be used with some type of buffering target or wrapper, such as + AsyncTargetWrapper, BufferingWrapper or ASPNetBufferingWrapper. + + +

+ This example works like this. If there are no Warn,Error or Fatal messages in the buffer + only Info messages are written to the file, but if there are any warnings or errors, + the output includes detailed trace (levels >= Debug). You can plug in a different type + of buffering wrapper (such as ASPNetBufferingWrapper) to achieve different + functionality. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Gets or sets the default filter to be applied when no specific rule matches. + + + + + + Gets the collection of filtering rules. The rules are processed top-down + and the first rule that matches determines the filtering condition to + be applied to log events. + + + + + + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Evaluates all filtering rules to find the first one that matches. + The matching rule determines the filtering condition to be applied + to all items in a buffer. If no condition matches, default filter + is applied to the array of log events. + + Array of log events to be post-filtered. + + + + Evaluate all the rules to get the filtering condition + + + + + + + Sends log messages to a randomly selected target. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt + chosen randomly on a per-message basis. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the log event to one of the sub-targets. + The sub-target is randomly chosen. + + The log event. + + + + Repeats each log event the specified number of times. + + Documentation on NLog Wiki + +

This example causes each log message to be repeated 3 times.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The repeat count. + + + + Initializes a new instance of the class. + + The wrapped target. + The repeat count. + + + + Gets or sets the number of times to repeat each log message. + + + + + + Forwards the log message to the by calling the method times. + + The log event. + + + + Retries in case of write error. + + Documentation on NLog Wiki + +

This example causes each write attempt to be repeated 3 times, + sleeping 1 second between attempts if first one fails.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Initializes a new instance of the class. + + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Gets or sets the number of retries that should be attempted on the wrapped target in case of a failure. + + + + + + Gets or sets the time to wait between retries in milliseconds. + + + + + + Special SyncObject to allow closing down Target while busy retrying + + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Writes the specified log event to the wrapped target in a thread-safe manner. + + The log event. + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Distributes log events to targets in a round-robin fashion. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt. + Each odd message is written to file2.txt, each even message goes to file1.txt. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Ensures forwarding happens without holding lock + + + + + + Forwards the write to one of the targets from + the collection. + + The log event. + + The writes are routed in a round-robin fashion. + The first log event goes to the first target, the second + one goes to the second target and so on looping to the + first target when there are no more targets available. + In general request N goes to Targets[N % Targets.Count]. + + + + + Writes log events to all targets. + + Documentation on NLog Wiki + +

This example causes the messages to be written to both file1.txt or file2.txt +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the specified log event to all sub-targets. + + The log event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Base class for targets wrap other (single) targets. + + + + + Gets or sets the target that is wrapped by this target. + + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Builtin IFileCompressor implementation utilizing the .Net4.5 specific + and is used as the default value for on .Net4.5. + So log files created via can be zipped when archived + w/o 3rd party zip library when run on .Net4.5 or higher. + + + + + Implements using the .Net4.5 specific + + + + + Current local time retrieved directly from DateTime.Now. + + + + + Gets current local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Current UTC time retrieved directly from DateTime.UtcNow. + + + + + Gets current UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Fast time source that updates current time only once per tick (15.6 milliseconds). + + + + + Gets raw uncached time from derived time source. + + + + + Gets current time cached for one system tick (15.6 milliseconds). + + + + + Fast local time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Fast UTC time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Defines source of current time. + + + + + Gets current time. + + + + + Gets or sets current global time source used in all log events. + + + Default time source is . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to the same form + as time values originated from this source. + + + + There are situations when NLog have to compare the time originated from TimeSource + to the time originated externally in the system. + To be able to provide meaningful result of such comparisons the system time must be expressed in + the same form as TimeSource time. + + + Examples: + - If the TimeSource provides time values of local time, it should also convert the provided + to the local time. + - If the TimeSource shifts or skews its time values, it should also apply + the same transform to the given . + + + + + + Marks class as a time source and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the time source. + + + diff --git a/packages/NLog.4.7.2/lib/netstandard1.5/NLog.dll b/packages/NLog.4.7.2/lib/netstandard1.5/NLog.dll new file mode 100644 index 0000000000000000000000000000000000000000..a6d8314ba22101b8e322074b5fbcb35bf709cdf2 GIT binary patch literal 784896 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�b z#|_i#I7!f_F~U#tSpt;SHFxK0c79l>Qg0D`CKc2vJv9K=3Zp#;s2&tdDouZGa!)?_ zrE}aU-*j$rj8C)|Kea)hN0`nR8&1%@`C(JKZKV&0%J@Ap6LY~z`IXkKGF$>zu|Oda zvi4h;&!wtpl1;W{vn|i(p)Nyk5m{&f_Ze4gnvEc^tFn_{=!0s3-S%5v*_r}N$UY; z{k=RXbDRvg;9H-aaf{^4&dxfPzk-oaJMMw>l41f|LO}J9d<}4B(f&EW6F{P+{B%?y z7wrRJ^^2c|*FJso`nNr6pa)b2dU`2wU*gqXMHkL&FOIcLRh#5x-XXo9nTz%#%A8!K zG&|?^mox7R;$6D~@Qwjqrc53qlic>AYh}`bPu!eIjh7RjGihzyQkzmQ@AvN^2UyeJ z^Ca(<4YHp?@>^SdPUrCIVzrsrmeFp%*!$?`h_S7AOd_N`fnc`PXy&QDv^O&;YAw@# z#p6Ol=GanlXaup;ZakwC_g|lR^|?NWf%MXxPhCAS{+8NZQEg(~aiFJ_LB@JGuXVTk z^tMt9({1xj*)8W~=4_TU9IjF=N?O&JFQA3~Mn+P-+M|kl-S8FPXPLpbXuRsI!yLrZ zJg_%kuHG{yZzs3_2M@PJ)h>NM8T18L3d%0_HOwA`Om^u{RL(P{V@-YLbQ8e{wsceO zJzY3Vh%n%Ty>5Q` zD!Xv>u>x0rkar&-BfN*;<=DmSSXVmwmnA)vz|K)0zZ<`MYS$Hh?hW9GSFUc4fAMB- ze`Z`Xmpz+2vBj7(1U$}RbQr*~u9A{@KA#%jKgmBxEhhhWkbfwBxab%tTd2&8?O0*? z>u%~4Tb21$msJ^mj?$Z&Kbqu~NgW8?w`}e z>uOAH#|$G(VhI7xyI~1Ck0uAw)f_@iYq8G3R!%*8A8O9uvHWWt`y2n#ePFM|I7_9f z{HLMwV*U%b^{2C6?SJ=#hp$gldT5A-Z9KVhq-um+#5(0^kmo-Qa%v~UD0Ny4X%lLd zAkk`mw=F5~f>=lOJtCrk;o=F=aq8M>=LLP5m#3Dfp5i~ALw#Us;g#Mb+id=LGBZ_N%`{XyRotfsz(~1P- z^RYm@IXZ`QGZ_$@$J2xTmHtFbPRxm)YKdk$C9JLQ1>5N`L zYP*{EY)U{G;aGjf0z23YH!FUR>6N^Ty0{H==jvenAE3RJhFV}}4emO|w@K{_Q%Hac zjdRJeH)M=gcFXw#mO=Mvh8IudqHA5uy6Z_`i+2vB9+6&nCbbou;DZO!%ttd(AU;oc z%_#dP8w$SUdG*Dw#L)amPvd+-Gj``S?KYBIdcDxOLqDUv8}+H`5xfhCCWYUO3)q}T z7vk-!oXlMPLR=EzUc}c677oU@7N4e;=oq%+u7@PGv4M1YFj}Vo*3)W9sJ#dua4f5Y zI^<*Ju8`%6f!5yXr+;>y3t|lEy%dkc- zTG`L+aht#z)i_^OYaK2tahhp?Y9Q;!J$CoyJ>be4TqCHzUQ8`}(TMQv8K$$MfTAOo zKx@E?p7;T2wO>I}le&wv!TR?wia?PCMk4oG#w}F|!TOH~-dkOhjj&i#sIBz4H*Ta8 zV)ZWq)=x+0JqKfligS8+Iw6Z%ve1ZL!cX#Of=@W{__kiAShSi?VZ1&<*XIC|kyvrB zRe8QG4o%fAwkzE>7PQXNUj{gP?H`M!9}WS2K_|a@4$8snu>(Yg??odPhzw+ACLCv} zOF|R9OpUFBROiV%Sl7DVWD)@T#JqTAA+n5=*2Ymc1??iQ4{9jGM>Efuaj^akkJDG=t*Rox-v( zX!}6%wcKK2FU(%{tC|HQb#!0E<-Wwv_;b7m1#9+>OmR!|>yM{bR2Sr@E=7JmS?9;Q z8n_yN0rhf_@5n4qOWDINjCl7ovSdT^E->J}T7w=k7UnFE++;gFI7xPQAK&+bTe$vI zO&s*kbf)oN6mZpP?2}9IMd}FfES4P{*QMlFJ)Xfn1NF1o-ag}^`v!&f&knpd?@|PI zqmX_&4sj7up?QGhRrjB!fL#}MzQ5&D9C@VJbt8XV4{~byi*5aI-&C$=Hu50TpWk{q zNo=;xxyy(bUCxiw3C^W!2x+c|wBcashE;e*izaI8&6Rpc| zY|r$Im{^?RL`xy=b()-R;-^sYXWDv}<}+TRa&t0gX$RWd?|BjNNN)zG4~o7zyW*8| zX$!2fw(AY66WL;2udWQwo_bk#*)vtPT61(-A?-E|v{pYSUaQS)&S*3Vj&pj_`k`2Rb@NYeE00?G?pm9InRVFK~Nl4qYBZO>)@^Wn(P`hLk}* znn0Eo1M8o~&08OD!D!uL`K(}M)?S#W;Ms>lQ{&NZ>&oMeZ_%fwZOU1Pf+y3a1md$0 z?&V>sygMjgVzYN|Fm)G6-OI_OC5-cZ_W9sx=P>R&FIx4B>UX^$Z`T8@+=7kLN<$Lux!9GLddHc?@GX@VU#jyG9a|f?G zdoO)p>U|{E3E~t}Rqa{zT`Ad}#QMo$vt0-romLEqGTAy5P=oOYyz|||)YI!AGW*%z z%im8-%c$Dx-IgR(-%ptyju|4elvJ{OrxkfyseY=$UJD~q>;R`algIq@P-@qGyiNam zWmm1>uHr`rHSX%RZ+_XmqU}?|kGmhMfsID%e4~e4M~>L6qbaEe3m#WRKF_mxAf&@R zeWO>BOO59mKOi87SNi%iMnw&8o2%yY{Sb8I?H^+J$H5z~A~EZkAewwMr`0`)kkKgn z+Iex#hy&X>FFA}ww&iVHLoQ9l_CTM~{V&+o_KYLOu)hIoDj_#k8n13AQ{wVrKDqj< zRO>2;Fmwv5=K@t24a`8* z1v`xuy@ohr#!z~6C+_uQbd>x*qPB9|D7RJ$++#wOU5w?5e(DwET5eoN`VA+=p$NNn zVa|)L2Pl5#mqMBEuk`h8djR>~XMNxvh^iw_eHrj72J3VmGM@oQYXiIdoask*4=mPAaug z@Ka@1>pF%!pUa@O`>m>WOOhe?pnBX5MD+Qx3$t!y{Y`XDr`9C>#?y7BFQhwDPsPS2 z@`-Nb$2ej`raNBAsNEe;v$xM0g-&a-=(R%Jud(UWX_Ws_=pWX4>vu7oG|r_K8`8x^ zz4iO#eI1cE#5pVp+@GnQE}DCL%3+!%i8mVGxq<~d7Fj*fC9;aoIjX6Vo|lfrfqHf z?s_W~wtAfd7sFMZUazG{0>5Xlye1xuw}6_MQLg=H$?kh!Oqm~}OtKyi<6N~EX*%fe zhIoC~iPWb%vYL3H)VHlV28S{~4DyCXlHN}gUIEkN@My7bTS}^z@tTuL9dbyjibfN% zrF05eQtIR2G6` z5^+m*;;9ODiani@{5rfH71T_myBu+-Q#KuhJmf+SG|YOdOl1VjRgGQMH8%}59;N5| zxo28)k_Y&SWZEVe&1XHS&mbezU*q+ZG`f|VdftB!jvhv=@dm)rEf&TAc*d|zGumOj zJEU8iaA)M1-yy8UxlLW2FrZiA*q*6U4J&+fS|KqCPb67Qy`npMtsPwB_3@xB{X9$j9 z(RrvJEr7k+>hsUJH>xkuS#y*zJ1n`Ja9S+4%g8y(6C*0SPo5!z&yur0opZNq#d?yT z{%nvRjE)1-ZCA`m*YBZ}tXGWwO?RyrepeC8YZ#j3{jWqwB=0^A$j2gK_AXuvbNl>% zm1mF7&dz0!;H2*TU8;OPox$8gGoGg{D;pRI1faf%E<;amq!r?82}dCVDf7fDHz6cB zl+M6b#9MxJwfB|n(b$FsE+hpEJG`Db#p^ZR1W~;VTYS|g=>t+d`p%6nONz|FZsj!MpRLVHK~Q>{MNmYo(V zhqHZ<>{K(bq@|egw}4>hUa^IKIQ&vrNYf!PKYPZSY~xuU^TEmSM-!xQ8K;;G}YRwY!aM zCE~6X>$_j88DkB!YGqFo$lh?j@B-++&$-M-H_^E7H@3!e{mX2LIX0Q{pnWT5jOt19)BQYei zxzmsgaz^Ss({pA?pWipN?rnYyY7N)S^Z8btIP8$1q&K_u?Sz={hlYKIx&Gp@iKc(e`;4s@OlXC*vd-EN(urhgZ?txl{`6 zQfBt7%)6OHKe1_Ic7El`@-`TVIiIbS0;GqLwWd9%cPah5kk9 z_Y2KL%qdCcg_<|=ZVq{B(ugHr+l~uY@-%gHH_`J`pJ>lLX9B>ik+GNxUNgA>SKf}wK8h2?)6WWrw+LyHLN)l#8dBhXCfC3 zO&0zYwS~jmNXIcxm`zNHI)|B742Ll$5nPm;R^V; zTpQ#P%^R;*VxiO6SMjt4#PW=}aX+y$mmwMtrXwCD79 z08wkDAKWYCwq4Gd=!bCWEU_}EL-YFINotReCi^!Xm;b!+VPbLc_z^yHdK8=I+KH}< zdQUQJ=I8(i)amaCvm?z~NCmzF&VveA|`i#&@@8!1v&t;ro^rzMmGp*Li$b2;cqx1AN~q zd_Uvy_2*O%f^XxqK(LS?B@0b^d#7_7pAgAE2i$$0pMEC7yc+@2IcZp==nKGFGuO9K zx^=^9INB?jr@yg7zV23vPFoheST#}xtz=U{G>^HbhLF`vdK;xV?nM^+CE}TES7)y} zrw&Zt1AgGkglNY33SW$GSsLBdI|G08RV7P24|ICI*6I0rr{}>=&o??f-|XQ+m|R9^>+K~%k`>7d@T>`SMgL*^UGFx3tAf>jro2=wlOJ`ht8Ho z0ZUt35Y$(Ub79Xw<}~)-#~(CYd_N9SQuq88^(huS64i93bPn#N$~2wX?HsNe3FqYe zh?lr2rb;(9Jkn-$km_4}B$SCMOYvH1_pmCD&_JgXLa!#nN!|%jMIZNLHS^^kRph&a#uiGLdTkQ-MvHrt;y!M172yxZ*wycgcSvVyw=!c4>(P$2$D_q+DClkT@?6TLQ+1}#=>_Sy}Zaj7- zz%i#e@@a_{b|%7%Uul&UoJrDi#-{QxguL1=SNZd%L&=Y&JkGC|#~d=zuc0}@0hVeZ z=2i*)z@5ftEO4jt87<6R`h)K9Hqn2iO0jS7Z^J*Tyss2&(7l6M&{#-sz(o(FAE;&h zy>Q8G(>C3Dlk?{J^Hi|^Eoj*Z;qTNZz*}v$i0@XLkA82#BV$g%yzIuW^wFsxM<##7 zr;`AzG5iUq&Y66Aw6^RoNXPm2j`g$(X{yNdq;jqRToY5V{N#>l{#XtHM8syYW~U zNT~5or8}Y6*v@w}cV ziq#=e%-yus*4$j@W zq|sF4{gOhS_lj2abBx=ct$!g2srDyoUx%#Y)RGEG<}nU}Xo9m>`Lmh_ox~D4iLN31 z<2SrJ)zW`vwKiG=sppgSN0t_zkVaS6_7674_Gs)$KdDJ%q9PSZtkjfn_hzRaWiee! zlB}%%#jc+uF26pcO(yejM;TSP5?RElo}dS?&1w_($W6vJ%U5>3-2|_VXTe3oOsk-8 zt8D!th~cgI?UMB!kUcwmezxrE_1{}Z6S14&J}n&EVnPoSwp&ZdZr#I#w~g~tpvjNH zcj`JIo7NUGW`m`d+Xz$|TVlmbG!Iv1>Ab8(aj&wDTK~N;yAB4TGEkp;L+oZ2>SHQl zdcBM)Goyq>cez}C{$gQDJwjQgeQ^Yd{BwHg;u3h)b){%N1&xiQW?|vvcXU5&^oKIi zKT}y|irg|VR7QJ?i=P7bOzJrD(_gq=y%h_`eiwwEo_{Q=oc2%I-YJ?5xPy`Ihl4{{ zuy~bSB}LWC!_uV|%=*|KpP4tQqOj>RAD%?jEr={U7q!4nAnlEQ5A695@S5q2zk` zt>p2J;6N1-m&}3K6WM*3zC)fR$W z4e7?af!t%%#ls=kifJGr2u-qxt%`P2tuwnV;$~=N zw)91aT<}Ek>eLgzDrZJm>{E**4${gO-xeQ{@X%&ysq5~Y$*<=6j8TC5o%tMy85W_r zhE+_S2pA{JOg!Z0W$ocK2Cxr1i{nj|9LlaptZgF%C!S(6r8#`hcHFs1T=z=aQ2P6w z2_BzIy#urTtGrnt`ohf3ftlXWosbYA>F>PG5^`!kZj2V5BI91|sF;-D(Gs+?ke`~Z zQ|)PX%;R#9etI4kQMFbcv8iP8m_oQ*IDL5Ws&B{R0`Hk^uU{X+)|?fD{?+uZNMv#T z={rKmv@@e1EOi4!({$<|)c>dSjr4-mM?kAoiGNP|?2fGDJ_quz{v#fe{b1^V&+x-6 z2FF^6M)>hB*(H#@p9UFw8f32)B+kYGC}c)-wR_#7+4QtjYI@xg9*$ZYXP${h)OR#{ zTDi4W4he+ioeNo-FXJfeGg*7*Ub0U<$X*=Jz1iqlaW)*OZY6TuixWAS`idVT%$Swg zar3($GxNY;>%GQs(XZeG)hSD>7l9ylPp-sMK6kj_d6lhaw``DUz7>r_yFY1po9rhT zE~M9(Mfv7WiGplrKC4jkaoluNL@8mq4h;HLfR> z5j%B^NnR-@eBm7|x8uh#pcnZJvzrMYW>2Zyvp1^9IM&iUT3==bIaZxZO8c@2l41+V zWuCkCk^DYf>%Z#cM@%p&w0LD>?l@+9m4T8dYJ@Udy-~!S|N^!t}=CdcbqE} z=T@3#bXpub9 zYTY!vy|IA;MuX=2RBYJ1Tc33EE`55Mck1jSCA|j*`R9}Jh zP2gDC_0lYJByXfWVg2U`!lbZ2O67HF3+I?xKy4k!K4a?V#FNbR^_p&Z-BI7@*sM4e z_eQ~rnW6F7-W_cQ!1c~0K^DfNu@^ZtRRZ_08qQ~H`D*|Eq{?4^8XJ80>Rs!HY(fm& zaj8wmm^_Rv+GV1>h2289CE3e-4jXM)Uw0?8-zZO1AvhCN`MpDaM3N?2ay1osSI{_z zT$`;)3({N@PvZd+Ne2VV^=2Jt@^6~~Mpj@MUm1*MHuhX-?JSH3a56evdyE2uJ zc*%c-I~>>n6wGHCpXeF$+_RSGZv`oqfoI5*=XuHHnd}41UXaLMJcS(sz)G9m%S8ZW znMVC|bfCN@8@ibCo>Jcm$1e)27lhGvX7S>ZGoGnE`oica`bU3d*L-vkxuAN(4Np~* zk5yC66~Dmr$hN_b7noWmt+iHr+Z>BiZk5MdH=B<+w@n9@F5U5a=6(_7D5tNpU$k_G zWsf208#+_|_jw%*{{KF&HvLwJen-aL?hrg1PnSUMUqc#)Di!ro-$DH+^$VL*o(+^S zUGo%2+?1H+X2fZnjrKPcCC?aWTgA5XN-uYtlbYY^KVfP;`Tml8Lrj!e@<@HZw2DKg zcmN-!^1|A4;$UIlTiF$*z~|uVlQj%$O-^j^M~Cx6*b#hcKSt?~x7<}#FZ<((O<{;6 zR~UBSG@jb~wA4&cNqxFCiTswCO|OuBj7hJt7c0Xcg5=eF*UoJ?KF!~0;uUT7C!LqC zD@`n458VAEl%mGJm9mR2`a{vA1m8S^Sx0GG217JgYfrgN{p(5?pECcrC0lmVdb}y^S`)UIrPa8y{B{p_b3tia3<5X(=ey4lDZQJ03hCjJIeG{C2K%v<`ahJ6t<=BrnUmH<@GAl&SK{;MWI_}( z5EpPMpF73mQ9CVD9U90Ck1U5Gaqk*)TT5{bkY@K*N7AvX5g zD|S$sTl2N-ZYJXB4|B+{-RFsv+&1@i2M^f*7Y&KSvqSEbS-mnTwd=2`muWAC#ZtOx zdr)ykN2If_>&xmHy#%LGk5fJv9*s97J-LxTki*&Y&%3z=8Q$gW*c0y%KWgonPF+V# z{e>f%?iXPIxjSPlcg{brof>c3!vV$)k%!mEB@(T#JK1jC-e=C#^Q&iqQ(pay*M7Ip z2zc3d`;0;r3(d3Y57CJc%g|WG367jH)&1&^c7PlpV*RlLWU*$|OE-2UEOIKt^J_gk zthQvn-e$w~{}A^kU~&~z|NqUsy-m-OOfu=oJ|Qr}&2;x~;$ScD`Xghe!L z7j6^K3^N87LQvRK{nV*bYZvjf?ZU-ybB`@PXXKo(blcuk=h!b$C)|{kNkY!B%lS+- zlbf}!7^LUeU+kHb>?+pQcNJ=Lb@1_Zu-c#=p0kGQ9$V@k`EP)}6W8isn{)#Yk+AHM zqix&D-sy1~knBTRS8saPj;1mA3v!4oK+U6*2g`VQF>j4&cwBrbw@oX_yKViG;a9?(jj@!Rb9 zVRFR<)BS)B&%uj2{J;1_S7|-5B}0YI=b(fdi}!%nzoU+M9cuV~mhQPB z{kl5hVxT;%v=iu8p*{S~(P3{!7y>A}e79L@qQ64N{`XM->vamF1Lca2vG?nsR`O5OTXO}{yJzp89 z`**^4T)x^;V9)RrWk5Q4f~yS~7Q&LcWz^1=T!HM!d_@o3mItx ztrOTataJ`tvc#Jx?JupP#Fzs`-=qs>J(Pt+fbG{@sA_2)OUEADN$Jd->FB7wucf~K zAUf4t{8ZIDyFZw|W?#+O5~xfhaA&?H{VTmcSj0+;3hyQz#&ZlmX^E? z(gYX~;IJlu1T5jICIAxv>%EYQD)KB#c({Ucj-y93q4k2sNd{vdX!-C+1?3&uQB7#b z`ikLen*cik=nju=g3J@jF#=?&>`09}Wnd{|ScZPZnXe@xJAqW{BMD!$6}5v z{qPqQ*gO>XCEO?u{1>0v=NZ$6*(fFXcrW?*Bkj3%v6D%BkpZhW7&5RI#Bx+xqXY{9A%buRroNvAf#cH}X{+TXI*3?Rvnd zcauWG->YC+J4|8}(q9li2hqgPL`P72287;Bv_*J9{NgKwWv-~ln-i33?U-*!BKBsZ zPWfQu6u!`z+>ATzm2u}aaC?HD?pH=$+(0gni8(I0mCev;DRfl>+9JY+9Ipc!U&oI# zp4Mo9|AYmbkcVJ8!>^qRkB75(=w;7~H#D+h+Q`fSFJ-UueSBY}EnxW9F8EwY1^7dX z*}Q8GUxtPr%C(T_4Nyl>2H4_R3FwW0tas}AUzzTrXSe*JJcQ8M9LniCiP1p-gxeVk zK1!aHP%c_evA@Fh(FXqP^DUXAA~p*8h(O61jm97e_KRR{CoH-e~UM-+@Q%6=8aF&@wQob z1Bp6~&KV6FTA+oRTfmxOm$UhRWg=(n!oZc4ccFa_FwB|Zf-+XW=vY% z4u)$GmBr;9lNwU#3iaB>aQu9SgLzE7zOPz z{$did5kA`2oc2~tbDX+u@$UVSD<|p^>ln^8_SQ}#}4IRJE~0CTV} z2)x(B{l8H^>g=@~H0j8b`RE2K%fKQ_9sT`r#qKLd+KA5CD$=WALRxrD+c#@CCscRJ zMS10GOw{$^RON9;mIj*?HIZ#NIm_SGCgya9B~U7ROfU9ywuay5V7hxrZbortYq`^W zGnTaUOe)Tuz+lhajUen6Hg76)o2$=mv1;7PnXJ$D)EwP0D`cVw)^ry~`{K=vjp<#o z;L>l>1#}J1-okOWP)o^G6zdx*Y-gv}$7-JSc+SpKjqWUHo}JR1cICJ<*``j|4$b!V z2F-^_;~y%2W2IB9UCq$anr~kH_+badjsC{48l6MR$fH!%Q7m^?RO90_bZVN;N9Xbz zZQ!SSR@6nb;SNx-Duc6xVy1lg=qHeB8(rGYPUt-0pU=-|*=~z(_!fEZoq{c(JO}0V z&~j^jE=OmcL*-IrI}%eP7ODX<&PjOSt@kFr$(tw==6F;Pn&27nDn~tdA1f!=t&~C)}r}$$jN%W}{u{6WsHzi0$pwX!^w0IV6rs8jz zfi+9bFs1;U?uX{i^`@rzI2fA$f@UUq6NTPzBPvI{K9PyujIS~?zL*Mio=f+UmeHN8 zK5JT-v@%2(*Eizf8CQOFi6~HJ^+qteMDHb)PxZ(AGo)2$Fr@WoFr<}dbOBL-Yo%&+ z#w=K`#uDS2l`Z-i1#2BWw5KYiIx2RGH=0Tyu5h>(#|W zX2#y6z6QOC`+GB7ec?XQ+eLg@?lM#5SlQN_r}?#YboAlLYD#Y1!0u(P2r-yU1!}{M zIaJpx;Kj@ELgQdElxQj6%}~MtAkW6_!x7Wmm>E3{eW?s;^yrR8#40W{jO_(I zgjp{b?ovi*fcjcvpVreE?LhGG6lF$jNAn?#khY^-H_x#_xD%LTXDo2p6YDIac|L5k zKao}Y)3?$7k|o1`-2T)~&LUr1tW9r~ui9HEH1AdGMPpnA7M<$Z1%~)O@@qr9b$Jf6 zt=t+4{2}G25IqNbt&YtbD#BI;Ov|_SWH(o(XQ={@kq2~q~2n<@bPnP zno8s@nG`eOB67v7)NQc0P~qVMAZkJa={rr|Q^AqL*HtaV><{uARujzW!qD7i4x-FR z0pFH`&5q9#4Pz<$x4aSD42TX3v@!@o~kuqZIR3lUdgykQ3ER5O@Wnl(Bt zF1@c&b==C9#d1Q>ODNcW#Pb$=9V@+Q8b3!>r6Cz%j^?-0mx-)K=Y&7fEXC9r?xk$5 zF;v8+nKeNs%jvv|iGw$(yk{{f zs9&Lkig|w=x~|sm7P=!=W{$vSy`L8MJK7};KHL{1GnCjrujJR>=Bmr&svoATnR=Tr zQv)!93iK(Z-gApHEY`Q%&+U!t)Ag0-PaxD%{awtBg=MH zcPQVi@}5+G;F>gRGqvezrgR$8+vs8v*CQ>=V5L&H6iy7!k&p3S?zt8c4#>TOT0^59 zD;mNO^=L*BB*78IRMO00p}>u<1pht9woEUGo$U}5@4 zePOFNShkM$HnMZ>E5^%ul4Tc251Yw)zy^hBw8W94p6a}X>#CVTYx(5V7ug~tG5fPT zg|_n;aJ8UU4je?X3=zZn!kX(g>sLcyY2nWtxYV+_rC6S5!dM4Ehx0wTDi;m%;qh>o zg}3G$wy<6cd5aH%^+Cwix6JiT!nw5kT0YU+`C-?hq%zl4X0sZ1&iJiFD1~nzI01ES z=8hQ}F$$;6+edlh#uWE_7XHeCO8L!b=DD76RHm9wT0wJ*sx-AIR#oQ!XcK>982M5pm0m#(egTZ=^O-GIktRr2MGAhAxA8l)AFBpT}-n zqj0&d&0N$Yi9{(@g@d8rq@89xojSK#d$NW-B`s3?RJ}O|_Qq!8cEYTHD{Z}P( z%WCq8!awa^gr$P9pV>yQ?CbIN6seCcj{U0}tSeYcbZa24$%w<@sr;CTHyer_TV`0& zdQIc*WW6xOE6ns3YhKZ~w3sv#{_c>L8UD`Ak7?!1;$s>6J)p^1omwi$}-!ks$F_xT9-yzd*-7GzcvX@$&S7WZY^!%mMc-hE$7*m zTW+b)-r`ojOD6j*xgnJ(+(1*FlH+YJTLo*LwQW(Fyf#N}_AT`Dnm5d4AM1HLdhz>H zUQcj)VR)6SN0KFWTP}L2mTOkRjG_^ZSC^nC-N9490u~uuu(tVhu`(V5ES?6v* zx;Fdy_*ZblflAkPCH->icKmj=WAy{A8TA*xL@eHSvd*+SZ7^Gz=ce?j$&Bs>w8)<0 za#LoR9;@lp#j-gyNcXea-$Taf-E|FX>PiTFLW83t;1Zy2B`4SNVT?xJKNQMWLg5RC2Xsh@}cke^b5=R9kIel$)N=k-0Bou|{ zn}*1}Wro_IYsUp|hxy*_PA4Mc9h;`_s8SQcXZ^&=N;IRzw9CHHpl?)bErpd%o91rf zId8g3bUs_cj~+lbf_IP&-SFu@)UEL~FK!-_2d2$558E!tMK&1{ z?}F!}JH`jYt#tlrUY3t)4KDO&l6*Hu``@qTRdR~rP1r@5-NBo(i#OA)=XdZ14s+{y zkJpN(oSv@pS9^P1>)@t^*jUrkMt!qsF-c>Am9@9(9_dq;%k|rJFxL+UYMZt6u8_K} zOS&y^KewQ;P5%}~dpFX|E1l-h0oQI;ga!2oYE`={{|~*P5I~DLcAnU~Nog+E(_!z*rl1U`*pNHH;sxc~D|N z6^HVa@)nhnGG+R|n6jm@$5{+K-TN((8|!+oVR#qeYmCTv2iM!2kZlVl%t|HQM+w*M zqp;*J948&A?=LM43rLxSnHBRJF^ggQIq^Q{NiR`Zr)jfJGLE)#4EJJTgC82;5Z%P>BM(?mEA1fMC5Frg2z~6 z5kO7O#^MIv?sdFRJ3Il#!5ggO-RbZIsN-RmE=hL}!<*kn<=zCM+h`#dGtWzmJg9@+ z4;#smP@$l?LESfRGVG-Qbr0qOAKnF#8lq%bMN(K^lC5(PljxSr8-QzP{t1xm znfbcsYe4Fr$K{z3Vw=gfOv@l+TPAa$e!mVf%>K6t4Yd{t!}NWRwpat<8AJ;g(oJBV z~otdfEJ5km^^!?P0^>XlLEbuwDD!`pj+KJg-w@)fk!&7@bUCSDD-Wq#s?O z#anu}{C`DLjS_)IXPD9~VfFt?$Q4K1>p4qK0#i9xSC`lB^5pK#K?2RUb>dHW6;Z=` z;gKJ5xvn_;D%j|UcLUIyR^eyOk?V_}&_wwFzR`|8zsaY8$fYyO>sjV?xVg@^y4SwF ziJzTOROdrBfzAm4`CT7;ro4_pK-kW%&NVgj7A^ehnDy#0F9vGV>teUXjc>M|8x54r;-~?wSKCiG`-!*>T@P?13{4+ zWGU}9a)YhoncU!ih$s06+X3cdmmUXafs=oHPF)|lNBB$eYVimwKw4ws8Ep1&C#Dgy zwAr()+4HJ~$BmIINxO@*xoeS_b_g|o(U^2SvdR~s9Of%fN#2KI`?crE3C}HI4Wr{M zX?^_#e;>1=UU<)K5)SGQ!H6;!3YY$%IWJuoyMCrS6zevmmp-^c!i7Q<0OA+vRkf2S zG(zR!eJ#CpaZr-eNd6Y>ShsBV^D-$fkIAZHqTOv8C`sbziL39~ISF|UH#d1$BqP^+uIMs_0$#aB%xiCa3d8p(^qn)`8ix`=Zd2k#) zjgV)28|Qp)hF9L#>!ewF^*Va5F?@Ma9Bg))pLUh?A|dkU4_R|@$zDNtbP_)-hiIyP z{KA@TRy z4Weu4E)_K3nlPKQVaX~R^<5~F?F3cX7oXqvPIv;-KH(HNtg@>ZUs;ZTOH2OfoW2y zBWhQOhT|(pp-zTetx8eN0pRcyU=9FBqyTfcv6l|ul{D^$lObFUW|Sw)WC=0}kGqZL zhh4ZiVnS9}TAY?bqWf^7vI5;BQ@Z8=a8wE~2mA@Vh4pl%Z7-b}md?}k!#cAX$;6Id z8YVK=rrn-8d99M#%^%V?h_2Q2Oa_ilGhhw?$D{yrkQe2tQTBP;%hO!Tla+nJcxA8i zV0D^+IY@C$3NXi3Jea?|^meZE0BN;rFm_6EY)Z`>kUuU3m;=D;Qh+%C9G?Qr0pNrb zU=9H5Qh+%CoR|X40pO$*U=9E$rvP&pAAQq5!Rh(6z0esMJ_Q`#tasF|qdtaT-|&A> z{!`^Q#$h5NtWsi!9WH1%cQxlKhU;*NoZaCveb~qH3HRhDnGb%-x~7}`>5X>ASCc=EQ0KhArZpipZId9!@5?@F1nE%RwGxQ=p(9# za2N8T`|@f#31~5(g*+ysT$e%7ciP(N$CCN(d`No5a4$gH#91^IgarNAX1qq)44Y}a z^BA1kh+TQ9eH`8t%LgRc+)U0S6u*gY(uymUq{`8URn<2))ud{h+LyWqd+5M>kuQf? zl;6sCvj~>wv!nkgF75D@gsY{DRglh8mEC-F3n3tWj8FAj?!A~dG_H<2e%?x8TX`l~ z{WvZ`{|Vi!*cjUi#} zbXVH#Oyy-vkGY+SuFiBFGQzY7Is26AUe4veB>S1@vuZfpmne;mslLWLNJXGq_h#&3 zq1=PCVK++U#74&lwoG;)UW&YcwQ_ZOGcachLR&wV7v_80H)x?+>1+9@zHNn^wRRek zmh6s9Qw&TJ)RS5mL^pv`34>m9xG>t;O>ivqNjSV(E~&)WMuArcn#vx+yk_t+MNXVZc<3??Mm@%7way?I>)&`BX=zK?91rkykqST zDN**I{*Y3{Hl{zM{E3X-Gt6TTznE<@WW5 zRDpFwy~S=-DiW$s%egr$ZOK6olzj0bIu3fwUS>(&z4+VjK-cKb;k8g%l6MaTBeLBx zmE#T$Q%Lk{L=$Q8R$p2My!&*Fum}H6}gJQWqKBWPWen${aXJI0k&Eud!TpW!9Ec`+{NIduj8rm6 z-z$4F_H|1HolCrjw02NhY}4aQE%UM;Ysx7>d>?@DNRvfXj>Xa^<9FqN_;EomL5YZw zE*5KYu;qg&X!XT&t`k4%6i}Nx14t^jaUo7gWOQcyX@Z=VW?cE;n0W4t$wLCZ<7#)# zruk|ydF7}Y+iiL+BfN{!cOkNt3_EL2Q#^4ZeJ|WZZ7gZ6r@5KclWW6sh>xlPYXMb* zx>uXbg}sj=)ce-&4L9)SZiCwaF2a}(G-JPD_Y|H7cPHpRk<+ZQNsXbRTJOH>FeV4R zcTzh_Y|2M(=3}j`%?yFHhvx%`z+x$0#v*Qnhz|R>le6LHs7yCEm7UqzN+E%^rJ-*k zZhOn+m0}uDmc47X`^D;Kw^GE6VQ<0e6qU>HJR*(`^v3r9wTEaLS3P9=eLOI4P+y-^ z7P9bA?P$4o*k$ev7gcTV;yb)<`Y9te?nk|DW>~x9^L}{K3vb*jPixh7U4My=$K6-d z)yMMLy5t(~L<%j|jb!PdE3DF?Wh*!wmA)DlS2PG>2gSOZi;hWx(Yd|#GluvSNTe0t zlC(3eZ(8GL>cs1JW-n2Hb8`8GUinyWuFfOoVVdnBx|!>XIqyuBi2T90AKWIo!V`}2O4c1p$t!7)F-HnJ29={jt@bgqC6V#owT(c`@7Uf2MHnxL5s1Cjp zn7x}6;w;lWHx}nh4IG6yoS%=y`EmnCA%=rW&esK&QM-mYyVhqfg9}`ZxtUC+taJHx z{3|pXhb!6W3GFTMUN?-7O|_-Bh7#;WQkB~-K2QE_9l?`n>O_CO-FtG>8(?t(GjX>~ z7;tS2_tFWA)W+7jsVshh48?^HbItrd*vIHzUlEPaYB;iRlBHnyO>}*3T)tT!>xv_v z!5Q5MR_zN!9o~pn2YN$-Y?6>kW6ubA+S$eq#SHIaN{K$lWR{%xR9YKkPyiJTZ7%MI zV9pt6epRlgV#W+hi!~i=f_ht-x3R*v$W>@WUxIyVfAR$Og33k-+19-T=9I28ru1)Y2Bta+jv}ryKA{hnHv%2nCDtxd$~|(>ApU#itaTFTUzo~r;C0q zBYElrS|hO@NOZ6(nM`qX@8)(ty31B|uli{;Ve^e`!d-T3p0-=gX?IbbZ}i>F^<~xA zL;Tb${9!A-^0Gg9si<9RNwL(e*fZfHgpY=dm3=oh#>#@NjhrT5(^$y~b81!eOX=FD z$b8|2=^6Q2(x{Tg6Dujdtucbo9uM3f8|t5d_h_8GDi=LUqOIkgeDoNOHlN4DW=r63 zC7soFltK6v0+M$yel%9C$L2!mW|a?1@3Uo?%{^~`bZcKFUNM&${u*B%zv4GwMtPiX z?d$wR-{40Z2Zco6l*ih#;xADAZvj&LZ}V-$e*#}qeATV9Ey$LGb($r^)6_U?7K@qMVX3+fuajAq-v8BK6Gq@LrN<5PrNmEyXil*xXiIGh*#m~Z$o%FL@$$vhd}iPx_^t&mU2 zIijPZ@Z)lp!cPj9oz#1jJ8d(~0pPtUz#IUsNCD;maAgWG2Y{cTqp6=0<+U^0MFW>9?f~&l^a$+}?3%^?Ozruq{_w&{`;Qd{p}hQ%k=eUw0BM z{#MFR$&LJ8@d?F3-(+4}k=U?%4Ht51&kHwS;v@l^iEs_e6Mjp-Uwc9DjaX^(Yrm8e zL-mbF&k53{mia!HUB;kn!=`$=22>z(_51ayzdQc~{ZQ5m^o+@t$euCrqpy;(-krDi zOzhqH;SY#1DWu=)4JVK z|Fz~{N9hyciKq>WG>^1_5PnyLNtJE3>v84)pqNVj2Ovbh1{G<`LgoV@U!NkIgRxb+ ze|FWXyYM?iV8Titba#O8ZlZ2&N!GQq7G2~hs#u~!Q}A}%KAj+Xo~&%=zI205V76^{ z7o8z-r#U|cU|{<%2yLCCw4aT&lS{EZ9;?_Mt>`ymzs#NiT5kzidqbKr-cdd#WGV+hpPQjDOJ|=^WezEbqYGqCerb%|MV`{VOCutoyHNW!8Dx-H8g! zR`7C1tJGh6k$B9;q8NRUX3J8Wt@-u1c=cHO;|9G#^kuAc)gL3`{#jHOmWsx_5214TW8h8YbmcpT;8!YN^}=xq*HpG;Y1!U(Q(CsbbT;>)4&ytaZig^z>;6GD zBOjI(X>48?sOsWBgOCqD&+MI#-it_HM+B`OCDLZ~^}6)d*qtGUH8$GRC3RlMdkS3# zM(kN;!Bi~q7ItyA?R{P%T5)umFW+QeuO?sN5a>FSx-5+we=~I@i(U1KVtEP~Rj+7` z8DYpM4|A3QS+oCzV@#vj$3JP%s1M?8(D1FlwHu9=@IKM-T@MirzqyCRze{N}`by}{ zJ;0U0$3ny0OB>}mm(uP_d1_g)wW*h5lRcR_n)~>)w2xyMBPV9cL`EJ*+LM3cvePJ1 zI>FpU0FN6qdNOyg;k91m=zUF^x5?fSr=)pv?^$B^rPH<~WAipKoz~C{KAV%hG?nMK zPNk_X+RL4ceX0xhP`$+qTuuCncnpS(Z2LUoS)g1Y3(&G{hvH?o$oj_p_}wxxY9XBI zPX}H_p=OYF<8H-W{VfEuTS`n#jSlV3r6zl`2Ga5#;LSNTb>HAkzc($r@3AiR_NVMg zQf<)WzISg08L!P<&oXaR^I;3yuu3srPu9Y#XpwGi!N{R4!J~FXTLko9^cK$n9$Lbx(kKUsmv~yeYsfwjBIljQqu7-Vu+QlThvC*UMrm$mrRN9Zu^jgmIc6R-H zwYTb4SHAs{WjNz>Is76&G*sQQn@yPysFyi>kPwW}Gmm~ru3Y$Kp`uHwEoBf*q-^ev z>gB}afpFxTerQwnBrA3;S2;TuKeHazbPBNeBo`b$1f6Iypw{wkG@L28BxfGtz>i)0 zjxG*>Hv@<}Pa!@h^t`#U1>v?mII8B>MXc(VU2{W+E~({)@S8HZJ=9`vpAD|u+Uvh{ zg6AEiHvMO2?_xOYMiJLaTjPh|v0FDqH^S(A^ge#WhsiH>r~zT*@3sKIM(*EmY{~so zYk;X_rFWA;!bd_9&ztq6?Zmq!>=L0(;TAy9#G4&QH&^*hcQ10^JuRbReg`z>o?UCe8Nn-YXXifxx7N>T2D|& z_$_e4Z}ZcdulkvOJBQZ!&WV)$P_<#MG`X_7eF!)VSgISRytf0ST1N+an)ljXylcG09{=&vW^ex6cvqzb+ONOMQF^$_`-jtoaL5=H|^USj!{}h5QZInRG z#|!1uLfERNqqB`U#44zMY|q=X)X8HJz4GdZyLTK?_p|(8QF@;MF&Em$eYX20XWbX zmQfFjmMOH4@>D89=wkI}&1y+qSeQu1@^){>x;!lBF@}1p#P=cPHWNL=U7-rkqmwDj z$mS03EKZPy8ELlnQESYd0|PkH+!J+qQ)sH!gHPUY)*iEVhib1re{qnt_fH z<(!R&Rt9AiYZ!o5=uP(AM!DR1IM0VNKkq`O_}ghGuXG{BGxt)jbZhEf<&}0#-KTo{ zsjkIO$uJM6%<)U)#c7wM#ebIKb2^S;sL7PRwV8+RtXj6k+UhdQtj93y9bt8otvyH- zhE{FhTf5tsUzPg;W`-vuW`+;qiJmO$w=OU$Xcs${D@~oXBepUMqdPVmcx&Nh^5`o> zsJ3OYE#VYg7;9OhpQEOr5bri?<<4ZAP~9PG+>~a7<7PJHrpu4GY1zoTY~amgJM$@F zEEgne+P%ECLsH!%&)cxUJ4*aJDX!cO)9gZ#DbaEz>LK#v+G@^wC;YgY`@hKNjz~la znNsWMh9KOLK8gj}o%l>!vU@H*4LaT7RI#Ep+a2*Ba}K@!gLCmEjetp6r)#Kt1PbM; z`Fk3nnT|~N5fGmie?!3JvSHv(et~<8F0QX_R5HkS>Mj5y}}3Jj;RS=#v?q zt50@#o{%0-_=H)rz)xglGI5p+fTe!={f}uQ;ddD@Duk%<%O>bdc$e4&)p@3!i%7;Z zNKZhauruC|;+Q3}Abr|1KAPL8o5P%924N4MAi7@5f+rX}QDo^;zVv)SFODs_UX9+p z)L8E(g@jLP^cHG_d>C=bB)aI%xZ3@eOxO!G{2~78uUS;Gqx)ceQCXW0xHXr=J1B`~ zdP}D&mo}{yW!A7C#PWRfnc@^)o#_ML3G&s>_+p^=G;@atTeXL@6hFCjiuok1?li3| z`fYAu8V)pN^`~1$Omy!~^k$Ew`8@o%Rb<+1YGtA862GBu57?+@N(w0`^S?2DFdcC-Xs77G14fyF=g{U?8J znO2;{xRa>MG=mI&)&=gd+pnKA5*y#U_{n7~(uF19vQCkBkHfln@Zsl|RUG|}TQC08 z!2W|96q1R5s4CZ~l~ zuM{-zpf}c`T#ohz|KwX9zEOwXC+O1-`nNjtD}p}ip#7gp^YA@EKjokY)uBj6y}@f8 z^z1s+2Qc_H2feip#gdsfc&3AXwGKrW*Bd;>LH|;Rq6zB_BGMGkIzFA|fqkbph=LFY zqS{~kNsHs7BlV_DcX%*u)kfUGuI-_h!b60lfp?JORc|Y5;pdpR!yQ2hKQEWOPDe~y zMy-SQZyTj#$?l1L*hm zGTE4Wrt2#VHqY{3q~!Y3I;>0;yq2+(Rj(c3ml^qoL*^N`w@B1P)+K5p4C7J|aqH*T zBtF|2wC9Ett0k&HpfWo?PepRrX-Jh2J77%!1e==40PsZ32o1jyAU!Y{-P5#^=)0^wUMcDi6_tm^l~g6*Qez{k z7A~(8_4kSzxTuSQmgcD6*P2HbUSBDG@h)k7T?|%faUlqIqgWJ%#c{4rzsx_b9lBOW z$5glHKL?&yHs5xIaD0;^Bc2c^dhm_vzyl1IxD=8bR-i9nq(Dd zi_wv6AyLf5my(3dnbqBL@dxUj#ku&_x`%c1{dG@&E`Fl!nO)wAg|ONH6_zECCe2SMh5HH zQ*wj1P&TfWN(pRAesbQrcl=Xj?JyFpbOBN)jfds{dWIsmmCviAu@!Y_#RN^~jR}q4 z*J-pSf%Ld#Y3Rk6^l(w@q1p26xbPWTq9c$uW;>RLY_i#1x#93oopQBx@`3=6Y2@gc z7L&463w}!>>?7A~@TD-$BYN!U3gOOx%9FWYVZatvpoK65me6~8i-uQwnZc;hR@u`s zB}<3W<2=ZFiT^hK^(XjT{0)bmDN z_v&0DFCc5D5vBCIyBqZPBJZLfgahO8zf?-;XFPT--m%c{;>DDp z(E{7c$G5n~rvXuOi)p>2tqP?OK*jPNY2Y{5I*kqFO>Ea}Ty)o9;?KchYcfk`z%cPo7=ip&=K=_&TZ(j{rBtu_r13Go<rH|0#qi`)$vyY*yn z!d3|A^16vx+%Xn1E6>TScC8C;i+98OUMIL+XzuB{m>M5#?wQ$UnQa^c%w&V`yJWFG z=AKL1$HVJ5`&nAng{(~)HLK0@I5oSZQL_sv0_KNy$TX|J@b-!+502Gi(UOm&<>mp& zop0{rbspt(SfrJ>V!h+lK};BGnvJV4I?KXV5!A6xT-eb{TZ&E2r& zkIR>R79J(QW&1ET4x)f5K;I?z9WfB$n0m_#Z&;?00Jmr?%L@yWx&mzZ_d^%&+K1!i z$6gp&re!_uKYjY{cPwiMD?u1IZIIoNe5*fo(6s{#aol+4Z|)sfkE8pP%omrvi+F<% z2&FZiud1@0?9T*c(=X_fI`q$ia%*1Dee2NQ2s-4TN7kXw3Ho{mJ-H5jUeLoFbVD8b ztf1OFL-!qZC@tO_+|fa=s6(}jAG89t#viIfzb5G4`GLZ1b*NGJnS(x1hjQHJ4RTE7 z1!m^VNpU);NDZA+GJ}$iCcgGT4Had> zI-rGhKufv~(2lS&FA?xprXx}{$fQmd1M#=TGHGXY^>-p*!?2m2*$Ol5FN!S5`fq!lg#=y&Ej3*jzu1vqxa(aEKqbicI&+X+$uA!rGp=v5j{ z%N_Y>PaJJQ!L%5Y{nKxr{V3_?D=3oLS|%XU0!5OhV}G_9WXpM8sIX*%4&G<)$Z$80 zCxZ==$sz^r8FEj@FPMaxu&{%?B~QuEBBJuvE_^wrWCC5peUl@dH@!t8uN0@C9g1Fo z)EHd~2FwMWSypXBijvNoE4+$BAC4i!v!wf{imh3>Ui8r zG;7OYL-;+a&E|-!DgTL@6J5y1!oiB>?OyrzDL_z~KI z=~r>g_Zf3fcUP+1zPI2!>^LHKvucK|j+^EXE|bxeY|RyPW;WLEJZ*A%20tc`noGv4 z)$atDOc-6 zX{_=s1!H=VQEyobNtSi4+7aZge| zsIQMyVmFIs;5ERvg7Oka@ zTcVW&SZx$ap;jM3bSA&F+Pw%!I?b1wg$|AN+}_@+FKXoXN&4~0sdeP~ARWyLjWEZV=Tw@Lg?ADzgvK z+nbsT!!;L7;hvRT3b9>bk%A!r%i7}BF>gw~3v*9y5UkEZym1{&iGNLoJM(tc!>(>I zqPHYrQ*^0RNZT#|S~^?Y0-)GgoO|pYwGGVG#kqYKeP;J%4^x-8&wAV4@v@IOw-5#n z8w@qw73c2s)ZL%kwHwE(-5%UL(3?O8P9H3|@EQMl@H+zs0Y2dIMSmVB5B^C+TH?Qw zQMao;cW~5!rhYC3U0`z_SO=z{r8f85BBUigCWThd8{F*TuCIem9(<1jy}1rrRelS! zuCDu6mZMI$yzOMYB$n7Zv~qf9mPb~`4O+#{vJ-{mJ*bHCKI5WPC8-=#MPY@j(!+Gp z$$8>ZMVK7lOXBs!G!KEYA1c7iE(ckZ0?(E*0fnzIUp(>i;1}G@hIt4_aN9MAJ&6jQ zd5Ako-qlc;8kc_E&6!PaSE;?HbJoSU(VO=k;lD9w`JV1tokH8!TQkE2M*Ew$qgU5M$J;Na^MH0xVZYliF3n>8i0lT@z9gYBGw0n%9$v5U zB38e%#$L=;y0TpBiS`4_G^M+YmBEHnpw<>_i21a0ir#HqziG@s60xGG?^yLt$rX4A zi3&tK&=tN47FTC7ML0-HxJ&@FUOKb9Uw}K|X!UbrEl?!7&-;4^U*%XR+16jk`>D!% zcsMaD2f8lGEP4c9({IpCc}+?vWb6=sABN@Pm-#h)G2?0T9=-#cU5^$dEXstdps)uz z*&fraBd1}2qd?cnkbhLpW-ekkqee!i)j}v|;v!3G9!!LfK(MlJeG2Tp&jz;^X}YX2 z_jHgHS=**zL7d`@DjZvONLP~SF1xWq3gj+>C3_F3gwep^byC*vaCcnV3e|37Y)5u0&XV2e zSPEaTRY1zq%G&KSbkB|~oifACmP6pjf5crS08_Ni(9tpV-B?8&DYpK`XF2c>tYeee>!3FeM}nYjMVd|cfv{yXW^%?De( zk(irIXhg_er}N+=V%k8Ou*J>cyI6=L?L=(5f~rNE%iMc4x%X~zAAs9z&}eh)l+FHUte-Q9A{)~I}h z`#_pOGarQKn4B$_j85pgga;C)@lbq*_ugrg(`PK?u(g;(#A+WRkzBYxsFt2^cL4Wv zYd69y`h>rlaBh?scD{~%1d)>={B?A!@F`}B{wCmB0e>JMc?hsdO(#D_Ps*RhxuFabjrtLcL zm@+&LemngQWoC`alIjdLwD0yj^W_?pHOW@pFm*rMc$QxF^vEE2% zX-}TFdrgN^rbuOKK99KxhJ?}>ERH#pG1b9L)@cBZRUK@WhPy)<=%zC3>C@A5nT)mj z1JzcXXkntdhMlY0d-46LB8a*a?b-LZ|84R^TCX$SBLyEjCX?=4U5v<$GXo|HaEUO{ zbbgL7rBzN_ZF%Abm;PV*b~n>KL|vWl$6a64dDznw9Icsnr-lzR+kB z3-?V8AGkNvec-+|X+;ufpjT{_(eF2EqyJZdotFCU1hzl0!%9B|>hQI8AU}4*nL-Z& z&?jxlM5Xr_^{1(r_eMi+GAV7Qqu|{0xDHs1 zAEOf7m53n~Y|IU5L(M+B6Es|WgbHaMT1IYF%Rhx_Zp?LQe@I*yLOe5;mO*uSFgGwU zeo2Yyj^VQ!Cvws67*?gPRLOQ`a!az$N^&>4ix~||kA2wqt$mPKx~=5WurjxoIO$wg0Uxc{WphVq}L zm}^S0>87~)q4Y&{JAaoG+}P`3opsl{-P`e=_g`LR>V$pWy5oHB=W8bviDL5XO?)0*TQ+E8HpNYzx3^2k`tid^^_dRb`^7f!^q>O8-8 zD;yiPR=sW8*4wWR({XlmMQ=J>adLP8rB9VCO@P`|I!nEw@So@gb5@X!oyQ#Gtq^b3 z?wRH6Z%p^l`*6DUc0Z|@x^^RF9UP`~rc7~n+OXRaN=~YJ)%dz!O4BSr4c|s-!FZT9 zGJLz-;W~N*!@wuysT~YghCgjiS$-J)lsR>MZ1@hG{g?aUNouLAl=KNDs$;FLHMGw- zue;Ix*NuadO;DUkCPO=I95hEs!(Bq zdX(zYt169pW4+>g%<|s3q+R;yq~^i~*UEvo;tF+rK;prt;V&=;t^ zDSQ3P@n&jot@~dwiPH9yXb$>BbLx$&`VIwALlYIot&FGBnGNFGX7P=lZA?b%q8M%D zr!N=3NN02IX0Bo_vRBNUl`}QHxcFsRwlua{WKL^}eRUI$-_ONeAS7hM(_xlfrfx6q zfMO4tZU{k}2r=&4iqD9E@L>?DPqD=rb9FHnAAe*@GZ!gUI=X95=X(Pmb^Du3nyZZ$ z?VHLFSfjW?H|dyc|%KYVUnK9ToL^uM>Ok5W-QMs z)$TP$chS>+|6)gElZ+_#U+LEl)i{M_F$39Qa^53nI>6m4B+Xkn?- zGk;WbAuHc3R&G^Hw1x=&kSeBm$TdK; zmauW=^)7Gf{B&Lq>>cL@JtQ8-Zl7Wh9Y-K5Jr3V;&L%~&Rw#Mh)&C>SZ1lSE^Vy)u zyG1H2nL8d-?TrKP&D71CjSnjPm=&u4;GO_(CDYwLdStUDpM(@9e?+UYD?`Rin&{z< ziQ~{&mE^Bs3`jBwU2{s#e_FiReXi`jcepn#(OJ-Xe@Ae>iX6#o)V-Tlru$a$Vg|9q zsGP3Kx}C4>4}`x_Wx^s+c&WROuzEKs zL_NDaQW=ZWFPxJNMf0x;&{8twy`LB-6Te*>cg;@T>pNyNU+rpm;ZtY%k$q;SC z>VcuhviW*))>@vOk50wG8KF3fj;VI%TnWdT4dCP;@ag7*KvuPGuAA)5U*_7dWNnfY z9ZVWFo=>y$WUH(~LJ}pi)WYR+b!qx5-%7Rkr||0J^fkT~Z#z2d6OkXmc$2L?;L3Fy}NnRD+fWOT1 z6N=Q$1LDTHpu48lADsb^V^e;sw@NOU_3k14$=a(&X93;g6L>MT6oj{ezElm?wG@{# z6Gv31H-lW#QAFhO@w3zO)V1_|M8+SE0IyRhqvFpm3^22qR3y0u4+_{)#T`j7 z=BwXf0EZDIh|UIK>FYS44x)2#_AxlAT^>y~_2(P=v}Y@oTjPT^Ai2@}#f3+NLs3kO zG_3g0_QS@;lYn1od;$6wsI6qePr#b0A8=NINi!y6X*6V7gALCyQuel0&MDY|S8v;- z37BChm^`cEclGC=m=A&pQI`}sktl?BKnO4zLu0_7bl}BXVc+h+tUVL#UUXk?6EN$J zo~H&IScXpMZLhSpKtFm0o}s(VkxTe1xWMa%mDzq}hLbY|1D(MWT`8?C6LcZ3)PJ74 zBv)<0>|+gnNyL9H-%FLMc5$~ssM;Zs&<25(N1pl!&#QaJ;G8e8iYJ^m)jeZy-Yl>< zBb<$O598)K(qce$BmRK1<$0INE4yc!Lxwdz?8!45m}6x*+UwhjGiRzm(Q`n;$n0R_1?Biy5^m{GyU+r23$|cfC@n(v&czrqVDQOU!Fo z{<8ec#&&aMT$a#|9Z!g2u~oiR@bWGH120{wL2VfBqPji82f1{ThtaNvidB>1xYK!A z=(Q&Eh0p7*v-Wj-UYr=td_-B^&6&(jZtXJvKbFq_=GcObUI5WsNVIBuD)Vl_JF;6k zQ|^jmOKuO%lot}vyGbG8&omio4XC+rlgj8wy%m)3#{@<%)5DA9sjQ;5;Nq1u(dG!? zZD8m$4`B5C1kpugvM;E8 z09Y}}S}C5)l#sEP95}u!h2J5t+~ViDoYQyrrX3w__YyjKew*)JbTO#2@+IMFAwCsa zsbmkMhwr3p?S+^!Q0D7MqEp-Ei+`DnW0E7;IA(1I(|4pCT?})pyKGZ6+~YU4W7ol!B8*gG@i^mI zuQzSa#u`m~Zd;$!b+zoqHM&|i!sN}-%@E-YNu`WVFx@-8AGp&r>d3`Etb1BHlxE=g zE||{sJ-HZ!Y3VbHX0058jlD-Sv)cB3k%M^}cse(jxYwyzmlS8d0*Lhyr-G zm>~O6^t>i z`keK9dax#tOmr!E(1f5HU*Q}gjiOGcpy)C}`s%ir_w#0+XixF6&dGRd$cyX^1o5CU zW7o)Eoy5DGcr+C2ggoD-lyk1q-$RIW+&K5Q;EJ>Z+-0+T_!Mc|WvHEShzIJU>`T12 ztG(8B29;i-dlw&k9>#N2bf-}h#0L;qvZA*pC(~r4jf)$_TwA76ARm9Bn8;&hV1S@9 zH9iS^_jrt7$c9gnaCwhpVZct67f%qGWWyf_zC*s!9$#9=A3Z4kqj|KNuDzFnZ5-Xb zy`_F7rzPI$kw)+4nH=?Q>|i2?t6N6NSEVZ2bU$aYckV6T?yj!}-tmo4(b`ZiO&M_PD+CwQCoa_1Dc;C{Q^DBqK73WTQ`;Bij}h7N1xZq=`Td@ zKi&^tVvLRd35jGh)_z<^gU?fbmKe|IgZ2;~ZD7Abz1mjV900zW0?cuIJo!;sPi=a7-JT~6= z-T-`CYI26?*CbmUornFC0WxC;WlguH1k2Zc4$el!O~=b((VM3_fa*G}Essy$@l`HL z?nz(EFVcmCGcQ0wEctrM0dp|_|CRtJM%~SM+{3&5Gvc#owLIWuFZe0{q9l1mLh&yN z#c!k(%`xJKeHJLP&D|a zHFGOxn-|gUlFVd=ze6T?_yge`EBfJY>eG>_T}hJ+ui|I;+k%AuhJ?Ld#oH&9nY?u3 z-mPlW-f$Cq#PWIf@VA7DNZg_f$yW_ZF@qyPml3B5wVxLA8?}GYlS=%JS`E6&w}YH5|;f;Q(o{JCI;d zdW31c&kT{Z)(3|l=S*WbL2~Vw^pxikUu+~Gn+vg?q|1Y99hl771*>6Ju8emBIF|^g zsh&Yp9xh*>TkQ|2x-Vb9nvpBvUf#IJTcEDy3#DK)ndJ>Z#nH<+g_hiEy`%X{+S+Ez zXG(AJj}v;8N=n!a3{NiX4+MxgWPZNe|6>y@0X8sp7)G^QW|NNJ20el>MXE3<3QDV~;Z-)0=kgl)!RCe3Sv zc9Gj(^8{%B6A#hQt#@Ie@mc~uDu6ot7L8nu@njMd)QZ0gBW=(&$A0n0=>UwYgql^M zenuF1#ty zF47j{3%S}BTNBe_|hPx}8mBk7?CfEImughVtY{qsG_k&7xZhR(LNdm>COFyjl z53i<}j^VWTod74~B1Pg{tuzLxc+>05-3y=Nkliq<{RXx)rJhn!q!~+=B_WtPl~{$1 z)sDEZ8PJT@)4qiDtu+uUEfz^Y>bGW+z_)59Ha=jB&;9~i1k4Ptr#un-Z@rz9?%JmE+*WP;E*>w0J3g3pBaG~rM zUVrI-F?t!*{v`MYf?EmBm;Lteec#5`OF?2j(lxkQ{ zPFoD`z*ut~2d}#sZ}xW4rZuC@*)H1jX0#p@k;y}4oK$Cw!7FYTZ>Gb`^>1+{jPIoW zqgO+^4%x>Tn z>O-r7RRaZoRV5Rw($g%fOv|(wxNmDNzl4m0gJeB#ziovDZ9$GJh`R%-wD)t@Kj+*N z`s-(4yMNV=cXIZ6n2vX92AG~t0AtLtK1VCt$h?V+k$FXHu%PKAWQOmravPl+VT&CE z$VO%#sKFB&HQW}Xf%XxhDL`odhN;05e;fyGv(OYEGzkQQCuWa>c9YN)AhbIT?GNLi z-7GW(2<;L>(@wq*EUC%x{ww_LkN;)A@4i&-3+;Ep*W}LIuX>yt8Mf|r1K}Q| zvPt}u>e4#8BAe=8h`rt6a)SI&iwP~(f0+(f<^b@k6krbZUkw+Md-|bGwK=TQo)5)o zYs_|1+)iff!9KG+-aqPxTHXW$JI7N932ag2V2RV#EAzxa+xRAVxya$n7-)@8CteyR zewr!|}bP8%oxMmgSRbs%I8;;w2+=P*lW6~D#Y)FoQw ziBJ8xC%JR@PYLo03`BVC8zj~j32sU_bgvB%kOD($;DUG-kKBZ z?$7n?DTI~;L5*-Mf=VYfM6pN-;rIgWihDoFqu?KA~cF+m!zzzp;AxS(_VWO z$6z;`zq@CCPe+q~TF*ew#3ujro=VT8CjX3{9eO&O{4;y1JzWid(HiPy+AeAQYsu46 zZ?Iv{0v7+luKAbeB8k39>2m?DGdr{gM{#_X^0|Qv`m42BY(Yr%qhyRck9zHwOm({P zz{E|h93j4gDX1^0fbyc;lanT3!A>3ENf#8*A!oQojB6(Sb4(N$(p#LmI)1$Ithlgfg%?3RKOSYTFQ{$yEhcwjJxxe;g_%v%nJ>_WwM30MHe!1h@a8+Fpv{5AP-1V0dpAMIRSMt}VH}L9*wm`dOFMK1+eO zErS)mtVVwUly^^y?lp1$4{>ID{5}| z^El)7uj{6pf-q;veZ3(eRIzR;nqARR6s2Dl_wU1NIT-!|u6%Sqzis73RNMo&+G}6r zw>LNZpgt|bU*fYR_ho)-hr{mLA{1r2!qpHX!b5r!+ zrMGmA%DO*nLDuYE{CW+X%5@DN#K$Ld|Btrs4wItT-mdAM?hPz?11wQ=*LHVyg+&lh zk)Ws;Z~+le5K&Zu49>8q41;32On|>ZY=G$&}=yWl4Dl5~w zeq6nO>jp@csL^J|*iUc=bV+pb@#!`R896ig0$6a3hA-Fd;(C?jDj*eHrIL+%$c}i{ zgTo#iAL+{Tvi2%SLM||()4wC0=jvxV=n9qBT-=JLv^5R;QMk03?^||FFM<5-H7k&J z#m-T5{9qn5XS@0%E= zD)v_;{Kl!5D}#eKXrFqydpY#Wf-Qp&;o>dh-y!1P(fWs!3L^-ynykXdQvEn9SO_%H z$q*%%qu`pL+y&4Qahay{6zx4GBn|?epl1rU{hH$Z;0R2#C3+) z9)Q}4xT=e{bbKy}P^wn)JEEkUCx59}Eu#1!7zO*iM4ef3uNf5=G%unf7)patJVO&f zaiQFd;z9$(h33C0F2qn=i2rxRNsa|-dGZ@s^W-m;HGL7qSz>aEFETkUXkJ9U7%-=} zP(pE`+>GKv1I2~rzbP)nP+W-rcg0DbQ(Vh$WX+SmR95yx6le9wDV{Zo3z`?vk%&3P zg%XMjwR;)3QybR=R< zaiN6bLb(~mg$9ZX&3{u|h@rR;|L=;EJg2yp-^iLLf9YbjbP>hn(JFqNQC!fxh>k?e zDK3;yTqrlAxX?gxq4{r$3o#TI;{RQ7lIIlH@*7#B@{dSQ!|SHm#~VAi2TJO3iL3dF z!(Zwiyp>X4;io+K5^uEN0g$AsRslQ&KL&h=;0*-dz>n0);3HsiR)5NS5dqucN1vOD zaje?lF~*p}fHU!9*gQh;34-2Bn6A?aK0|O4X^58iBw;#Mv$;Nt?PnXWwOgDK#?Iz-!@HcTP7q>I1id(t3 zy?GS3rj(rxX~^j{<#nnfuku7YK+(*e>KYu8qPSl2r@0`=aDi^!`WC3m;9k!Dmc->K zdGI>Sfw7|CZMen3Tlj6`*ToAErnra@&n29ebPI!5;4et*?Iq&gGM<%D=#^jGbS*k; zZN+4=jlR0H&~=LBB#k0DGROFn#~^b03;ZNsLQm64VAO36I;AZgE2J3M`CC~^X8L8- zYQ`C=Bl|u4UK#<}`9~wY3Px4IJM#Ok{Jtl@Yw#PqkDvdNK)6n-Z(q%yYlfZ#@14+h z44y{(L@M0j5nyu@?uf?^78<8cW9dbWDh{g9EyY5e)We5!hMJ)xkImWd-UvmsYToBZzkSN+h?%$GcB%}yOL>92rMw%L^6hd{^1V#d$p75xTWSb zL92!;fkSqSF;Y7Q`z~rGXib6Q))9-2)rzAYrQTr4SPeCxI&}B3ieCRY$?sWSct2@N zx6}t93*RIbZL7Mm+~a;I@QSHnV6`X5u7VFlxkMZ{jP-446R9@J4QBI; z6+2~+TwT1dO-uVc0_@8X8&awc9aJ0gSE{=z>!RB~A&IfLFiT<_Xv>J;QA3_cdOh8*Q z652T)-Td4U>mx&Z{pE+}xVY*n*nGw2?S(_Hih{{d6x=dKS#Ay=r8Vm4VWpr>c}iz2 z*rB(he>KJL46EtKv-r5ajK4V7v}1v27w#M{Y`6=hLUhV297P+8Z{=TlfzI#a3Of=T8JSN(Cx4% zfNhB+3W7Jumt#wfq7B%sUW-Z~lhgGhoYiQI&BFj^wVkM~51iFM*pP0{>iTf2VtqSj zHJV->M@FtN==>HFfh$WCH|L^RVmR8tKOi*6(7GezWqF5qa^dSuc#kk#JgxcW=w00Z zMt(g*dht|q>$k@sEO9g`7vK@gOo~i|USS0BfJ5&PFrJE_4M}rJwKXxf2nod#ik746 zXz2QcbmFOYdf=i)20=LM>)~oFCuRjmAZAy?WXq6=cpxV32iArYk8tf_xf&n1iZ92t zm*%>K;aU|k5f8Xlhk$rC)~U)wYzXPZ6VkPIbGE28@%o4H#It$&zJ`9gkX}4F`pkeZ zKs=CqUm>{VZuj*;o=G9%F)d+bR$DL@oY>t&(Q4=(upUe`@g!ms0Yw!AyF( zlcB5USTYPTb1dM^cW5`b*CGwKs!h|+=$Rzi7hFS^b4piIsd8+U7Z$Gk_V4Tp7e{_8 zgOz+SmtzVvGabBftkv6iaVFp4+Y|itz1Wz+M_*RLu{i5pgyAf%^;GHm=F1Ax!|+{uA=$~Ai_R|Q}-U`E@SJ< zpSN?Dc3!TJ+GbBZcZu0+;r$6B)Qoo0YvE>zn0-~q_-XQr&mIDh^V@Wjj%?^n-vA3W zAIbpaAn9=XZs?^ zy6Sw`79f!PgL~&{dt$owPx#uV-bdHGNY+Ib$yr*#*XXn&bUi}r-qDk} zCtHI!8Da7%l#X_iF}C2QYFFcP_bT*TYKv2c(0@AoPUdi=>gxGsy|287s@+}NlHVYc z57B+n&=HNH^8QJP@eOFxv9sVWxFc)Dc zkw?L4<5#1vI>5=yBmL)~=b=?!z^&WSDX%KdlGZ8Arsyn6;S27E|3yE_;s)R6^!u01zhe*t{W5U0emIwDAs&)H zfO=C(G6IxbL}$^l_@$EH86}BANjecF8Rc)36pq3wPstptl??N6dODYfM;&MLkfP-2 zcq4SYS<2{-Pz5^v1g8y-&&Ma|&+y{b(6V7@YLO_uk!q8_0OQruzrr;ImJ#u}{u`Y| zzvH(PPEWySQ*FyQCquNYvxv_6GHej;CIyyJz~oOjB`BpHi=(iS_&BxvFNCy|=EH@- zdZ4IW;rPjoQiINQLxpw}&;mnsmwVsLEUIe19A{Mm#)i~xP&bQXE|r9MAW zpTn^50ngBfPDCF@vHB!B$8qnt)IlfXBgCpGoP}kciaFS-XzSu3^Ht}tE*^V|)t6!! zeZv-Mft%@V%@smSI2xFibArfXKi)TbZid*?KS*tZQ<3#6YRdPWo-yBK5Y@g&w@ z<76MdIyi=}sN5^6aZ)uqsLCG}i%9wev; zzQ#%keU?;)w!oDY!AmfEqM#xeON&*M2O~I>fHx%-Ph!n5)*fc4Z(;&KdP0!;CfWj| zCj_ZzB7vS>53O#&#fkPHA&l*|!cKSj1j6daw`DBkC&-EUa`dxEIRuMmRCy>$@>d8^ zffKeQ^}3E=C$b?<@sI~W=?g`d{yQ5%x7Q-oZ5yRbY=I{cpYd>>v@kJH0m^VC{X_f#mq}1)9{HaBQYt3b5q! zT1Xlx#23IcD8v`SsX4tC?|cHu7`oHd#=ij(oD2#2eq`&`KwSED5uo5?48H@-6hc0_ zMaC^QZX3GTtD7#Nr@;x@!d*HHO)m1tRXf7eoPV;FihLjs+2CkTB#jBEpcvw0$$Dp)TbGxlgE8h&bPEPjWhfNEWxh$fL?zZAA z)XM?7$@XAwEf&vq5IM3PiOToFK0$c-c61&Et{d3NjV!lD$PJNQ4NCKzDB`3iCgZlw?leo~BYhE+g zBeH% zmr+j4Frvle;yu|Bqx!6d!}7Lj*=tuV!P(+q=s(MyhAg{EPgXe&|({l}1?q$PTb zCvN)GbQsak5o#fDrtF6_kDodY;^unj)GjBkJmD-2=u62bY0>587S<;ksx(;+8)<)X z1Z0+dxsJM5^?6s{xmKV4hHt8yL2T<-Pj^0FjSEq$Zq;~ZrEzbgI~k>f0Vp%XF_9uL zmh*iFUO3~AS%q5kJ)YvSN)epyVNCrU)`Fb4!@jS;>~_uU4mkRrh9M7wB;Kn&I2)_| za6H7!ihldyfQZz4Fo(WTp>9_fK(Dd@N2KE@lfh>)cPlO~kc&{z-TM=1Co)b!_D=FH z%-%)EDb%CtzacOy0;TuH;?K4|QA< z$BSAWf&VoA7vujl{BvZ0U!RPB1^(H)ybJ%2;-B$|hrH>MCtJ8dPva*ytx&TXU!Zzy zy=FCf&7t?JoEP(`A!^SLtjTS0tI6%1t67bCnvm8G;Me5F|7&ss{x!KH0c&#G>S|Uu zDx<=f;ok=3}VA2u6O@M<&;R+<|5-Bej# zNRLQJRbEKWRBme9ypWtVIEF%54}qL_vYcmFz}^0smy#mhe+*8`1yZ*w&bfx0*a@fV z(jAZYRIth3`Gc?5pvR znSX9#h?^RWf?}5;WS#|!%u`H853gJ&-xe0dK}ighN7B*DArX+CoWxEVzW6XJNz zYe?g6vCRvh61Evs#{AK#{2(Xu92t&5(^icmh{9+AzT5mR{ZU3NB%Ff#Fuk8YBDGa( zm28YWm7WLd#ZTZzZn~u9*89aUqKvCmH8UjnHOjS4aU(U&+-hgF&%ycQSfT#3^YLh3 z|A8{)vTyJzIA&Ji#~3Pg=2%XS3;ZHrkq*bYz-!Q#i0%tZM4rq0Mp>EckA(AkBF7S6 z)c(*LkPA@|-C>wAkvb0TxsDufn9sEgII;a~A_a|l}c3PbyWl{w`Zb<1IW@YkQ zWFo$K%UD5PL$IwNI8f?3UdRjgCga{fx54Fp2sgM{KqvDyBaL+&x88MYVO~CG1w_x` z9nCTGu5sTp?i%C1PZvG?tauQiB?QC+;DZnl555JuL(*g;T2UOcDGzRPET0h6gF#bF z5Fgy+R1?&bLHnB^KDfz=Ca4#K4lzM|aFd7fX|fY+g{Oqm1&jash>s2K?>NU0s-wTr z4H!OB#(_9XMd3e)eku$9B>Jf^{4?kmrBT{AU$6^Y{$YC%nFZD0Rab~Z5SUH@)>2(B zaE*Zz`EYOjSP}e-nXteKDgoqwuh`Ev{eEDZrr!@CX+^CUFoP4Nx#;DwQ1E%v`V>BP>bcSn8ObJZqG_iaGq7!^CKv`Hjhwrhmp?#d{8W;V_`x(W)L4zSQ z0pxR4Z^+4aq?7p&xn5OQUX4XJ!C-_Zcfbz@rHS*Ullcf9Dfi-;oZ91c3`-^7Mca|Q znq7u9Oqe{mC;uM4Bi!Up;E`^F1|4%s@#IiE;jQhan$O0OAeh=HMm7y%THVlm;5sok zn1Cn5YXMgryS;|(*VF8Ze9XkBrVc=wsVndUQpzX$aHuUMW=Df`$sZ8S^oe>xmY(vy z`UD|Wb)^^?;0a5~gYg6Hi2Bq@Qbr2bY%&G0)l1-YFL`PEV65LyPJ|K_{ZWs_WQ59- zlYk}B%P=b<%i>r``!RYmSou$_O)`v!Y)(N;KY1gg=KbCTq~?1kN#ayn@T^Q;gw8Qa;l`5_$tOdm$@2kVXo!rKCCXqf`mp9ufSJj5NJYm&(;{_}4OCI) z0z?argJ><)yio`rx#k#Y?r=T9K1FUy;U^j2KLgcH>2Qv-hdOjg=r2+ypQZbW%)eb( z0q|!s+f9B*tMR)g(I(XqrcK`m|H6$6K~+VvH?pa!Jh=k7k^KVNpuSy<7@MtcLy?Xt zD&VBf@4?jhoN(yN@SS#NkO0>m=E4O5j&bH$H@Ov3#8*x3WcDbpQq5~9H;CE=W*gCmfg_PSg`1XWk3hEk?5 zCn(zr;17vx-$6Df^Sww|MG2kE4|qUb`w>p?Hp`OsvK9qD$ulXEU*e6Qug*_^^|wXK z9#G`OJVk_E?(;LMh-If!!gM7VwbH4x+IB=vr^%Dm9#NfcckA$V@hc@BiMwO9H**WV zO5J3C4BI=IUl3-#(dyGll!xZufY{>6uj=}An)shloP|}EV}#aYTV0?I3BLjBl1^ql zlbwTP6Z`6iMGqq3;CYm{#L(1#Uj7@^*B9RuUJpay(g{TJa87Q^ddtM|)!`fj*sh1qO(0oa9?bataE7 z6~mvU$z}!BtS(MQ$IOq>P~?(oRPZZ-69x|4Bf3tkD2SzCI^!Hq;>@YZ^Mr(TYF>XnD3WJE-Cm$3V9n)73qP3)LFoNInp9rmtUgF`-EdJnRXzR?+x+b1EhTjhzCH25D?FF z%%hjP8 z5J}d7QC?i4lQau0LhvS%O$;l@yoN@zykENl?W>rSC4iwJCLH0GE#-5CXoKNqtyXRQ z#>pn%!oDu9$l3`q(Cv*Z&b|(&wP?vGM_UKyGmGT0TN zpJs)>EB(wI8RtC@vFSq| zEH;Sms+A}=kBJT>LEnT0=1l}jfstsLEfFFaU(uH*r^)l;UI1l`l`^gO&x3gB{~*z- zW`-o!Nw!zPTR!wou+y~A>9)m=o?0w9BQ1_JXZ1+FfvoGy8?ewQ)Rm>4LYvqT zk60^EOBZ7oxM8vcM_x_hkyjPlJ|^Xoibcw$JW81u2~i)nd8*4Lb3Ios#RkQ-1?B1U zO}X3(;aSRr@>fkiWtH-Gu`Yj?vHS%9ZTXujhxYNXP<$_nUpHv==_^TF6Q#vq?6pvi z!%s2@>1GoQ9)gR}>)_F&iD8+ng#3CuieXiC9WWjhTmzoyyc5xFo};>g4&#I7TzMx$ zmVR;`hPiy5n#jL`@()20^q7H{`t*$yu^thuIuLOpN64NxZEZY@ZZhVZn|46PXZz8g zeh42yRpoA=m}@v%$B#f?se;TVw=*G2gwp2YVLkMboS^ddPRgY$QykJYHyD=A5T zvI(30Wo~i-BuV{*a^NP9fj2rts*N1dV&MkNkB+S@-1xhv`t&_aX<#%Z===b)Wwg8c zG%WfKn(0yl<@*i_i4)Nf*}uDC`;4?>Pgb$pNJtFZ_M)+inZ z?MHzH782}6PW9;*$#wTA*ZS1gY4qIM;QOYgGN`2%mBFl5D(;0Ct=7x9*}XOAeaJ0k z(;KJJ@pQcGehkEdd3nt6$qk+?fi>#WZ&8#93=i`cIdlTvS~U&jXAZ;HZ*zje*g%~E z>ka#CH^RkPcUY@-09Z&rY{)->IhiSV&P?J@Gf!J9$6Xb%07G_oGuxm=$00}}RYy>X z;A9R&+~hZS1GWxIegO~{Y!@cKgr{v`@+&^$R!5#lR#^9WbP~_RoeW;47mSZmEK6{3 z1K#Xqy3c3Fr?a?WGqUFB32D!WC3nOa0vAdRf-8%woJ<}*n0OB?Pfgbg3$%$bX)FGY zhi-c|OJ{jz@A z)_nLbcI3W_Cq++EG+{wS48z4}%({@{XeUFM%b&_?l9J-65W)z5Qj)Dtf5jp+jVXks z1bxyp%5J(0jTUCXf>iWjGa+HzQO=?n;1zU6T+M(BajH=j56N3G4LsKzh$u-ME5aTVB*EYzvc>sOA`}h_WqA&(5)xWd>L@)bK)tt*qT22foje zZ}10{E3Unae-&qvO;x${#VQsb44v2e3lKfsAGf`vH-Nzk zQZ%!?)m)BJ$b3Ypl!W8id3=hLge)^%j>}6iB%V$488Xx5f)uSQ$M~L;JSCZ%;cx!~ zHC0tzNi~L+%TP1B71p9er01f17Q4b?(}8V}DTjjy%`=_#F+3lppXscR9fX`2Bv<8i1RhvY| zf+TKhL=aCS#x;$_HM}bkowV}wAh{BaBD@tj3x{w_uEezzKJU#Kv z#=nSN249_frad^UXYG_c6vo+hS4`?^Lu!Jc0vVO1Wg~p#dSMgw7MM7BA{zIKNm6h% zt*{Ns5EpqN{B!}wmzN|cv4%s_ERBl~FPb0sJTh9l$4H!o8p z*{%M!qz=PMQfPn``r?Wa%GWy(0wI)=Ay!8nLi@&49c;<`uI;|5Y+-4w<1Ng(^o)S2 zb#IyTrCrs8xG%D-p&mJJdJ0Y;ebP`)#z9@UW{YXQKyT8 zU7$BU#supcfzX(eEd2?;4hHInieNC;HJTv3x-q1?53Pbt24A74(e$`93hYax_~{xS zC3t;$7)3lIDk8o}cB4%7>5&XOGa5#vMiD(LilY5r%=RB^J9t!dadvmacNfvCH>BZJ zum@Sb>0}rro%+PqPKF>a7%0|w5+?$~OH>2Ak${5i$t2HIC3c9D|netAz5_%s(S1c_jR{pq-A%%c@&(Hk}2bz4GS z`6e@TuBO99vt^TEVn3fgrZ5$+UXr$z{J3YAZgP9hDLd@tN)KQ%!(>|!^Lrn}d3obF z12z$7s|xwVt}4&*Ism-bTi~bWieYRFgWu5WlD^hvc@Nw)Z+?+(iZ?$kS1_<9_?^6w z1(2EjX!Q7^vZKAEzHV~6O(cK~RAOsuhN$Rn63h0A6PO+hjTDA5@fsdkUA(Y9wIv2j z(m2ft*Y3!BkmHCO+dF+AglKJVjC@5|r!kcWzEkn5$?>{52oFoK6R{iLJ-G*?>*&qs zic?57N^Hyjt}EX1`7a>a^QinZux?%Ki8X1PNMyu+PbAS3Uo26zSyX7zCCpCw?xd%+ zD3Z4rKGp*(=#3AMa%N$kHcpMrbk&OD^MUp+0>y+wbKh z4nG;NPM7COX(ltSWu)+X9&;XQwbXS|;Eo(DMN+`jSNQ)Foo0Nf z>3I#|P|mvq;^p|($2nZe(_fyw1J0n&zz%yX zh-3)Jp&U5hP*@E6nh9sfUOMIl3AC4FT8FlU9E8^czF_^Qy6ooC>ex8$(a|+8k=tN zSg&^rrX@BZ>8H>N8q!qjV_<}Y$YaopIlO<*0>0uXkS5fMR!~t0XpFKc=BH{VHzQ{M zNt zb`xsrB9N#l|G_E_mRG<^nS!%@H4rvR1|6lR}C@?Pk_f@mu30$n;u7raq9LHhdHeoy=qM`#64OQDXE<0egug@Cp2ei_wOr z&osh51C+u(4Ywe}-;IS`wvn)qC6u>v>)cwYQKRzLe@%5VG=`W7x2VIb7h{CRMmWl5gcbOariN5Da&zX`3qTIG|6bz4``FNA&!qU*JcmQB~oCd@L0EawjKs*56 z2?6l{csB&Zqx-WbK>pWRSKRD-2u49!1E;+kprc!iZG`Y~Xe#?YE30F>r5%Wm!gDfNWArU2arxf!Ab1hM3Lm-EZI?{ zKgOVPiJ`X>=2JJwg9U)H&mMQD%eh>1c`ny|%=2;-?g!y%Zb5>P!X5mI=i~voWk+j~i0N|uo9UUdjyu-Tcfk5Zd~=c{(&rir z1un(^xA>P&P==$nn_1={0pnl+M$i{yF2Sq#$$rK(GW^vGAR&KQJo_aa%yeY<=*q9&CXZ6eAXk0` zLTQR{!&XgP!X-mVA&UBfJ$M)kNVRE)-51qPX=(5@cF)ulvmCy~a=4DERi=ilLHIx? zb@6mHFQlme&3mNzTGNamO*MCL2#>igcI9R+z%^l|D3(~xPj96zwUw!TNjw$A*dfB@ zcNO~D$iIy$H`!OF4r5dp1gFo)db__%jhh}I{xM-{*rvkN%q5jNwUak3C|3@aua^sM zD^sVF!KA^es-^0&nV0{K);5sr&hu=@~vgibuVq<6Ii#E0{?VL*b_xdMkXh zq;Z%;arPS;Z?x=U#1eOAU~(qg6V!DKEn#aFe}jEE*fm*0vf)u+IrPuwahR(pIp2bh zIq57!Wi7!Hl*_kKE|JJAB$Aj9&un<)g0MnCDIJYW&w_h3-46hj5wbV5^5BNOrR zl9pYtjyxAOhfE09VTpGRJ~D*M&1mX%(LPc|4Q3$2H3H>o3eLg8qqNzaOXZ&yK&zXS zv}K-Grycx>$}6iFQK*<|@RtEnPr~dvmaL(zu(sj(C_jNTJr|;(-2TRL`!fJbfe+Fn za1Ss)OlfhtTw7a%v0E)0Wqt>?OaF|xy!Va#eBqkp(roOe{{Ctl(Jt1>^2(#&t4`H*~V=QP|V0sizU3WrovBQ$|yNL06D4bsioUM|r70 z61B0?wnf;gT$DQceKh`SsIe5oUPU3xPA0o>jU8%Q5o?-XGaU7dLt6aX9(9WUQsMAC z*XA#kO`wvA&1B`!--Y4D&ZNU0O86*a2P47vJzH;e--NA3u5TiBQPwvXLPUP|vTA4f z13!)wh-ay{^i?{5A~J}F^@?Fj)Dd3xDEW=^Pt*o{#-Kk$0<>|R;I#2~Mf=1zp&Et% zv+cC|LIW+PPmu$>&>XOfC&@(LaMx-|=5)MdWYeGk=bt2r4 zYOo)Wp6(M@kTRoxJHxNJ1eGX7LoTC94BL0ewu@#fJw@Si8VV@~7 z%r!C<=J-U!>7LJw6YgSWs%Jk8z=0+$O5Lytg?i+3Kn0fUD$O#Abm?ivNQIF{jUTE@ z`0lRv{fbEy1B&Gx-2+VYJ6hIRc1GJ9zL#CuAJroAGA^17?8fGM8O@3iT?m(ByLk7a z-^6B{bmkrP9!gx>qQTr-;uPstdrO3}Atu$Js~M0Xlxw(kncj+I8UBV9QXa4a1CV*A z9gHl}biGI?ugyxvs}SzE<#TSBl9SnjBvM{$Y&5}g(Yl1uwzttrvpNA0kuQuPdvncy zK$9WU3G3Fk8*RuB-e~*FF?9Y%+h6LfRc8Aue5L(Gqe|H$MMfT_jXeNn`oQLaE;G#E zT$vHBQf4Y42-{d@QUBs>6G*Uz=cq26e6Lpcd2(; zI;xg-PSB626ZEAc{Zd4BaO;S(oz5l)D-)g3p?^nJ)~NlgM?;aohmsGJ2ieyTPNXi3 zM%r)SA9bM&q^Jv`R$=BLb~*oIx2^#(Sh^TcyN$Dm&%t_xV3$#LTLxB07`mCSf>TIp z2sePR4to!%nugYwEk_-93WG~w(&P--H``y5_){k_+sW`bc^E>ZUzEItgwlc9P6+?d zgy_HUS=U49zlbzlj5IB~IlVNcp_ASd`Y*I6YJ%|6NlD15+QbN9^16=H(dMn|$N(6M z|6v_DEVP=KW_>x;(`%dALlJvQGORtKnbe*XdsjM;k}y!T39A-$iBv6l)MG2#!^$7o zJk@oJB`{aFgss%A1QcN1Vzy`bBlTtgP}G4zaGD1&o$wnO-+KJIN{8QU^XcKx%V1Dp z=w(QhnEje5kcEFZS{>^pL2XvRY=aZHAwMPw3ozKL z_azY6)E3hWaJ|Je^%q#^y`w%SRu>^eGm<^0T35ZlphA_`>9K<_19`6W&X9$FSd@sU znZ*+SIQbQz8Qz?ATgt0a`?sKBya`sYvoYNKug|bXdljhi=$>?(s-mwx*LR#_WHWN? z8`5RFvlU$YqrZ!>1Xz+LZYe9q6v144S@OUEoEF1eLqcIX?b@lbXgbuT%JNwPsj;w& z1tOmjRv8*bpbdGoZ=cVL!yo%VlH~D-Z}aXjCo_iP;hGOPa*|(i5QZ?SLBYjFdNM#f zm=ZBNyc&sffzSk$B3YI#O9}a;*B(FzeP(gMW3f0X%qVVY@)iuM;8-AiS`(8PA0{E5 zToU8LBo53=f=_q>uny$X;2~N}gK?0?%GPO22-6TxE{*-dG^XdJ!6%bOPw4Rp+nIo8 zcqMR}9pkvk+gm3wF-$@{xg_=vlQ<$T2|n>XMm=(A@Wd~s!ANfM&b%~6Iho0TaS&JL z0P-xCT^N(#MVrJB%*si?=}ufW9B?%j!eEbC9AXrb3Qcl5*0ynpydlXX;RoGz$aYN^ z&&*@6@Wa?;_CTG?6rIdeI%U~ubV{=a!KtxCrCA{=%?eSuCUP|q^yT>!SHfK@Z8vEW zy|4v|oH7z4L$0zpL-t)1w;YYFMI`GMk_mqyyIA&66t`dz4TVUKK=T=%P2LKciXgpl zq`0Ljbt~$6?o<$_uFp~6iv9;N6H_QR%!l>p*ke@{>m=4TaqGoWQgBlY)2yoF{v3H< zNnQ?xZfuv0(CoBQA)ciorod~6YF5>?sn#URX4X2(X0DId7=Z^tP;4*LIu{x%hk@8_ zz;VkaNYQ*S*w{+k;Lhh}ndDNA5ObY#G359ZHs*pmyeqru@*Gp`TjNU^%Ax+~(UbM* z6VOC7Z_joDMR^*MMIktmkBHBo1d&0HK#g`#}WUlc%Jcz_#oL z#QV48J>#`0NVF-asGozL*SQFQwnSmG!ElnhA=&K71km$hK<%DRhR?E1ti-|lgv+CF z&B6NeVbuOwL;%R8PUw@38g z*vyqzYCYJa5jjN|c3MOzDFkTHm|oav!K@G;wUKj{Je?%1>`1JY9nS#tU+u_v8{3g6 z?6?CQZO5eqU`Gbfj(q;V+3`$rs1OFB9VHdbDzqbIh8@XX+i@9uo3~?*1MMh6g?40m z5j*lx+Yx=SfJ@rZ?#*T;V0o`b{(L6oiclSn?&l(RPMC9HH;!xwAGy4{=0YryIt%=q zMQ7tzFGvFIrs21DUP_vQzaiLwdH=})O_p`LiJZ$?zZ0^yTCmW&wD+M=Mi&~ z(@Bg!N5x|MUvYPB5ntrL$NF=VBvZ%H&9tqWi&o=&U{z>raCVh~NmK?d8a3sE4*8AM zJ4((Y97Y_K6!W3#5nvb|kje@Ny*SPHCAet->)}@5ADl4+LJIQhd?jYZw!%!Y+I~go zn|@vByXX?7rfm^Zoz(|bVT`A)!I;o$#(f8&_etENmxnR-2baH2B)^9*hb`|T-5%g~ z@JIADBQ@>25nQyd8{%qTwGACA|{L+x_3XBtK3GNsdGrl{2(pa(j7)tKehpA16 z#ppXgP3jd&e~=B`{}-i7VHjV%e34S8JkJ<6K_l&ZUTudFd6S@3kH1}0|Y#q^3saLhHSdBOQD%F?klsW-r*H?di z5#}3?>5&*ON33=qQlkXL3fEPN@3Tl~;*2njHAX65H5{(71JozTdH(%jWAs#G4v(ql z?q<4A9v#~1CzKbKHD8TGPP0sQQrVwF-}%;uOQ}uhgi}M`fmra#7=6?qS7ozB%s)*5|hg)%>lT1*SosGSzaOi6s^!Z36&7WirVeesmWdg5)1g|{O8p2ix! z+Aun#I}YVV$MCM#zGC%nl36L3P}q zQ|qLPXNKtxvRwKaUnjLED!499$G#fIc=6w1YDYolBT&XWsgog#E^7s_IPEe}4e6q# zAEKt+t7}EQN*Gy&s`$qkDcq4cvuih9!iK8L(A*Fks`?!p6W<8+>S;=S1L;So6H8*^ zt5Iitqjejh4z;15fS;y2{)N!D)h|jdM*SM0N?{2d`td>9=c@-Gy{^+O$SqyQhuOTW zM|(r8US0mOGWHvR@~rK=HS&nQQEDn`Bdt4HHKS3~cCPv~^nGJ|qtzwI4;^~r(>iWX zbrbk8&#Tononm6OYV{MQc4@z2h4DgDKX56j`1Vnk4vwkcF_^rylWTq6H)UuaRe-lh z!}u8PDsbj#U%k4`NIyZH4Qo*5$?DtfVrl@|>&dDQ@`Jvys_=Z=JdC)$>VnpmbW_#t zx8X*qHz~^xMwaR73-}6V#PFq6Hc{8N398{09b>ebhMdt_&NcPTS0}^H+G^i@9{R3Y z9=5xC+0ul|d_~I|HSC-)w4kq!ahTd-kC@ctq3Uev&)7#G6gIj3aYV16e2JJi3`m)A1R9!bz+p4FkKnzMcR{5rEq}28pb{vH+!anLD zw4KcTebjMiuZa2T;M27w_fZY7JwsEf9Cy7iG^NI#h0-s+*=VV?Z|!33+eh_8$<|!n zLVLh>cTe>d>NF)-piadMZO<&z7y^qk7bdGOe#9s!O5#Fw%zS)X;mzx-YY~?%u&=t= z(sUn6j>c|7&1T#~VqslatYXNSQ&4-3SHofFLEp3edkLI%nfxiP^P{Kgf_DOCIY6C& zc7uPux*PdHem&Kh+h|+)YVAWB^VRALLm!Tq61oX$&g?K(-#|IgrRmFFp>I7frs1nQ zZRn}C1$ood8N97b8{w8Z~MUQxYer%cf~A4XOiLE^5?Cowz3S4MPdjZ-}jS z&^}*HIYx8or0&~03~hgW=u4Ow_3C@PVVN@n)!rtCul{Kz?Q81g2-Rd-{t;@VZRInc zge`hKN{zPt(I}ntRjM_Ro_&xB>W(LL?oUvo9@BKA)f$`?!*oZh+m6FU=R+P6&Id{5ZxTWqX*uG$uovd&CZ-Dc}nbgJr! zdcgM7SN$g+?1C}wLjWZO?MournMXh4)je{FQBBe&RnR*RO|d0 zs!EZrZXHkgF7(}tc7)jR>Y0vVo_9Q0bLpwh!5c@H)6cE#uj-*gi`9dsY|O&Powmj- zHNg04)b7Z0-RiAer`xNGRk6kDj@8)Z>I{^2_UbQJd%qX<@85;3bg8==C6O9ctKP6I z>#whV*j8h66(>*G!quzZm|9|fOjg5D^Yj~R3am@tKI#I~hFzr^kz2aGItP6LwnO`< z;;y>ox>l`a9Y^akOP#*0&gsKcH6&%O-l%SXHMDh~x=3@LthPB_`|8zSKWYhlb&|1= z!r$Gf^ZJk9d`mD`(*mRtC8ZJ18X37DW|2a5CCG0@J4YI>Rw+|x*3=#71%ya1L0LsDM{Le7fHmbYR40&o_3Xy^8T{i|~IC4RA-d?r1 zl=%vyS0nmn@i}77CBV?E@>qVpNX*< zD(S*G?vtPbib8|y4J zRuBhml%_dP9VW$?oW;_khFe8YpnG;FqV;69~)$RY+CFjL3Wy_X?BSn8oNi3 zhdXLyd~8PSe&M{WO?^h}2_U!!5^pDRZi*cqdtQ)T&km8ff^<+jSR1Ad&GrqNb5rc3 z*e?al!M#i_H>wK_vi5r5BV+2A*oCp*3YtN)5N`(}jq0M9Dx?j6bny%1+1Mqq4uzCw z3hYdzDRy0KpwOJf`YSXy8Klx8x5h?Eti?9g-Lc7qwCXtIGGpx$yAKHb>Srs@{jq7n zc_&z&G-t;ijLj6}eAG%Jjq2gpJV6H7v>uHu5abYxJQh1%kc$RrKBuXtV&@35-M|oe zI(D8Q{cNmfV;2e%*wkN$tq^1{OS39=y&%V0Ha=1lai9IB`XRPk8 z#GWi{hVBz#`NyiL*Q>GT3pvqIb%91!#omm)Ey%Hlhsay8HG)jG$lI}x1o`2@kk5Ou z&kNbIEm;yXoY%y@6`I=nLYg(P9|T!x`K*ckA^FveKFbw-nal6THWU_u&oAif5?QA{ zHpqp~g~(?yRYaOkEe(z!C@KQ-9_qV}^;OI%VvW0fSB*5PZ(>D7%=e4YQzA{H`XN>( zd=Bmw#`-1Jqlj8O(k6_xA+}u+@=jgyxsH`p8)5^5W))ga%_rsz63!Q)ml7g7NvyMz zG4-FlVrr06bp*>$~nGh31mLq@M%>2oa@9Iovzif;{Fil1<~R+XsYEI;;fRiCZg}I z^WM%jLNnWFaiDXEbFd(9;rA@m!PlKboteeV)1R+Xg2eqf&M`tW5h-e#InJ?y z%(F<^S%O&T2`|;LnqtQ|X9-O|%XyJOo<{4c`JCWfCN!&2r!;c1bG;y+Sk7lT4+|2v ze9m#65oD=FE^uBIKYsCQs+yd8I0V~sbA)NEyz-fT((+gqzX>5SJj)*4ScQw2%lSIhH^b4VMOjei)V z5$7NtfwVfPt*;96eU+1y)Q9aGroPHqEPS@L624-Pt`>RKIZ0^7*|c7BP8Vc@mGE=t zPC=Gi3BPde7vxh*^QH5sAiG#izjB@s4`N{cA z5M^cl)%jMCL##Z1IKKkH*Qm|+Kb+r%CT)=oj#t8b?`2bW+!8^avz%SGLkV;6_me^! z7Pwu7ri)E$TZ8Ojkp{P?(D;^ff452yzI}8K_II}t&eO+)oCmo5ga-W?Lo?VQQ>@HG z-Qhy>jkU&bcXvT4Y+ zk!nqvFAHweuGmh)tT9BnyIb?*?G{SBWx-NW5y1i8?1 zp5?9*WSG@!w)=`8Z(Gi@-FE~z-_jiEek{m#R@1re=YqUtQ=jL4E68m&^|bq|AivmH zO|H|HmM^zy9qpF1W$k_lJrL%_>&`K52SLs@$V&HEx2wdu*QRx>+q*5__~)ZndB(E} zy@HGzwB?)n5`0M!X;h1`c9F=(;2I)z5^Ksc%EVgi_G`>;vAjl$&^k`&> zyS?z~kFQ#doa&AhnmsE*np53z!ud;#1(9Z*I?X*)V$HFspY9$Z$UH0I8SYF$`bLmB z!udLjEOqAz%{8eo^`&k~kYN#;1rlpZyeqYYOWmV|W{jn|z&*L`m1rfd#z+Nel)At@ zO^{!2(J~WRD#)uw3nFI#^_sXVv7_mmm*V zWX#~uhVQ#`+ATq>3oXruZj;d5W^2KR?lF?qe_jmJ`p8`>u@>1_Yu&RX)?PMu*1G3N ztftq)SZm$$gl3g3KVP_)2+eX^4!>|OgH=1I=~l0G?p;E&7`C+1e*cu%pYB`2r|)kV)g2yFpU2m`@3y-VwJCKxW}SfGFWw@^ z^Z1Snkq-pG2aTS0mm(v0^S?+7h&>}=e37^j~azbRLJ2Sqg=#@cR zM`U4uU(q*2X^j}<=uw0w?89@eHBokjEoV)LO`&*y=FFrS}coSD>RLmbJ3j7k3S&D?4X5BOOg@e3{P+`M`4{ju*T_Zj=LJa((DIz7u86Pi z!1thwxi3w#JdO=$;Ip^Uy-_WXmvm%#ehFVIqkK3B)bOROprYpr)p ze6rAFjtNu0DL!3jaA<-_>y9|rl%al^+-b!8!HFGNQ;xvw0MnWhyElHeq~80o9CD7( z+==l7O>^g?~z#d*qZW$LB?B|pNQWpx<6|y|GD=>94pbldBj_ofy0>iApe>8 zyF%0LbB$!xbMcQv)BWGpNF$K766=t6!dNfFzZ9gz&(m| zFM^~a$nT=XKQM1adE)+y@xO#-QiNu`SmT2&V?xuYUWK9<-^y9j^tV)a}R%(lo`^ z#CH^$g7PrdCxT$!6k|l1=Ck-XNQm{TElQp9CEK64H?9-&bf*z9K^idww7<}(4|6m# z1lb#XwlLPrP8^wB|FuTeA=Z(?XNBeCd-FS8iS}c4lje*WW$zf!U}Y<2=*XuL$U?E$ zbEqjqPE#GcwW9lOe}pt;-j{;xfZw79++WG?B;*+!L4Fow zKm_?kke(6bS3$l(E{A-66Xdn!A=1P9Q}ekrM0$D~1etE*=* zX=gca;i2~knv-m-K3+RPend^tvHE!J1?h*HtC20ePJ;NT-5RO#DuF1q-*z!Unqpgf zeFS;fB6WgvQ1dP427|0a9n^gKd)31ESF2Zl4=d^*;a4`T{$3!+c)a6utnIvnAlq0z z+j(_@jJB}`c>M%9&)RT+*C5D6D?&blyupIhVh%`i9_;NX$S0O&h_|yKk62^}Z-gKd zZLA%=T?Hw!$WGqwf;?dJVyK7JoY3oPYmJ?~F@m&3%cfHw=8Y4i+UCx1Z+}6qv-TP8 zO%!B_wZ?F7k{~-qVoesL*;-?`cYq+%Bglb*G(?aof*cv)JXMhQtX{*tg9N!WLNiT} z8zZS7EXZ#WWV#?P+q6b_hY9kEwa-XzrXX2s=aJqlAQ-nLlXl}FRc@KkZ zuzdFL=1Q!}Gs9S;y`v=7Ew;vuF-UO)NeRtN%V&(27UW=Ce#UsXVg)()djx3`#WQJaHfJglYwpWUn$jb2ueXRXB=y~Tnw+dA0j9Vf_b)`pEh~5kT)?vlKeS+ZR zD}x;GJs?Pxqmf2+s`pSUEl%?u>FmG|_pQ@3!((T7kGG;Z!+TozoKdDN)~L?(o@<4i z<-H&l`vTuz{KFWLw_0dM#x-Zm3wy72MuAgH=W80J{^7kYvCvk?Un7vWB^F+%2D!}p zNRXqf4KMdTkys6QFY~WaUEzHy$V=~q$a3#9iM7(EzQX%LkX|--uJyhYq}dH)UGM#; zmF_otUrT8jjPF7Ity8yp-$`1(m4=$$?)@x$zB^UZG^%^OzkuM(thE|xirwd_QU_&h z1A2G->*_oNgymf9P#5GzVg2 zl7H71e(dcm$lb<1*B5@`jSwVZXjT-i^+pM@i$y;5_7u+Fo})RhEd11K6r{IF>+HgR zdlMwqD#LkY;TPT{p?S;1I=k>o@4!}CeCbUUP21Y?v(7tQkf$v2oi|Gm>;RO%M)iv~ zrxl;yyt%EAKfRR1`n@oWwccwIBv)2l|7bySwZQX_734hIZWQ^MQV%6z!9^jT5qkfyVLS}U5K{y9QZV%xgj{`swF0{_xhNR5AmSoO7eVJ;{9t6I_2`!@*9 zUb8h#qw4Gbs})Uu|5izTinYc7|Mpfi1O2;&rj2Q%8r6>eL#=3b@*io14D+98g^ci@ z7I}WG53MoEf1wr4?*1xCYnH7kd-<=linX`@S}9w<7i~QqK3Yoh;-r1gPqZ6^8e3Npa9HV63cN$MZ<3~e~of4{UX_zcFk4FA@tgZ#Cv z(wgRfDSZC4TFmgjE#>>G(Y8p3`QMio0~v`CY0YP*|ATPu`<(#bJlEeKu~zOJ(xiM< zb~S>zFG2q``SCKA!?_juxluLwUK!h{!wm(IqOyEzEb!ZuQJx1^YNB=OSigN4TZtjI zmB{!V%Gi=zkF^>6TU2zMUnxj?qdSovf?WBr=F_N-^Lw{SYl&Y|#{7EZU`;bTcADQ` zklLmkvc1Th%Zt=T^v>{)kq{S^lnNwDVStT8nk+9Dny# zH0SxFg{H>Tly&L?fA2B}u@+($hJSbu`eQ_%yLt)$-~awZdO0vBG@{>(rh8@sI~QL9sG~e@(Hw z{8J?s*Lv}9oqEt9xi;z{gFI`?^OOD=66;j^mU-Ggvz0v0`e&7uK==6rbz1Ax^ZvOK zYlwa8z2u)K$PD`?df7j}%tL7zfUjfzmAS9@7Ya>U1JLUg{~uCX2A-fHj6(Pq3r($U zS6}llZ6(j^{^hM=z3DIC2)TMAjb&`YY`Cgyy@Q{wcrNZt9;MDr&a1L{sSW6 z7dGG5`i~2edlP-`KQDYnU_OO^>#!Gg6=+arF4SoakA3C8B(ZY2^OgUqAYl$Rs{i<} zi-b4-sbjtFt@Ga$q`>rPU-!QD-xXvhi+qEVO;}IAva!DLKN94X2(ng?{UWhG6Qp|t z`BIScZJGbp|5_x>^|ikBzZ2wen_u7iKL~QEEn`3VKew{s&;GAMlWPxE0nQ!XBHA;L z6?o-rwN5ns=SJlg6bf=(7j2D3)xMyUAZJ&GNY{eOR(z@owiKGMC0VC}g024_W$ztW zRS~uQPB?AveE<_ANE0{+0i=fBd+z}Zoj~TKS3>WJfuN!kLsbL;5fnubm7)kr1Sz4T zh=_tT5tSw?LAcMFnUl=+d*AQgn}1e*d-}|pHTCTMA3x916Qp&buubcE>iow~6Hl`; zWFfm_KZ^c-V=X+bMW}m){j`;*jV-MR*4EQbJSnnT9XuVxlV=J?&rY6B;z`TGC*3_= z#FHXT=;`Suo)pcfdwY6_C+7=O@8juJhNfcQsQUSh_4V`-Po7rgDtaRIl1dTqGfvfE z(GwL&^V76&|TV!Qx5N!Y9vp zMv5l`p9%OG?BTeqrjJcSJqhATkv$yYN%>EEjq!{ZIkeQ+g!Q0jl6bPGu*SG&rg&l$ zj+JqqIc2EtyjVEKC3#-{Pg=>I`DMacr2#=Kp;-vKH86<%{#*#lpGmSQ%UZ(N+g2m? zDVpLwo{#H=d)kl-tK)nKH)0~w@pgWgg1E6#w!!JogXeGy_C9_M4_O=Y;`@+aW#E_g zkwL6??I2bHvVH>@zHfJmAHPNEguB^zezptlZ$nn;hSzRD<~O5w!&!c65Y}NK?EY!I z;WsjbH6I0`-%GS(j4y%u9#AZNjUKg8edChjDII}VcJD?oB^T)5N$@}D0%PMLcOw2Nkkg)(@~)C6m5f6E$bFUKJ#}RIkxga2`bRM~ zD>5RpST*FqXexefRSJ&u`zw;`|B&+B4Jm_hszuK?AC!FmW0K*_gbmMze7!kIAFK4W ztd~x+DV;{F9mcL%D1S^?5PKQ^Dhs^`XMIFHhqLU=Ahrb0f1icCLQ3|rTFqrUMJj*Q zCkC-iC{J=T%5M-`HkaBtg!LWD*vFA>_t7epZe-@3IGij-MrO9$Ddj8BH{v(Nb07Qb z5oT71=dXCi@*qpRgI{(b-vdtK3sjK%f5w+o@I3VZR<_`)!oQEz#JuxoJP+@UGjPZb zeWkuVtz?&BlH(OG-zeL+S$kO@^ZP@85ucPe$=)H``!DD>wRHZV8tf(J8jFkQ65x58ZwGPFv-u?&wu}FvP*W(aY^Z)1g?!c}^!aWT7Hym=&r!t7yh07aU%}-+pX-%UZg|z_j)5){(pK(SqtSq?eMYE8Mym{aDPBA zmP6jf`PMqfeM;87Pj)^cGcJ$9g|m8?U2Pm3&Nd^yEt+1x^aA=l^mXtZDW`oUW#ZHz z@w~fF%6jOB4 zm9hyA)jkHF*oJeyy7;a3x3Zn5+`?%zo)3Y4s{g!jX-DEtN%!FCQhqU-@)^YDD_QqB z`Fvh?DJQg%@(%0<<)fiuJ^*h>M7X!0Z`U9L{jNzn>F*-+i~M&PF699DBi;*1_Ua+@ zhxGBG>R;28T`PrtME=^3l(I6~kH$e4!cqBd_mlect+3xAY$xo%O~iLJT*g-c`J#AB zjUoxXIm*~==+Am31NMUpJ@v6)(NFIq{EJAJ!o{LL(L5s1pTio<=d+bP{X*Cklw0|) z1G`1zE=UzI;x4c@6oIl>O$GV*72_3^ zKVWBOss0tPH!0|^)Sh#jN?GG4ysZ;&f}nm{5>oa<9~%L^Dm%o-T6G9wH6R1!9*g#+ zejl(0fxm^lA^$5-|Lunq zjWc^MQTWKrh3Qf*-A}T}o#qcs;ocE(kh~l%;}6tBp!^%!%62W82Hk>RDtAvv3-*J` z(WejQK;R`+C3j1aa%ZZPL*Y*T?p~Giz2j)#QScu~=XKa8(wi~R--Kqkq19E+^S-E0 z^QC9lYkxx@;r~apXFTLzN*~f1%J>8E*z=3=T(x67_K{N%?u7<2oljs-Gr$4+83?yt z^|S9qKPjrG&Bd__M*Y+;E#;~d{DvA_dXSV$6u%;5QMiz~_#HI-HC3{nk~4eI^N7sP zU>{FAA~M$q8N$wBK9+-gHA2694Kko_2T@L8Pf-5Vc6;UeWVjC>QnDfL;_A zOD6(h;7&O;w07umta>*og{k`nMuD5Cz%L4OY%{S zlm`w-c?I)Ddj8@B$@}9Z|58VC7TS^Achr-z>0T*+fjyz;af_vl!1!FrnjgCzAM%1>b4bQR^H`fsc3pR7;JhYN6~3x5k9 z(fk(kaFx#iDjzkJo%TRdJ8gpA|E{Im@(W_wFMmfoKcc z>;ZR*rxolZ&F8+vI3JLnp_q#ulJkHogJt>aK+l)cST5`z=JyzXiVyX%gRnQ->iU=o zz1dbbg#Ern_RDiBzFX)&!SL7O1bz#Scx%ER*&q9S+sB%T_L2D$_6g}$9vaSCERp$m zgm$6l{RCs)BKosWjWG{`_gIF!d2T>&5><5uQH@o=<>=B;RZwKo@(yt1`QGRK6 ze5@txBk7?WzkKZVmK0wjMql%63V*a-ZUtFV*cBfO5q3s~qj9J$?06Tre}{VQRp>9A z^+31?)YlLpF(+Fl`>zl7g6eJGWhr~*N%_bh#GV@(k@=;_uaA9$enacwztGQ5J3?5^ zIJ`#!@yYpHL}r$VCnB?<2p^G|4f{g*k@LXF%r|ZjM`kAPmgx?JUX4O~+wHA`t^FK! zd1#T{JBsu(Q18D~k#aoZAs&hK2+5ybka8oJG7)-|fp`~`kn@ah?#T2CI#KyC??(Mh zf~=?Pehl=G{3l_4kOjF7dQ0{#6VFdOit=HhJXuKZ8Q2+;lrQoh$iE!dp20mb*j+q- zi23w9$hR@?9|qZN0KO;!`5x>A^{Y|PUy^bh!T8-k@4=LPMCFS@SkvT!N>xF%?edV}VR6d&5tVOw6Vw@$p4&(1y zq#GE|%Amez-cbtsIW5soN}+x>zhGoiuABQ?8Og==OdMmKz{0eL-7=~H@#Qy2edQ2!G~ls=+zHsuO4M&zV{31 zV=G3>{V_N4P5Hfn_9uC!i7dxwU@Ff(HNOszkowgb^8@ln^Iejc8%jy@5aLbnNAg|t zN0NbXw9X_B#21Js;4V3Yy;vRNJKCA-CE2fHYTixjQqt4^<}a|Wm-P{mnbTgD(?CDE zfq33*LFtCGE_bnxuYvtPRX*C+pz=NaF5Z^}e=*QEvTKJhUi?$YMeSiv2kSx64nDRT z>)%JPmv6v+1P=>mPd$q_uM7)P>t(dP(u;daZtEn=)xM8Rzg0I`FB_rfRT1tBA&ce# zZKg|q$9laHw*1S?N~wSXHVD*(&PWyA)1$yzyI1J8duvQ{r1H% z7lJGU{UlihcA%}wKS|o>q5ayCZy@ zvYP=r65L(Z;~+7v;>}K~-v4W#%Z1B)2ki7-6%Xw{lYO*i$aso1!I}o?1lBqGRezBB zhINnfC-thR9{D35GsSic^b!#@p47B5U*fWwt=So>= zf|PgSr2AaV@5%i(;wSkC`c1O5^2aAj9)|Sjd2c2E{763kyS$XU74K5~x8efDI~9MT z_(#P*DQ=_UeX@d#FQ>MY8@tPN^OgT2%6~;wo=>u*zgM z;u)#ZeM+Q@e*2|thg796)uCt9j)!2MNCxzY?AaKtKX00dJrUGT5cXY2{@$0QY!{LN zJqg&?fc^yR?5qD{yBDPwNIx(S((NVL%~Uo19jcGHkcIIy6>|!tdsFqFu1#=y58g9U z+N)I9D=N?E#!|}t8wWdx{!i{vt9v3K_(%pxr23pgfC*DSMCjW+R<<)OgwNKjlo0l==Jby8I5- zUX<^GQL-MFV4R}$+8l(Zao{ofJB^b+sd-!%Rlo7D8#L}c!u&RV2-d&YJ9`=S@uR;n zUmX_4x-G?TaFL%XA+)~ou}xUtzX3i9J4x~7qI{I!nizLCK)%pimTQ5kkE@s$P&x0x z|7^s|FJPak4%R1`m?sWv#QI}izjatdW?P{r;cOSiWm>0Hhx{1+7h%7J?5Sf6?Q;g^ zCq5R1w8$d(h|;hc)}C<6BH{&O;)Yq5U)7*T_RjjKe1(UA6FqWyrVo;j65e z7XP2J!sb_jt#5AGyz6y-!5u<1mcLNMDvWgl$4S{5~v%?Lxd9=V`A_2@?8# z8S{j@2w$rvt^2TkxrFsP`0hn1Z=hY?Lp(FZ^Kf=SJP%>DGjM)79A9b*!kfZ}V_aMd zeSo|QSsU`{Rg5)&yto4ACXn0kyd~rh8*oknS>r9nIuG};stf2m!^c)4Up$?n~3%O5Y)qSO0H6}BFaqb$fu6t4)8D^^FfY8J*`pt zF)@v?XmHkG+Mn>TOX!Em;7#c76A|_+@HDX8zX_xlB+k(%G{gBd=H(=1{_v}r$8x_X z`CX~k_hYd(rSRt&dj(Ri&muBkMi{a$la$<{~)m)yRw)A z!fxl%`~Z6JtEhL(g_V^1(LVO{;2^dh@s31&@<<;WS&y-I5uToZ1bG*BW+!A|pW2V~ zmb(J=Smf^%<`172`VZ_Y`3ldkOpL=c4&iHULN>)XM0^b8-iL5ikjA^OLrdXfzrK=epZy9K)wPpkUt-@=PM%fgDlxD2hK_Pma>oIzLXp}L&|Sa zA7sBDLoaDvIbtHlW~6%_`J;CI72`9>D$s}9cz#jY_kpN4vWKIfk3(^;zy2X(|3Dv` zp#Ev!PcqK^x5)jz!2V{A>Ib>lpPV?nsNcVRkT^1vexXcq=0YidKOp5LA&d4S0^@A; z4l;iMeii+j?Ei>p*hl2|e|8Uy(?#o%e=)D7@~lNUN$$gVO!~UMo#YuxJ`KI2`Y4V5 zO;VmWpwEhMf%63)`}qm<-4QF%+c8bDy zwsAycCVfSLYLmn`(-M12sE6O5 zM;}BzjYhfO9}&*NVL!GbpHr|Nru#mD^ZdX)8(LR=3HRH>@yi^9pCa178oNAN&JW5W zU!)IIuZQ6;6zP0}^sXS?3y^XgL7j_v0=^>BAN%a^cN6jSz`1mBj0bnY)uFF+U+CX1 zB#ZV%0{dI@(H}@(Svd?~O`pZ-YROZn+vX&2-@pdjWzd1oQsS!joUkxm-i zi;eWLZ;>C$cVM61Bl6{Af12bV>->xI3>k>`%OiZJ-|!_%$Q@&# ze~{&>z=n-1+9$Ha{LII)2jH9z?wip6+rpjpQz+e@-RZtlQM=PPJqqUsRndMVZ^lb` zbrNg z;SIOQkJ$=uQHM+u^;s0}3e0DpN4U3?jDmk+dQ&>dc3jF7zm(=6>HpRV$rqK}g?SSB zU$11Il9XS1{?aKa7c1E&QO5HN=1=6_LGd?HlKbD0awF^vxj)AIjO4EvzerA2`ANMY zIRx`rdfsrfl(Y~3Jjx$8RG#}xK!0h_Gn_ps&Z$D!(uvfbA*?6tODW86ON#!6=e%jafxTXv@ z0dqF8>vWE`2<_4@Sn_Zs>HLe_yDR$~SkKCPYPg>Wy(N49eFVja-_SRda)+|(U!xx_ zL%dfZS3=sksQu}l!7|j_9_SOvnx`pTWagZOQhp$$-Tz9sKS2K``3UnglD`Uxc@OHF z^7Sh8ounIffh6?@lAmJyrgG7IlsK?1{{Jc)KtCwle`TP40&*4Ve~s3E$X={LK1+p3 zxgsV=a4#WIpYZ>-=D#%b@@@F{D%niQc0$6w3ws#EPOAFe(?;g&NMG3wfqc;ZH{~~3 z`M)gsAMB5MzD_)E6m+OKW1B`c3L04f_l_X@R>nOd$QFXMcDyNDfq2f~1C9Hgr2qKx6vmx%Bi(G-1pZWz%&wqz}u#DQz&9?lF^ICAu0lK${FGDqhtwy_^3C3H+ z|Kso9{~!Lo_z~mHsQ-I>qmaH#&&^_y($W+cc~((5J{B?N21l zk>kY(q+0>;%uS$vjj!a~r+Yy@oT1`f27P>DoTGJUxq)(CKN9l`>L)UufPXiejrq(o zh^Ow?G_UfpS&uRPL+V@??sA>eMF)@8oOx!#m62CyX0ee=r>|Lj``ehq&wvm$xqFY_2I@mum|Sh58uW8 z!BM!!lY~8b_>=dLd~7?`VQHg^?8{WtTiU3|%nv5g^T^E2(w!~EcuV#69OeOs0WO_3Lb=ZrRNi& zkJK+n-za?KXsQ3p3uvFn%>w>Uwv+jx_?D^qT8aD|bHm<1{!miNH$tVXS&p&yP#^U$ z?$Ulz_He8xQ7@|?KZo22xexLTQ*w+u71H?6wc4jx`yJTO;p60`U1@M_Z~0j4cq&K0UDo5b$nS8p^La>m>)B0|o64WB)kjD& z(f}WQ0#zIZJ8(?;3p{t$fL`NyAlx}+Zvyq%SF2ZVluS1`stn#(qS_DkFwhS}@w|lx z_c2s_)gW)f&XGQlK2v*63z797h@aA}1%CnefXq?;$h{ui1O6ws!`ut)oTA*Tiu^@p zHizEPJ%Ov8wZzPiCbhkI}2Z70g!@hCM>gEcJ}LFA0R4Om^f(#%w+{CeY229)f1A+%a#0Rx zx8(Cxcs>s4t%IBh{n-NPMEOYeM86<;r2=E0BHaAXFmJCW!+nkC?>V67kRKxbe3jpC zz+|VtS9}%xJ@n;Q$YF^8KIC=uyP(lwjPB>ZZG|xtGEko4qsy=~*o_d#X(gom2KFOl zH1rzd%QK_?8?MM+(Y#^;_66s{=95fWOicYsuJ@YElKrp8S4HWSLpqe-N~0UG%5lgS zeqKlIj(ci_<8lk7hpT^veMdgXt~46$V{X{To_&36U}da_M$39>qw?QT<)0+g6UnM5 zcSnT(dk)>-4Pz&_Fm|hM7^APwY=f+QhU`cqRtoFNL8GxhQVIJfNM{%3+qCYX-@8PC ztKG)$IZ%Ir`$ZRT(Yhy$(Kqs9@Vp~roDs%o{Tu}@C;T^Mv(SEtNWU8Lo2K$R9{Jjj z`kn$wU#6sZC|?Q9@Z~f$UebO%{m$mI3b@0LwRzRL(%v0M{$?XT(jEKpm*~0DH^fK% zFBft(+MQ%w=oQIv&?}N9F^?koy^>Lth~2E*M%+JC@*S1W58)5RVcQk&SA1CUX~o~6 zyzb$cKV$s<>M`DT)=%c=l5)R>{K|b@pW4@z`;yD@+pG=I4d*#Ua|3i71KPvb$3>yCY>SCYd~pY&1I8IY7t56n|({^Ccw z^Zxe!auVbEwO!axgnR<^Px8hj8n{KVz7ul=s zV=(VUy$&3XZ&lXA{uJh8Pnfbk%0m~*qdivi#JmypaR_o4$q>2=6Gu>Tt&KZZVi0oek2Lh?4kk^jdCcOUxjqR6MLmos=yZ=XGf za{h06-*>hwUk@dz-LAtwK3|S<;|>ziC)q~nu@8Do`aK`%)AM&BfBRqKmwG_)eJ$$M z&Grcio2BAktKyGU@mq+W;{BiVTNK~CY}p@kgv45HB879a+CpNlGFNg5A#vsay`+5Z z5b4SK`4ja+X3J79tP>acv3z3|DMnG zaHn*;K=wfY>I2!RJmo{iJ6Od#Ld6#YN$(*Z7ahjB6o)?52xIXt)4okn|BiwEXp4DS ztBW`ngbb`(BX`RFNYArSj==K(2j+7Df4V!x6X>UFXOZ2O_ThOv53GA%g#9DE4#XEo zKj}q$KMv`AQw86gfc}&IL=Kkrcpl1os4eNs|6eW|SLHZ}eNwDPVn)k&{?BpPC+zA% zq<2)a|8JoEXg{Y;KYKe}j&QSc7*AVaE=ldvv+w`x-V5QRdth9JQ4Eviq4DU?2p=2T zD+uBHqxAHhy0L?BLV=mzP{sAY2HwaqM&q^7PL`;+6SVCe)Lw?-vDp2-;P$Yoil6!r z-_{E?*z=0xF&b@-Hra~-{~|q;E!OzMXfL~`Sf*cs{j2fX=#s3skKu1Alj#Sunu-^r zXYYs(VT~2b{DiR1ie-LEu{RaV{5;7X3SPv1LV5P$wP?MoQv8e9aqvNKykhSP^h%hv z%aY4JTLoVXgx1Ty{Uuf-o&r|Ho58^v|1I2~D)jF`Ji+P<-MFV;;>()2VZqSV#NYlB zx4^*~?}q;Z1{0v%^F{a~4ta*$(M6TJ4;);?uEP;%pJF%O$B%We0SsGu7hDp@; zW^@%B-;GA3;%~nQUl3ix#sY+Qr3 zX2qY3zdlEo)wl_7Z{s$+lZ`v^E;jDPyW2Q|_q6d)-p9sKyq}HZ>8EevPv$3$j=VLV z#Idy3cm^M8<2ihUjpy-EHqPZ^Y`lVV8?WK9g-pN3KE*I~5r6w##8;vdYX%Eh0|Zw;Pfacs)A(u|PvUEBJcGYw<2ihTjpy-q zY@EyAv+)YP*~V-5){>_)7F+8{do$3X%`@yU73DXs3+}qOoiff6~1c^V-E))VLhS1VQ7<{3#nhbeFer4PMd4^*N@1TKFd1XX7@!nvFYgTwT!o_u{o|9KmT# zPk*v}Lpde^8b|R4Hjd|wY@EiM*mx3eZsQpolNv3)IlPUH=kazn&gC6#ynSX{qM^&>dsr8XQ};ntOeoXyYavOA*bz4NtRiCqCB3y*RcgH2)DCQ+JJr z@+mfs;@Dcy+~fI78>ewhl{NQC97`^ZXK-v$X*`F&VB>lGB^&4RS8Tk3FR<|%{%Rr9 z+fGig#WubYy~M^hqnFwEZuDz5E{I-b<63NujU9ZQjlKMB8;9_XHZI3E*|;))-^LH! zTWnl|e`w?S{9_w8;oEK8hVQa*C;pj@d+|Lsj^JO|cqq@aaTMQg<9L41#%cVpjVJM= zHlD$c+jtH?W#f7LjE!^oSsSn5=WM)&{}A93Z`Y#v_K$@e|E!%a{)hMehkMty`=4ib z7xU{4yfA*joB2`yNyHHZ5vGRzHpi@1Huv4Ujg9koI~(Wo zjy68ayV^LE^|0|p-qXg%tll=h&imT<4v(<$13u8kZvS8#2m6QFxRO7rkZJz2fpZ&g z=6)M*=dp#{T+~NgAyfF>Ji*3!JjurSJk`c$d4`Qc*#sM3wKz>@9-Hm ze!yqh*zM1@aj-wf#+Cf@3Yq2)8~6enZ{`bayq&*V$lFAH| z#%K8|8;7zrHonN$+W46DmW{9Tw{3ifzhmPEe3Omc{ts*%?ElclmHgWana1M{{8Jlm z=AYSkJO8|p7Yh5ar;sW9ZvKUh^Y}g+=kxtGKFbf;IF#kv_#!`Q<73uw8(-%qZG4BH zvGD``t&QFO?`<6HzhL7^{+|n(ZbLuozh>ib|1UOf>Az{?PX1dq?&JT{#)JL;*f`4n z(8dXV<_Oq#N`I`M_M+);zl(U9-(%x!zh&cB{3UI?#2;eg)qcEIQ;TndzpRb7`YYOa zr@yj|_xYc(@nL_MjnDX>web)Bx;DP<54Z7ce`6aL_?z3<5!1@XC1TpyI5eiCjVs4= zwQ-G@9ySh-=@Z}*FJtSiMNI!fUMD!BkXKK^sj+)NArH^O?V*@LcBNr{(oz$Q{wYrp1gbWQu=w%xD`gi1FKaWlVyNH^ija zcymmeji<$A*m!%)1RL**nPTJonCUkDJ|@e?*J9?__^+6Gjt5n#z)QvV&s?z!9i^X< zO!JqJ*u{<(ifR5461&VXO0n2KiG9tHt(eB2kk~gI8x@oN4T*izk*}ESPe|-Khp1lk zmxuxQ^-_(u3%SoEoQ}qBuyNJcjW(_y`;Lv<#%?O)zn{TrPb}Rvpg-(ig8Rn4Z{rcM zn{7NU_Jcy6_C8KIW4Ai)ARNx&jk8bUhFI(;j(-F%GVXy_frF}%drsLWs{}FJlW;WF z_!a+lM`w-SirwW{uklB*pF4JFyf=2A!&6GA4tsf_qDM zRub*=Q*6FttO`FjhUWMAju#ZaHyfvCa9^o-;a$pazT>LmkNnubf%`v-n`BY{%y$Hb z$?`?al8l2jsz2l27m`~kKCR;Gr#SoyZok#Yci^Ik@ZS!+xOl!}wBiFIzN3zK#ovHK z*-^)M#TTEa_>VcZE1sJsd9UJJa40+GxTJVAwmSZaJ?^-vI1T&=T(X8tKkrZ6Rw;49 zQAY8%U}xM3M}5UppdVJ;Nk=oq^TAJm`zu~8(m&;hRlE#aK?UrTV~OJ5uvHWqcgpdm z;B3|d?NJ$Aye6feWxU*l{GV}*5S(N50oRK=<2bB18CwsRYMgPL6TFnQ!`4P)xZhIT zVkzt?_@Txf*(kB6iwPUlfU z&Kru~7wu8ZS*0F@&t<`-gV=$%V$St~7pe0#hx3Hs95x+WqhAzrIB$Xtls^`11Ua4V z`V>B3Pn^zR$wmn3?L?f@*Ze5yfBshF=HAhdO@}oXc|24x6Jxopl;h_^Uyy z7n6R4I$H_OVXxfAcm@BRH0}kaU-wi0r~>^M5?{s{4-V)H@obGpg12bQ!G~3N(zm4e zr<~tuJT|_p^R~v5~#Hgs>#BH3L1n02* z=W(GTp{;X=;B3Kl652VdwO8?_5#+!K$XFH9z^Ip#G z8t3ue&Vd@|^M20J8lU9@ok<#pvPkE6jW6=S&Y2ot=R=(@YJ7)}aOP_KfRA#%sj=H1 z?cAhsus_DROXEuZMCSpGPq9?zagDD;r#b1@iGlLpj2`Q}qVe76@y+!{LuZ9v#Z86_{+`+jqCFT z&fyw2;ftKH8n@w#o#`5P;!B;=H15S$IOk{_!C!YS)OaXg<$O)!DE_8%y~go;o$~{Y z)A)MlE{!Mgjm|v9Ut+$ofxqj_*LXAEG%JDp`TzRo{&`ZT`7KX=yF_yOPRY_74}pXcnPaj^e@bAZN`{70No z8lPgvo$(r9i9X@X(D-KbDd!B0??!*)d`aVi=yOhb8w%+om8TZ_!MR#v2mjIeuEt(| z$@!7SA^fs)kH+QrHRnN%EAwBRr!{`)zUjQ6aSi^v^B0Zl^V`n58aLs0osTqb!|ywd zE=Bq6#Q%0asc|n};Cx!+2>!3Lrp7}#b2ZdBiWhUW(Kw#FT-`KI;~v)ljVE!-HA3)J zQ=Xp`cO@y7=O@KoQx(helj5!y70dIJ;;!Y2<@rf**9OJ%{G_<+6Ujle{@%cgyYe;O z%uBc~YrLI5;VRjc>f>sVJUv_t4%kVKg!PoUelGLvD;tA^}5Ev{`#&n8dvf+ zc9rNZ!^`uN=B{cQZ{{srtu)@wTe)Hs%kz`gt~Aa4EN|cPxUCu?{(hK)n4N}e1L0-#t--)*H;?5{X<-LH4gR< zch&7#6kjF(XcxVeliFLJpZHzVHQvl)T)7%==W(vxisku9yz7AGewHV?e$+UWrMT{E ze37TRO7tp9@0gYDs;=>Fp5bbvaULJws{PO%{v8%FT3V)U_ zbv4sCl&x^})%YTR%@w2ZF>9r3hQ_=3D%TQ?^Z1*t_chMv>s$vkzRoweZfSgnzw7GK zSLToM^MJqSnxL`Uzs0pq<6!?b*AE(3^6zkk_LJe|`N?OlIvQ{0yIq|$-p=>9QWVSc zlfAAY{NT|JyZE z<9uG=nxye{{@C@V#&>uz_n#U+;7)h-fko-L{f2v>#=(BC`xT8V`GehGDW?7EXZ@w! z-)S7~FXR4A1F$yxoc?riocb+v&KvOZQb!2ul9Fz)7#p~K2m-+_`A3_YrNIp z!+l)io&MhLdm8Wa_ji|xEDC?vKhWJ$<1_xj?hzXQ;2-AB)cCr8lzXklxBX+>Uuaz5 zk8xkn*bx)&E+($j%KVmyNp@G$I5Z~B-Cg6#G2`5c8rO)K=$@}}c+6Dy7R5B)p2F9Q z4`_TPdZzn=#y6ug-NlB;@{<3%(b?|W8W%**bw_Ai3tv{8sIh~;>|Uv{moIRCp>YUb zr)V6-KX9+sIG%s#&eJ%Jf8@TR@g%<8?HXQ` z-VDCeU0dTh{4;ldjpy;t-4iv=7J``Eq2EJp2iOTt^1_LUVhH~m&PIdy!+{q zMe&v6Ke{_=T$x{VbB!OmFT1lfuEDRm-_f`}|HXY&<0kx9_dSi<@Za6#Mir&kiQjU! z)3_JE>!!Dd1A3zG@iko zo-rEF;T}(p#`C!8c~9e9Ufgp+;}yK5=P!-d@DNYM(K0=n-<@JldKzhbCAzeyr^Yv< z%Xm^Xz8hW6vrOZH=%+oqHLk^~crIz|;8i`w7=}MNpY-zTp1K-`@EV?h8kghGdM0aJ znb+~G(D5vMyryvk zZ|~Ww@lf8$b4BAQ-o@kPMd`)!?w$r3r}3Vi2#qK4KAy1}&*1$$%QT+D2Y5cycpe|* zxukI}AMEk?i_%-chkEL2yoQhP3{Xt-yHjkG2X_kacQuIkN_3PbQ{$V_V?1wZd^g(f z$=A3bI^J_v<611qQx?--aR|@wyr^+GKEbnDFy?U|!-C!XWkq;W6)qUX5A5qzHKzQ#lOd{2eA zqV%HpLQe;c<9V(pR^v3j#4}gpNqo6ygT^!XYo2_K=kPZ?cQl^IS9{9F7p0fW*LvD$ zyn?^w;To^u8$2&4rup|N_Ks(@##f@>^?ai7&FJ?$=QO?>{ej1kAk(Ap1<~6)^j0`( zPvTna6Hi}_9ejspyvAPssb_`8A$+%IkH+QrUe9HXEAuZsuEe7FAG*KtRM)r$Kj7)5 zaeaQsldf?Se#Em><2L-5=TnV4@e`hl8u#L-J?^BU^dk5-o;n&2<==TCG>+omdnRcd z&o6jZYMjP@^6b`l693urgT^!X6^|piD7`uSx~Hbb^Y{%8|nCADV*gek~jju%i>A9)#&FH^8!6`C*@_#q_fv1JW1<{W@Q5x4`LB?#29o%8O ztFf26jbj>zaKrdh<8s_6uQD%Tw9@#YJJ=YmaSdL|$kMnz4>jJ_xCwvCIHGYI zUf#H^aVK8Ucq*+ZyjhybK@P2SMZj`F^$*oHpV@{bJYEgc7}7T zNY9k_k=hxp70dfb?TxXD<$a_M#uUL>#>OeMKit81Ub)NrNga)slzSZRE451KXygjc zG3fliLqaFxQ|UiQ-e2luoR{wG;2gZ=GNH3EB!lvk!(Pn6+fH~_W2)dqtam2f?v&8o zSSVPoC;G?qFwScn8Pn6KF;3PWt&gH&dK;}Yj*sbU^wW4;OoTB}vApjz(8$uJb~iRVm1H3d00Y@@t)wTLGu35T;sgPRbyW;9%@`a z_C`C(tUiw>qc*l<6~ACnHtZISz~;r@q(E3#vdBb zNO;#Up{IfPauVJ%Y6{L~PhY_OjD!!2oyxuL5yn;|Y%zWioENma4$f~Awi>qu2ktw3 zXgH@*e7P)Y1>TyF@S#CpbENaZ`@iAqHVK~?du9&}i8hVuW{ z0lL4m&zLHBsd0EVepL?t%M^br_$y<(;tMBm-kWg1_(SoRuwQ>B95kMtA@lp2a6fEB zD?TgS^Nlwpvr=EIF zWP~eDLwX;wOGaD8QAlqG``PHFxEj*?oLx4C2oC7y7329VhQFo8J=k9}@rv=HV!Cfr z61-F~-M1;3c-2@J;2L=ASK>8ei(Z_>1w4V!FRl zJMo5bNip4DIS_Zl_(L(>Ul~#ISEE2N-Cqey{M9g?m-(gpD>ce#~t%g9hn_g#i1 z-ZEw>ru#0V6K@-DD*h213w{r5;654MZ%RqLW9%00x$L_cK`aA&TDczpPf5IMjL0tX zpP6{iNCnez3EtX)zl}AD>3$0F`x^Ut{%!2i zcv<2<#sQ62CO$AuYrHP8z__IG`-%S=w-nQTl#df18xIxJeU#17j}2qC%>O~?&xn$b zjnazgz6ZHi5ggFR#|HU!sQX`?T>;)7^bf}EPZNVo>ApXR#_=x_ixu)oaDJjovAn<4 z+2t;Dr|{d{Mj=!9L(Pj=hPTY-GC%CxEWFhv(QA%U`F&U$UuR4#Zl-8_EwQ9IU9o)M zMzA?g;}4@tnXf69@4qN*uG4sJbg21}V)_1yr_9re<@+znnimzz_g|DX|4=O7e^JhS zq*%WHqP$rgb_$k7-DfLrHkZuypgeyhmN$+(_N7hFJGgPsxk8rcPVp$&z&AJ+gB{np>2wucqJHS}oq(> zqZ^x}C9C>tY`!Eo@IIBsX0Bpce@)HT70dc+X08kPZ%OY@X>M*(Ec4gG+@@IOucf(5 zu+-O3*3vvE*@(*|eQjl)kp7KJn1>GuZe^ZT>>7wKYb3QYf0WGL-HW$~g0CrFcZ>YD zHh))KFo68GHvd#C({F7)RQ!8&+-8Ei;{{p2b@0>WZeUBYO24)Flwz5FYqOHzMXb+$ z#(KklZ53YTr;XWId|k}3 zie>q_nA0`pNnOm36wCJNYW^))>i5*7uBK}qrHA{22QaHm>Sl&WR{Gt|d|GhezH2wL zy2hcbn^{lei@dwpM&mr*)9j=1F{_U`SYy09+lr13FpfH_;^Rtba5 zL*T&pIXCG!^Sp3hD((+2NQyLXC?4GkUyMu|Vm?w_9OL6VNyE%iFH`xKvgJSGZOus| z%$ka6d_SBt%6voP^GT!4_Z08Oy5)LOw7FYx&wT7xB*mEDDjtCK>Ay*FW--jeDE_}N zetVJ=%wUb5OinTzD4raNH*hDXnEf@bnVe?&6_>ZjJ;R)>an0oM=5mdjBu_HG*0@{p zRP&bNGSL`clV_Oi=ga&wJB+tBCTE&G6!*otX?*hY<^aWwvF@3fJlhCC3qPW}*{N5n>C3B+UI)Yy|XDPl~3U5$No^LKyya4yVwH&&S21m_t6|GT7rm7f*nKEZ+fyk;J@`G3tkY4iV@ z`Mu5m>ncC{OUUxRZvHIXml~J+c&l0R>*fu`zk~k(-&66)-w&(|gm=mMS!vc;NaYLU z{|&RT;DCL5!)z}&FuuHD_K<80dj_|e9jnX;#pA&)w#po)_(WB5Uu{M!z7BS=)n=07 z5{cygra4Y=MX-y#X--!>U&O!0oUQmB5&s%#m#=gTLhEW znI{zY1V04-sQ7~+l>S@hO~s#sUF|*Opui!kh+at^~ zQ{Fa93l7xZ+vXAJ&fa^D?ti}>&>vS>*iRGwkH1RsN zi}ilPl+9-5V&Tpzr7+eo6Z`w$i$)%f7$F-Holmb^0B#Ca2EUH9Nr3=veWz;`wry)Ns-@O z=JeMjZ~YnjT`8ZLmlbaZr=)ytj$bL=AEeTL{a$m&8^nv)>T7s=Zps(tJ;7P5-ATIt z{G}PTO8Q?JMEk#AnhgX8`o}(Vu*RWmpBXFoYS2j7ml-K}W~SmavNtLF&Ao~nJcT!M zrW`i!DLyLrs9AkArFS*R-5p;xO*vsUR_xq``${RN&Ebl-+`-q~Q_h-x#rx*s>#Zs0 z%yhwvShEDi?xdVIpM8_!TVxCZ4+;LkY%G~&3HKk&-d9Roi*HZYaL9)Ep&3MJKyuX@@70dGe zZf;O4%X`P%qF9#qp1D)9%HMr6PjDcA_sxmx^!(m8w`m;8?wemqHd-H}{`!}BNO5m) zF!+?>eJFnc``i3p@l|jz__E?%+wuFb)PKx>6(0bv>+_FU{w!~7O|PZ`0__8v-S$kW3qn- zSq~M<{vTvDew+Mfu{(RIKNYhg1m_9+(Lbh`m9E_DW#IQ~sSfL*;%;S$UDo9dGWK_6&WZ=EKSn_9(+SMKvse+A5Er7KgzMsUd2)$ zt65(wmik!DI-&U02c)mnt?v}C1qXvKNmlcbFe_-Qs2{Lam)*UsaK%4@Ls@UDonon7{9l<`&p9}*8*cbWaTJsR*k~z0=}UyQS@9-tF!(dYvVRP) z@)XPdF~G`KEc?em>x^RAKL%PC6#s(!4@w(k-4vY7dSZPu3>=1fFB;Dxt@e_Q&tJrO zQCg(cUGY(H*;0{KgyIP7=O?5MwuUN>1*d_d6;pjAqz$nW6;pkrf$4W^)E*b=Q+*7z zrYXJ+4hGLwOutW_m^RFMS#Xv?zfaBrFOlx5{|vX@SN`RB$Z+dp#qvCIxb?Z>3Tc#| z5!QaiVc<0IF~wIF;H~(ck=D10?}K}?k=9R&-TkP2M_Jbuhk!%bDC@T3Zx_<&|cfzvDOyFk>F4kYwc8A3H`o;BhLClaSgDG#aV|Gk2-_>jI?;`q~c`o z#!~Ut_lg<%^V+lo>u1Flcw?yq>!#vounwH!Nwmsh-bU@+1l*G)T0X_HK9j6kie-H! zSq&A-`b@T3Dwg$`Y;_i#&BmZSZ>ObLZ%KEh52;p7=wU#gLs_cTOtP``PpXeJtDWNY z;82!kbyqC)Io;~7Sn6}SHB|9CkO^sHtuczff=mM^DxT!SR|?ZItPH_f#(eM&@HFMV zUbv65vX%Si!hM|evU2Z+@vDH1w-zfN1`YPJ|f^Bd=4BVINSIf`#4iPGprQFC%`?~3~RFBEF-=Y&Rf%FT5Ams?pbW4;8(2Kd6IL%jZ+s`6~B`FR9Cz)K7EmuE;yV076p5j zzS!EK-2dr<^VjsH*697@e>Nk%{xtD*t2fr2G{3wEHcGFwjIW8a*o0H~`h5BuR+{26 zsGlIV+Imy*x6uFi^wkzV(=PmbN8_uB>1(X+g7bp56%S&W>Fca&XjjI*3Ua-V_m!lt zw|WWAVr^khm!xm7#w%V6_f_fdSU(*h|BG1h%{U(o{=hQPZj_&u2F|0>w^(Hb=NL&- z$sTOAsz`TZGB}iNwQ4E%TUehbdq1?omHR*7qp=@aEtPxwII^GHtd7dP57@=FS-qt@ zE4BpZW$7PTnUaNl`Yiop>xjldY^U{`#-ZScl8rl%*L!2ItstH0o-M#)(0!lm!F1`7_%pLSd6g5~=T@CGq!zu>Du z^#1W9@PAft4kJF1{<(GW80AO0Ux?mo-4iU`zf1qpDt%n!SNQ)q{VOY8@wkhO-Ag}Y ztvn&!=f02rGWM8tTks-Q4E8)^>?w<#ll~l0SWc__p z-?#1wUc_!7{prpEtMRwwe-R7aMEYG|b=5d^>_f{hIE(c_Kc6u6k+o8}Uk(pq)5kux zTAY>P3lcCYjScelQ@jM}&mZgX`UU4Q;^kxA-re7k|6H~ayk@NBJ)!YCV~cz530}mO z+`-pJ#y;US&XNBtb^!L~ld&P*ir*72VlSY)2gjE2HWr-4rXhddr9b68ulUMiyboY( zd2hq>0-7CRq9pWfi?MC5!%)koL59kz(pkY2ZzQ zv)Ccbw=RsWd4gTc=$t^++QVAZ@YDQ*J} z25(UOMm_4E)x94m-U@cH>fRlKubL%A{9)d`%KaG;f0*~6a_`j;`Z>0S_k?mE1%3dg zueISmh*|krO24M}l5(eYM^Hvh?+wMtU=R4NV!0lz$Y**W2~H{T0jgc0KP<#oxhh7qI%?F^aE)gTaY{ubLy!p9)w5Z-#Oo3l0V^ zP~2R&hkKVP?kU{Ey>BWuVP^_hL+?h#Wx&DUt%8w%yw9P6qmg%~a(@ZzVvW3CD))m^ z$-S}nkaGV8>|%|*rxhO*`qsqzK=Bo!Z%w?$PqO}h-iG&mSWUgbiVf6{GqkCLXXmjsm#ZP7hv62}ryqSutflGtmP#im&`cq5q zdc{-0zkyFH-iZF1kk-oktK!c@|83=U!ETfOOs+%aZ|yCi_+_w*we~)%__sdf-p1Qd zG3!h2ZM^*yzrPdukcDaDH_byX> z1sn|iNbps2d`)ui;QdUw&jAO6zfznd^rNFUU-5dOA055lDE@vX=~pN31;r1*!Qg9x z=NK*9)B3No_nzP^_TwI!-*oogx+Lm{RYZN@`|RE-nCGCr1Rss<>SdRS^O)SP>E_K8 zoW+>ue-N{;EU$_ihBzV%rD{p zs!UJr7j^fZ7o5dj=|Jn%?q26L=`QD!J-o(s;%qhx_V?4op5F0-<@}*idM|IL#urk1 zd;K@ae->MYalchYA1}Kpc_8$;S4MwtO~vjwe1SV-fcL22yr4Si6#sMH^NQ=Oz<8Sx z>5cr2!si7Yg8j>BIoLZ?@n4vC#AFQdPE#C;@EI8+yz>NSu`)h<>|5G!f zy&ILg5ABUi2fD%oyusccuGstf$swjQ37g96gt@_cJDW7v3ZH zrECK1$EO*Sy`KrrVlB5ab|7P_w?F0`6#rnvdop9D_uhTUm43z7fitqbRsNEE6#4r# zV~)4;-;&EB{9hR_d5FVt&sg}lwcf=Ki5IcibMRH$ac_A)`d7LS zM1Iz{eA_$Xk!06?;*H+sk0mETAA{Jt-t&q(PQv|?aqoJ^|36&a2bd1W8vyY6a4ffF zwtUfBT%sm=)QBLu=ry85JN3BU@4oAVaL6GDiHm4aLK1{TIi0BgL=aJrAX*S|!vCFl z-{liep68xlW_EUVW_EUVc6LAbzaqbn;Q0E5eHGZ;gH|HN_d3=D&L*EVMSETscu+c( zd0;%$*ZMlJeIbk=4e1S?xIS=5Vf26z@T;C--vqWPg8usmgokYmbOO*9p#24hZ3?VY z6de^Ho_B2yY(f4Uyn5pIfg<-Xk`BP;8I|k^m)(R?&5wT zKX4|-S6aaJp@3Zp{Dj;Y%)v{@`2E4Ffh)=Q{lTk&8^}0+^he+pGR`0U5x9%IW2`8T zYk`NzC%_#1GkNGX5q>@JEIAs?!B@yDpq&@68-cgTTfiLrkUT)<|Ia{HOthB_B|_%^ z&%om3ll{c?@MfS%z6lOsHv`L{X};=KU}Fl$`O8~@Ey+e3alN?}*j^gff5VD_z;1qi z4B^4jIdXmVw_$ezt1BWuxW0R9*xkSmWU;<`YuLTO(bDev>j#08$hiLcL0}dc*Iz#f zTrZ95ulI!g9e6_8y?=Zd*uS_uemb6qfnk33vWI~wXr)#|_{FraM}bqw#YcX+ol$>M%J zKwU#F;S<-B0Cgkzc8mxws%|4c1$$Xhbsw6JznFT|&t6tcJ?-ZUVTyWB+8qy+P{#y{ z^2%oRIauEuRzjUCoyV?*!u266P`&NvCnGiWA88-_QX$;$hU;oMRc!CBpWte3=?q28 z*YR+!Hj>8q`Lf`aWSn0!)iGq8Uo+J(X?K3hQq#y{JW_AGrMA?>{(P+dSBzB+x79r9 zJP+pAtDf+4o$!(>M23HP0V4d#$kJ*lU2N~(&z4bF_}R*o&Snmj-}vyF>RjnO4~{=yQ%^V|+{a45xGFjPb+xe< zEuJGx4zHumARmTtRd#qi^#nYp7V-Z9FAT4*GI$Ox`~>a;a>E;_N65{G!2C>jLp8aS z2zT3KV|6;3`lH6`95VJtjn&0u>`$7g%gETDG*Q=)qt}S`*Hqm^{s_#$d1&e{nyIx) zKi|KXHB+0RmFktn_RZDywl8zNrp#!@*wmraFlnIah4oLQN!30dw$F z@(>t@7qGX~d2W0#2Y)G@Uwo0=e@k@(d9~bsOLYhNp$vapJxnh4ve^D@^*8cXZ~<$j zULzlp;jPq%WV4D0Z>O z9km%5f8X&PwFAW;1b^2TZL9VnhrwSjYpV_?i|;j$4r!-OB8%@ehk%pFqW|0y-d@d= z#{P2;cm{=Uf^q5b@DA!i>D>yphYso&WNZ%|)GsOi6SzMrU>(&pWIjn8Z%1__n%YAr zb&sFDtdsh)w0phntlsnshu;xa|MjyMtdBfIott6eQR1AUn#qh3bHEEwxAN)JG zt~AuQyuNi)n@DHS`=Z^{R^)B7MgF_19myxb@cditDV?T-je%b!_w-QTBS*r#VUyq< z>M&`aG97$>R1bBW^!egPed7E0J=J82zoxcGzo&Wx!#!f%!u?S_)u3|Xc+Pv?g8ji0 zav&?~i&<-3I-n zu=xHeyn&?#!@5hT5BlEfKvk^E6vp+9@2hjA;du$<*Tddd&jevO_LuLgXURA}@xFS6 zjPnD7)Ej=TH-50%@)g`3*ES=HOA%ZvP&qhLf>>k5f~~4=aoEi&v+Uv44+O7m~4mPf%Bo zv42lcHD9j~OS3ox8@gm!&$ zLaKU*98?p&CmxZep7e9Yh;(%{{C{yi6o-7;5t(YZpDRXWsV!@XaCko?8TyxqDQY+A zJWs1c#@>whP+ctTV?CihJ4Z}cgI*Kyee7rk^bQd-Rk7|-q<^?FgY@U9Y2@2*eYGRz zsvF7Gz~dw4saMHu;QBf~;uE#h>zH03&pCntu7~(oiT?DE`k1@|%)tR~$nsRCj1l?!N!7?XVEFwH^(AuU;i7yFs};y^fZ_K( z)T-p7Z$o-j!JF2!M9{_W32Wgxycrx;s+Re{(!jG%betsJE zKho!#QOBO@QF<=#Sz_X8mX6(WoH8m3pE zM$2%x9`zUdD^QckEx-W~e==FzzdsoFSj{Gj`}fD-1!SWZ^mmc}swc=*q@Sp2OL@G? zWQadK@~PT}yhxg9l%D`R9?vu5@f3Q&k&%U;8ILDGi;?N2v8J%UZX*J;ndBo~Jn%fT zsP;A5o$u1NNc)tdBj9;XWHId?`MR{C)q-{m?M)dnO60e=Hk=$IT|%2D?bctQ_PL+u zM+RzN`*}&Erses0MWn7ZZ-wQ7?;Dv~8#2CcWNKZ=|H8PoY++05O)d-L*Z^i}gUDFk zw)PPj%iGa@AP(y?O!=zu*DzwJ^H##TYmnx~%BzFWq1~(z&`%9-d~i{8oVR&=Z9cg%e2+xPUi7cn(QFv`Q|KSZuEeOtAksi+9l-Guk@qVL% zmMiUJw>ydVmnv#$?L~Ya`(c@QUQqXuO<-0fX z6)jlWeLtb9Hj#|$zpHBTZNH!A zN7m3z`FTlXE$yDPJAeC{RvwO1jOPx){*FYxrZtdu%jb3NBpL7DYHRnTeN2Pr%CKTe z>(v>Le|s-jT^L+PigOeq^|f_={w1=3w#CoCN4}x$ z_4C!pCfZZ9g6l)x)QZ7*F2>WiKIBb}lVc``_Sr%!MV@7r2GGPd7V+A=a;Pg-e3-WBs zYpqUKEYDZrc@WGOX&a?!ycqS4c2FAD+dw@Qk7}!(!1zii*a4rDcIN}yY0=%D@2}g4 zc3K)4>$APKP8#cHaAXJVn6!I+>7?DoaOEoWcV!EA(jH?tU2i&RC%a>QyTbJWM*Lb< z5A<)r9$1gkS-UFjUXMC!ZF-7ubYx@~?Hn2V@2=WFXh+Ylhh4QXey$YNRg3krC#t(P zAFb?$^R$5V(3X(TgE@GWbRNAw*;Cs{#`C|I7Sr2*f4#L-KUa_Ht<6I#2cVt(FrlyZ z8Tn^$9(V=$6J3P&)4nEu0nP(|kEZjpzqZTI^`rW0Kl`~w)IjY9ZIADZ4AP49k@-`w zzZj%hWU;^YQG>NIWU;?@!BwQ)^LvOkgp9{KM4Rg8vlE7D+oWN=-$)PZ9rc0s7r6k^ z8yq!U)B5_C&j{@$KhKXGp*8XIlE_h7Z$Ae|1#45#N_%;I7^}@B_m|g)vD$p{OZyoM ziyEgbAy)zWg2!pA$h+Q!_ss&wYd?}hpna7sJYL%)?NhSA0c^Z>MA|+630h;=&-3$b zg7%%XkF|yL;f_c+culyrUwrstkJi}FOCm$HR(_rz8Kw=R?e7?(Jw<3^$%VOSPZ3%;`BE(p zON)xs;-!7cP4IMZy0m-zQQ8hN)_;_C($5tpMr)V+e0D;NHe-M|-fUJM_BTH&R@*D> zW5r*G_w%FTwZZSna9XdKppBDu`}YJb*3Xrq60|9P_CzIV8>QX;FIj6mP?j&9A3m*> zpVvqEw4Q$cB{EI(p_Lpt9?sAvlb3=6ScW!R+D$)G`^9g2xI$?c{k$bAOMBqw-y^4L zZ@iE7jqj&V*IJPA{q*TtJ2JkXK11tD#`n`_X#J$Izd1W0TRY+lTq$av*38eIsQFqO zX*WL$v^{>VFma)F#Ls6Ze5$=PRHUEHmc#wk?x;oD+tL}zLg-hIM17`pAg=*0iTq6K zA?;p|KG()byVuLlwP@)}^uFp6Elt{;AIa6GO6M2H^(VR7Y`<{MaKM{C;q&Rz(`?zdGBh)tBDQFuy-)ou%^_?r)oRgTirtJG8dYZ@bsa>TH+RM|wBI z^4OydlyS`_r7ZhDoXPiS+cv)Nu47uSeBsb#@= zCfYBS&lxRu3>x$In|5X_rnfK--v5aHU28l}csIlSozvQk7xuBp8{+x!MXkHETfY~z zA=25*g7R0Ki(0xgmQR!DOWJIVPxXCS%OzuZU)8=R(GRpV=^WPhI{aQ;(MQ@QX*a+BXj{;fpMSI;$+*9NwUcDr z-xIA)2&VrLq}MO{sg@?4@4@_f^uNe>JVo>p6GeQte^7MG&()ctzbx(6cL}|kv|Hbr zzLCN)eM1kQ^gO*m(Uv~n&!eMD>MPMoCX{~xE3Ka-d6Bhe)w|3608(0yd_-QQi&we)N>T@P#PUrNJwP@#O*7p<+Y zAwOsY>yx5u>)(-2!1eln;2+7D-`e^fw9MZb2!G(`yV3Raa#6CpSoC0#ek1*ibT&I2 z1=)^iq)&x>y6wfwn&_vb^NWk`!<2|=s$Y;kUwkK6^EB0OVL1JsW>dX*jMzTkGZ@BE zFvF!+BmWyJ#@9{twbDK|W}g^8HPs)GFG4>ctj3D%ee5T4Jb5E|FZnd&mqUKC;xK+v z0%Ij(n(0owa5nR7Wh}CBbA5rdk8SEI<|p6O$0cC=Q*d2^_2Bw$@&b4sT0Z7Y{S4WH z`+ebnM2vp}#&69%Z|YuhR*=YV3%xn{@IhEF9@9cUM|NPGQnqkQePR-BzYD^v#kADt zO1txUt@ORpIcxpk9#X{&cm5!<7C#B|nQP8H5(cc8om$8^)1O6N$Ai|MV0Q+U_!V107Td-?$km+xbx z#0=8Ulgo~T^_Sqg((Zb{!Md6z($Dwc?{yE>hf8O$H{iZ(TFh{Lm9&qAb@#A2F~NGR zbP?aj`hh=>8L!vN!2Ipn0_#^}Ch4unry=~im~effw2!rh`us5_N?%3(@-}08V`B7P znV6n<|LSy1lCET-#rsx!W774h`Z?(wCf}=!&DN_;miwpk?_<4zwA){P zthYlek2*v9kNsHhD(zDOy1@K4xSw<$`y2XQ56jWlO7ARm6xKzDhUVy-DIC|A&(-tD zxL$mo{+Rr`+|(u}v`@(ZHv#vj z@Tu@TsDOQ@4<*kBbMP2)my4Fznk`>op?%AM{_z_`LrI{gSj#*y$VE2Zms*v#1N`b>&n4ZILMpTcJaiR;Y{ zeF=Ffn1ff5KZ5?EfbG;bkaNKtypmi)8pN{b%xO8NN&Zos8=P zcI#KjxISRFew&QzxAy1{$+&)NkM7C#$n)!isvfpHcCTKX91Z>&Y>{#O_CCD~8P{*` z(}T!ZU;Fir?)I|2_Urwm-S&S#51J|Vm&dUGIiNR{cF%_cdK(JI_J2s9O2+f!us&BB z)*FV1{_co=d$vdqp07baza{pVKK5hu)`{Z$_@ACd{vWiLyx5=h$I|d6>Z&k*8T*?a zo`dlZL-^^~bNVT1_x!n}7n>u(Q|Ck%)zC|Y`h4+tXCo%U=FTM{ustz z1uS2$Oa2nf!A;4yUhInAO4?m7c17SFZ>>NQ4cfY?&u4pcYD5?Bc4y) z(>F@zd&Kqs`!VZbUh@^rahK2?h%0k@VZ%yEPRB^?O@zOgBH-`4p zKCZYCChg7#1R8PD*q?Y=pphm$i!BO)^;~hPG4WH8UbY;cj*K&nS!89RhlR)4#%JUT z$uL}wbBw*@52d|E+9KS(;#VU4CF30V{0dmV8&}de@fn8SgZ_AOTxp}_=jdsQhh@i= zHFz$%Y9P#i#8oh6lT+5h^)9ZmafJLvYnb1Q3o_b#f$<}tJdVXxHTIGVH}G6+LG~lQN!p;#`PUFjlN`D-%-;TLdNwWwTxggt`DhYOpsN;?s~4e#sf0; z$90V&Uy9>**UQ#3OfvSj^^A(-hm}QtP~WIU#`RwHjizMm&l?!+$k?AZFnW`5y;noy z12V4nYG_Q9&QNeY*BeFx8P{{YVSGr&^~jBkxo-SFMSs-DSSs!I$Bm7((r)=SH8zv6 ze482jaC<7>H;teD4C|wfOMbo?*TN{YOq37aPd|ujX_WSJk@(g|Bk2s~uP`y5YHPeD z?Nf@teJ`vhHri7-eqXAc(T$AXmuhEB#Q3Z|#OLwtjrA1X64Hb9z{U^cdNTcv#%}3U zWif>xrSLY;-pj^!G=7!#DLufif-gwt7svj(lW|QN``>!;os7TH>{odIL2)`8#g~iY z&0zts9=u6>7o((~6{o8aB<)^rx*2n&Q&|e^uVs8UW5^1zy?g!aVceG9&9Fc2VQg3_ z!rl7nX>227f7IKEUWMCZf7jP2_m!}Zg+ThDq5X_p={$z@Il#!1cE>*hjl+KaBxIm* z%FmNx2N~YgB0cx_H-;MJ$v9pdYBVC_c<}?H4H?h>4~!mU94`(t29t5TILsJN#`T@U zjR-Q1_l6sZXlj2WjH!P9BxHnwHqf*Rp!Bb&ibO`j1S1`z+N`ah?mY#h8+^;|9B&fJPFLf z(_DA*unzGPjE|*#N+P%y_)`iOySp0!}nq1Q;fA6FnnVT;dJBRH|Py;eb0!` zGQz(TcE1lZ-AI%6vAI29z9T-{2-=A8!+XNp#PM^Db7Zj&b8Gw}x|ZzFhn_#tjM|yPC0w@f(f!Ef~KNY+oc{ zi&1DRdgBo2e-pMDWys5=cNjs^Zhx0&T$Rpd`v-d1gh_cuu^+_t+3elH!n=(sWKD+e zHCmx*{$#)LuC&`ceH8x3{{XR~i${I{aiFGe3UmG?;_PTC#Mo;1?@3?o1z z+s_pfel=F270k~mV?7!3bIRBvoyV>yVm|A%aey2{K10U*o;Din#Qg2pEUvG=855=5 z`af$-LDT%jSz{&{`}?!Te6o1I_0@#mjU{C9erql8Dl+ExoUwt7`8{Xsm3H%c-uQ)# z`8{u3C1ZZi8~yUIe6RfvdJXHMahv=UyuRoqBXE}p&+{mWFn`(Ll2J$6$3%GjgiFR8 z=?vwQmqdHHY%C%#2gCiPv5Xup!}E=`DM9FJ8DzG|@D zB0m{Q6g>Z1U-S<{At!^q><_~vzXIv6FM7==O@0mRW!H=#X}5h{H*%$YtRaN&wEi@d zJy;$a<@Ps?GScvV!gkS~ZyGO?)4?2Ell<4~Vt)FTQJ-9>ws?Mi%VW0BJXWcZ@L@?x_jw>H9H%8R61CHWK=?@5kITHc7kf>%MXL zKUVf)c|A@R`@e5+atWW<|9zu0c|WYrE?^Ig%H-d{99)Ae)_cSHSfd_UtoMfRO&iU~ zZ`Tp^|Ilbn9u9`@O&gub7n+OkM@BDlz?&lck?}qm%kLj!1R2ZkA7cVpeE$u;H*G|c z#rLY1&(r*4VUg`jr$91^=bV)FHuyi(C1NZYi6FA>1?dH$sXEB`mXPaNc za5{f&ewU2rugwd{c>X%P@IfqZJbxXoO1t^-^0LzB>HH|kt4QPdvA$?2-VC>={-qRe z{U1l775si_DV|8i@0XV1nPlv5OY<3I>~Bl+Gp;j4`z*sRk*k0?_)lp!zh(Kq(&wpu z%X9sZI6gQ36?rLX_x!HJ^T^_N2nHln<~O9X;oBzS_l#cVHGdM@yXjZquSvV!2Xy|8^%-d{T3gZF3EdGHI{*W?q?iW4UK-_(q;?rzoE{_#N^Hu$R37Ln#0HYQ!5zyY(4VV6qdy)h{2s4FJ_h55bqVkD z+T_;oym(#0VBUg!4aSS>5{B{~FT4B5+8Q<3mPb-G3ZkEbaDZ z34FP<+n*=$U&$xne7=;B#Q&7W^4Oh_%>RDDDco~L=3j|Ohwt|%r19e96!2}ZBkk@# zop+Y@F_Het5}Evaj8E6UOum!07wdi27tQ1c$k=~o@)Kk{-YkBGjK`bBuS&c7o6POs zME=gx_3T4lfsFmvG+tHOJ^qh)AF{}w=9$iiNxSV~IvhGjQRVRZb0XZ$&nLW!w0pb@culm@Ulsk`0$!gy3hZSI zc=H#wU&zNvWBp!ASj4k2KILyQpC|1;k6X+?!}#>Qg~fc8v^&4?8UI7t{eHq{{2>{i zpMAzVoEQ0bpMQPMdyw(@*AhNJ+I{}DgeQ~ndk49EF?=Oj z&n#j!Pxf<##I<~tpKB(5&5udD&&M|KQ_@&pUbcZ>M9cQsEb$wDoh;ht+u(cBZhe2t zb1q`};dp){|BQ_7Z!_O0oh{GT_KDx~ZPIT0*uwYz$4C6^Wn1{~Xa%1)Y~@$T_`G2& zzb)x_m(&x3aH_ucq^iv926Bc zZ{E+hka50wKi@@u2>B^s2lyc}K2JNqf0oWr@cT3e`9(5*pXMOHL&opZ9O942_KKY#J9WX#V!zKe|cxyO%4 zyZO1#3#8rr{LPEp5y$W5=OM38#{4|uEv4Q3JmT&D2v{J6N zm|uCyuaawk1K3l3hkW#P5zfp<cctxPlU$Q+Yct7PaOOWw?%40gxZhi`x2c@%F z16cpLI;M#E2gaxCe=)PfJxmYtQ_Qr;n4e;1Su*BFF{_X ze`U>Le`EP#{>qx1jQJ~PmLg;R%9)kXR6ga+*QMS0^zvqVX}7#8m=Q0;uVkjY5WkX{ z^FsW}X0G&k8vj=@H{ka2ekCsP6>|$&+^_h+yU19-ubPL*Sii5DC#Bu;s%mz4i1mr( zRn;6v#`3Caej<(ivF536Zjg4%ue!MttvrGC@bJF3d4L=U&s*VrZ}Y?p@oSjprQPzW zVHSDh-=1okb)++tI`4`8<2AD}xdoVm+q@9}bu(PrEuT7On)EC-`ZoODXktAx=pT_j zj{jySHZ(g(yZL{^>@Mxr&l~1oX*a#bW{BVR3lf`}Q7>%Y%uGVl^{$zjNyh74GjoQt zn|^b1t+d-ew=j8u$e(+?d&_Jr?e4#&IgpIw*;eKVX*d6^&6NLm1zL`uKTm9JeoYqj zzYP368T+p`=1wy9Uv12TWSoD0$2>vC`S*9s-^kd1wKXr3vHxmo-X!Dvd^__28RzHQ znNOwN@l<=W)MIh{Zuzt~bEUJ{f=CZrli1NbDeYqg@51~?;=AU+f3du-O7}2-ly;w2 z^)dI5@%-&$9wFoT+t)lv#`CwYd0yH*ANrY($=Lq;nbn?%{ki2mz^o(f=68VkrZl#% zn81N%n-}5_G&{c#f1o*l;*0sketeKQQrf+K4>HHUu>D{&`i1QWn~Nwuj+cg-Yo&4j zI}?YQ2VU5IxOp5+?Q^(!nvCspxOs_;=i3PL1{u${5#~c__jpH|v!06bI8Xgiu$e3E zw%;-4K54hS#+pab^gMQ~`70Tp$Bs2Gka0eHoOz9m^V#Ffd(v+Gj5nLJLh^ihI?==S zC5|^2NW1x)VE!iU?th|r`9Cf|D^b-&e>Kr8>=Ef@C@En0o}HFL4+V#S>yS&lEXE^YW-z%NIDmzj-%7j36K)MR5i|6%`=2B_5{Y06Yq}}6>Hus{H$Zy2)Mw>^-8DI|nRXUGN zg8e1L$C#eNBKpNN2Mgh<`RQ!E8dV1M????Ig3mw7b7#GX$;l8YlLb zY(|lXfjKytjO+h>W)>OO|NG3@D@^D*!+sNF9gpw3)md<8?p)J;2&svtnazzaWWpyeDf5>r{h^*{z2P!+AiiZ z7npa*y}&SkX8uFQ=P?V-Vns3k_&jEz=_TWMBDlF{joF5L2ij)= zTWfYEd-6p6tu=d-OP_+@<4as;zE7?XegqDdcFXH)^Ir=8^(Aq?w%!a-uzs$9y==Xy zlg01B7O)NGOJwnTupC^GTz!|Q|8LBy2!Ax;H z-D?~GF;~Dq#fqo7s7X%r_su{?}_r^>xl{LB{g9XttEjW+6ea9w70OIUTpB^3OMyqm`Aif6q79kvGZyJ>T3+#{TV! zxr2=T+ZFSGw7dVS<~=g*|GN25+Q%Nk`En!ihB@Al$3y$SX~v_K_%7o7y=kVAr-EVq zlsS!z-&?$8eoV&iE#5LeCFA!NZ<|ZWE8@iVx6QTEZhvyeWE{)0A>40{4!LV8s|-SOm8^R~2) zEr#(Id>g?kXNml{`!8fwkan*>g{?Ny*(?I`-zX`->LcyuPq7C5#}m+sCrex}6f2Uf zg9DgiB}=>IU)(BdWBE^o{EQAMVO1gLfJ4Bwq}}olv^taVekRabfc9X0Xx28eIKReC z;1(R5IKBWp-z;k%h2!|swysFK&u<*-Hipyq(XrY%vV1(E{f35?e3l-z=h9Xe3di>i z%2@A9U!v=KIcqc-_gCJEkaqW1!Ag*J%d>(t6|KA~$D0+b+2jUtyjj6oNNxr5h4A}| z))(Y{VEBDSYpt|<{#CM=7wZ>~zlv2(+Q(YS@nn#dES;ge56{O6>91PT(DHn2mGr80 zP}+UoSIy!tiS*q0uxi$8(z93yoG(+YYE}d399A6quMSDotOevBVE&|gQVnYZZqH`@ z2=|LgH7%#4NH2#Cfb0DSNv~NOO9^9nj81yp+Ky%sXT?A%cJRnVknmRb(;^S+O4p={3xQ&%XeggR^ zUGW|3SG3X)wukqPtn<=7r2`n=H?po#cy~x|ebIK-T?!uw_Of8Ztx95h3@=-^m(@%?+x^}Mv&`#jp4!M9}>m+)!T|7H-z~ak$x6g ztcSP>{+cYFcVyM-V;w+ycvazk)+I8w#{t$I@}#EFKKKBuNM&(6_`Q{sTJKpekxN2; zjI2 zQl;JVd9XEKdX^%7|E3=wY~`X^K|J~d`Sma{{u*rYmqq?_*w662L^XMcRg3%=*h(I1 z<&sB1{!1l)V2!PU@w-C#TFJw$XleI*7$dA?=~-;kNb&p5Bdk1%UoQy0uaG>_I!L}K zJ<2*k{t8?pIoPTegy{=6P9AOLNzY=!?<-G)asPA}ucMW9hKIw^m%Fb%gvwoS5H;wyIYZ@!j`{W2^?!sVotm zpVo?twQ{9ru`@#$Tb3MeI!n)D=V859uAOErz;HGMyrNWwwT;3Tf%hh7()De3 zfCJaN@5fAe=K0md`#m2%^S%&qJ)HW?xc>8_XU6p)GoJa~%_6<*XC4dlFZV~yd}dt# zG0U}v?<3B#O4Sg@lf$xLe0(H%mbHxh>U;2ZMe-c0aZL(~lpXAT2>e3lXj1Au_8I@}_kk0qu@#k8J7@rMl zE6U>wE0@BtJeFFI$yk2NtRb(-^w~A2|IpCo)-q}Ld|PSVlg9i8u$5N1*G2pcb_V9d zR@$qqtI|Gp9O?s}5Lq+oV7OS{S+wwKYe8LUWm-EA9L8EJm%IpEtoB-KEqPrv#`N0j ztgGbh(qCKU>&flu`ncYz;pbwt*IR9*-Ru7bYaoWRmo|y~Y_P8S8P>a4?dxOyYHVYy z+~{wt+0v;@81A1f-cW?Y?|Z`bMSb5{=g3z|!S|4S8?8ETV0dAezpPh#vlT6!Bj1Pj z`nFifWU;=doNuc&nS8e3hnE!pdHpS^7s$n_bh#RR+~m5{Tvny{nIJ5RpcGu<-XsoZcQ;f;s{)?ednyj((ZcO3)U{_3 z58Ld!XoaGwzAjtw(mrMXX~wquE?Y~b>G$BlUrC?$H0(ymzEpE@w!|@#O1D)QowMEpC}V`*&f9(LDqTFUs;U){ATNzY=H8o{sMSa+>v(mAYud-y#L z=f2gCJO<`_ikT0rO)qT!(E1s}m4%gHyo;;w2Y!!0e`wtyw~dAL!OGiW|2fK< zTNvJ%+&2cpdr4<2lgN9~Y%-;PA5HmxXn9(R^zis>*nc@`AAK+Wk<|^um2vPq=t9*; zRy2k8uK~ZOk@CoTK;a+3dYBsEVy#7bsY))`2A7kD_o=`QQ~t3QkT=Wl$JS%%{Ngx1 z`PX`_jo3cFIF3)ASgpunJku?O*&WGZ{3P5<+NX@W0M~o)T=M?&=ra@_$5+gLO2+XL zvkSc=_ebL&W|#Eypp-)PYh)Y`6}Eek#ds(pHl;K6}6J#;|2~7#G+qcE^ z#rP&MrIdi}=~>7pSjQDZ2eY`n>0IdGUQbZa=|rs()?=b-?&np?BPq!tL7~g=ev5 z-^2G-9YD6T5v6bh`jJzfzmqGsvT4{#w|N$)bFQr@n31>51_RLw!t4ZDW_~g{}_wlgX)V z?X_qs|8{mzZxNous(RsjNU81Ycck(9o}Jpk9w?o`Cas0>UPvc?Peb#e+2!{ZC`i$2KjRsFMg5Q!(PxAuXYb+MWAh{!T&v|6OV? zJC{5N!oN%HYo8>)auU8$mO8+GNL~m&mHNK@a(_(ktD~a+2HUmC57!9~v73`?$o4VR z?m%7$*UQ_!59~hV!0sZy!|Y+?#WMfH?TO@1CyV$a>;&@FMbJy6jS?)su3 zc1iMXF#P_u{Tg}0b#ebW(QZiI1@^Lub|*5xeTX|pX@4P1g#z!6&Z+oS2eM+;@@ph1Oe(`%g@%woRcC8n}6YOR$ zgeTgqUkFdMd%O^yWDoEQe?2Y9p7=tz&yFU4en$MBpU+-G-T=No%4e_g+rHW86#M%Z zwokQpN@MwXS*raj##h2GiTRi``#jkP4q$2aH8QSmPPgx(nfN|s*}~~|xj~|QQknQZ zrSJgqzpy^8jh=3gBgg;9SfjK|d!sb&KPx!P-iu~A7sdS3WV_U0*&dXqMLcX|!zp$x z>HOk&eVk&CBIEUOiakym)7#N?iXAjWY@aW$mp2Pfv!lp(ef-G&lq{}~w+ek^A0vzF z+pR*=ZFMMaFRqV0E6%W+lEwA0jAy3(p0tmJmqmw2yVuK^cC>U3OMvTNtF)Q+4L=V{ zn{7Y#b9!2iz4!yMzijp?Tpw1a&9fg#&tmyeFn&z?)GjnkghT%u49^$R7TYRWhx_Hr zX`k6_IEI(<34dXq04or`6!ho)_;NdU1g0;1D{Z-bPCAE8hw=G?v=w%nk+}UN@YA%F z_P5gR{nRS^9)(wd{>=cgzVN&(If?WGBW4+UN+SA8icvH9^8J51sUQ8DCIWB#_-Fz&DUx53W@brUrFnKB*Pkj1e zd#-dg3x@WQo_@^ULg9I^{nYdmHXDcA3(rpf*?wDk7W)|Hr_Lsxw1<9{V!VF8&_DJ-vKX&_Qv9(!nk>faZEHQYBgxp`JhoHG*xx+1v(U1CxnJn9eZV#Hty|cs6^`j) z|5U_@_Vc6k04I-(^A|;(!BBj73EhtgR7bApRI)gndw4C=1~op@*FS#~G%xg2HjW%W*c6alXsz?4|hL zag6oN@H!tyi}bUZDF2}urJTiNyCr-NDWi;|#$b4_jqp96j0#RJIrA=zhchZWS}caQ zzbEDgt2hm$b68pf`1OU1AZH+k(|Eb6GnL{`g!C1ssN`pzrYFKzWHfZXN)patLt+2lWHfeu^7FQgH=PUQSQ*~ZDV&V)3o0?TFXJ7@ly>{4 zc1}0xSxi-6{aZ#mCq){*4-Lm#z}h=g$nWeG1IZ^vu_*K>yyP>oa3}==RKuWcYJ$ zkna90{0>~N|IO&(g!|<2%kNDW&FtyKN#}boyr+{Y?e<5#oDZel^6BNwk;d_*m-TYK z#rR6|4q|-X+xbD-r?dxqS#M_#g;z`$zqasva5o?0B)gg*!83IDG%(h$#OECpuHa$MOH*CK1j@(izJ2 zJ|0#jGup|K&i7#Zi*}Zfv3*86>&Vz1W1Jt!*dAk@LvA?Khlj;Er=+pGs%OSIkEK(U z(QtpLH%V}cWXb#}ap1a{364h2Y~o=(!xJ4Zc`mp=xPohFUtv*6&a31VU|(>OQ%8E2 z=PVpg^S={8yHKbzf$`-S&1Cp)>)c?{dvRAH!>2#BJ%VVZ9 zR@yC(*-jW4%VV|^FOA1DA@gHrkF=Y=xelA=pTD_I8)?j6R`5J$E`?+J`oszP$UncI zI-$~T{uVna(%60zG8a3mr8DIF_3Mj%?tDv54}$(G@N?$}Y4{!>_@|MdJ0~eTIaq`* zan4EmlsVv^MlNywpzslL`&{P^g-6KkbDe)Eyu>>&e$9l{4AW(Pl`7y5!GY2l^7mILXp(`L1&|N@plr zU_N1M=6YwFv`;w%-U&X4W@lyi24~_-kzOA4PaB-6(rK(UgzwM%##tpji?skB&HUEc zDD7j7Q^oVh@0{>iVtZ_V37H$6BhtI+`@)-@Ub98`ZieNz*%?E|^4jb~k+HlsJ85Jr z|IN;0X}3Sz>L?$J^xWsUTOCIl_kS{Tt1}hDS$;L~d}o`Z-VTQKh|afY&%>Ic|ITyH(Dngve}5eOl;UH1+T|3RBh#n$w9Dbr`NiLZ z`HzO7yPZ-LJ_>v>bGK8O!Yjc2b=ksuoaz)_6&%3!I1MO#@!Rlyh0MLqIPym6eNHag z^Y0`0{oBm_PRqG?e3k!!?+a!ga9Yk2&i9DlA@#CDPMV*88u^n`>k|w=4&fel*jX&? zV{gLtcQOw<=P3LboL?;Kh@&pR_+_AdJ6Xq^mSj<1m9maIr50kiF1J77ER*)JTadpR zS^sm2e2U@X`Ug)mop#c0eV%mBCv9J>SpWFk6FR@>fpx`r>UsFD?OwD#SB$TohvV-> zK6f~@2mkO+aDQ`e((~}{HC_z=z0!;6V|_o5kM;Z9Sf9_0_4nLZf4{oN8-Vq9>Y1^= zPQT!vMxJ?Qtgqjm8SCe{v3`Dk7LN6E?wPTE&b!vI{a<)yZ2!+3fbIXH8y=8;9KNrY zb(4#kFFPlscgy~>q4$c@Z;_~P_x!)+G+&Iy^Z%ODf{f??HK#Kf&;M&ql(gGE zt~sgF?*6Vh(4btxZZaLdt zh=0c^_nH6k+;b|BF+ca5N@U#sJ*OWT_kYj%NZQ@sJ?9f?cYpVsgA^b0_rMAI+<$+M zoaSWQ-y}A(||l79zBrUYzI2cHN3AV z;^&c9z9RasM^2GkOm8gQuZVDyTqO$QS0D%NWUTn;M@~)h?{Ga8@#~R4KLNjwll91H zDxIpV1y@XXU3&#}gCyuhUN&_Xl@C&Nd2nU_2?}^Q9Pn2Fx!CcazR9-cBAr zY%lFo`h&f&{ZI=31@gDP=o4qObcXUL*vpG$V;UQ zd(|(oK99rvb(0ZAyv@m%qyxO;qSqfxP{M)Tz z`4oRld(HBCJCIlJ6X7p;`$=cZ z`KN(dCB3<5n(ry?T`P^}&$z78-feyk%_`$9vs~m4+W$>B-=fNSUq-V4*nezRId5IE zIG&WO^4?zLQ%Q_X$*SNTMjkv#xS}`I&)Hd(yg7cJm-Vvu2S0zF^@{hppI2p7_m*EF z^TR}X-(|h-ZS3c5S#`XF$=5SrJxf-7ZyNb+7#|+bYUq7Pu6diWGg)tVi><`;Rzdk+ z&T8Z>MHc<}t*j>A+2noS!1IQz=H5!HFuri%$t}H~N$0S#P+x(Q+jv)yMSXfFxAlHU z7WL_!+|HXv7WL_!+}?YXEb7xcxr6sCS=6U@a!2oVvZzn*uS8qJ|TX6ZwUA^hjsVofk7c{vWou7FDxWDe+k1)R6pO^LU&XIQ0 z@9AAc>EZYEdwRbl#zpm3JTc5g6vHyeFjH zw8grpSSMT-_H z(xU9LQ)EkJ8tbg?*-~kjR6^N{5|e~Vn<9y_wxKA6`d#N-*EO$Y=8k&zeZN1S&(F*s z=kYw(b@qLEotqfr-^Ex)jPbkOC?dxA-EM5q%;Dc*l%MNOUsuBj@af1=Oix$i3}Q@A zSL0k_46mEfj2Oe~X0+DK;dM90k~~*`AKb$jPyDR@KDdXGMSKL-BPo%dMgeizx77I8 z(|DYC(I7RS?`6y+ej7L$crNi_y&mgrEGDj~_tSbCD~MNWc^_j9@fUi%*2nmO_;)=% z-)U?jmg80V-D!M9Tov9En4i?w_=dO@up#;yKM}9USM{%-afJ9Y;AG&0dDtH3>GbtC z$`Nk>P89tO8=30E03%;B=idNh!7Ivrs(2jw+l!_QG#1Q9UT`e7LIAv@xe+WE!$^%Apu}WWIbn_xO-rg7Fsd za9GbS1AbR?npkof?7skiLh>2F8-TwcR=;<+6?i9cBe>tE!zy zDU*#pq~90(+cjj0F_`#4;O~G(5ie{6zYo(l-B?QeK5#?eH;MDk2#H8~hVc&Z=e6PY zwSYg+oEEJE`qhCqpqCaI$HQl&XBvH9)#(*|Kz>eow(+s%RPi> z9uxPsf&H5Fsm2P;6Gh)2)qX{;@f~qqHr)3GwwIy)<_A^z=NnCzBaejnb?fweV~^%M zanHpeaZUO|#zB%VYykJsfTz8o^dbBU)&9#gW3FayU(<}mns=35-aI6Fq)#*6@W}53 z-iPu~r9vU@N`J&SsyS7x)B2AXlUJbsTh_w)9mre1i9816Bhw!>5>_f^|EC+}G-LSp zrB63*MmhQagwaa?yv*qw=G{V`V#j9p51b`u|o6e z&?0DGueF?Gh}Fvd>X7=rqpj9KVj zDF0qaU!eO7@GlYLv#6LcJuYKx;5Ye}F_*{R+gV=B z>im6vy34=8{>z&#C*B10cfE%%I!B0e$G^eu6N{R`_b>h4WG;{OX(e+a)*qKu{?J%00V}7nKX3X!mjm@6?g%?JQ-5&lV{T<`9w^eyej8=sD@kyVxMhbCN;LX5w zh_^!hfcFTE2E+$|lY!4CZVmUtkBIfgCBz+plYuWMR=+>CCH-CFI?bt3^}gUP;Lap} z?XHk`eDHflSK@boKS_Vj=!>k^OWS+CZ;T{X^Xu(BKQJZ|tNHczo*x+n#05(ge`3ra zR`cuaJwG+(Yv%p_O~wY2&w%yu=#iU@=4(`br0V(ooZg#^8Jc;1yrnpQ2g3R5f%IZ7 zkN4@evHUMH-j8$LkIfj z4r7UCoNpfmuDDjWKT%Q7mv>Qoi>Q7x!+ACImz^u`GAyk>F^b{uHmW1jd}g=Nz{4&2 z?KUQmK7Mbr$H*eSX|$Rz?J)|8hr;^o)Qr8x)h9Y!K{+WPD?kTZiTMG;kZ>j>P8tOqbl*2z*$2M7-tYyzgorrN8@^Akq7sY zo*D6@@t}tv9r2SfkGMC?N4sVmGS+$cuD(AT+lYsag72R*eleW)bolUF?l2$9IAWad z;RzXk7z2rq!g!L^E5Urm!?_t{%oQGQHoz#5VGCO{# zI8}TF`SV7GZAL#rIrhgX=6+)AkE@#NKUVTIIgJ41=-(`;uOU&xZ2GxkejmApX>3u<{Y4G4re+-9e#)p}UVt2}@P*2sT4pQFsnN56 z58YYIyprUfZBg>tW(Si01bpbu+U6}J@2=g~F}o9=yH)AeG5cvQ6#K`)d@rMpnMwTW zgRmaStZN=6zWfFF9xU@rGye+}-$L>Fi;B-S4-==(hWB1G&oxJFMfn%gg{YBvo;h7J z+{YWE?h7?BS8K-fRqxx>{7m!e5RQN6n-#xQ?pKF!{JX%cq8aiZzVBI|exW&(cowAR z%*+;MuWd>{RYYKadVP9Ja~^RK$eU!gHfL;C@|c(g<=ZOrGINFIRI#8XtdBA;H+y}B z@@V;x=#<&cd`dH%x9RcrT5}1>@7DXz*O{+ro+x54AFSN(I`c!#@Ou)#T{7F7zmWd( zuwUFa^9J**ua*CNKHSM{pqa;$o6HuPvA=E6?bKVY2pK(5nH<`DX z-|fZtjs*F*%v;UY-=aKU*SFiu;oqVB)m%t*W*2jo=2Vde{nNvlUCre0mAoj_VY?7d zXZA3k)SN2D+!2ECdYaAmp?~S0sQFuOGoKmq_k%O!e87B)Sk0HWWsWnK5pRa} z_-$sY+3i=6v6E|Bl=&NA<^(&GE!zE{E^S zvZk2%#Gin^m6d6B_=EgUfcqd>Ic5hDf%L>q;A9l!^W>yU&&$u1# zvt&JLPA5JGxL4NWW`_vM+X4^CddeJ6oTKH>nDdCcYMyC+L7aRij0aiIn?Dk-f%))+ ztQXB_0{W-sf3d8W%&RoV#J@g(^=;NX^EQ%igzq!vX1#2VC6?g-Ygr4;8N|bZS7$9T z50d-uBJllv)~jZ(MD%|qr2o^b*UaWg$U~sN_&RI3Ig7Xx@Hbg2%+H9UyJ0^yYn558 zjM9(k{;5o*BC`qc9?0LVNvq94#EYRmY)yLGe3*D8>^~gMT4TPdIZqr+fcZ}LJLW;n z*#9JpwPqx${6{XAz0P!yqt*2J^1EhD&8g7_z{%oW^DL5|w-erfsP~@PnB=X1^UJ+w zwm`X_?^N&mzS&;$YJvUR2J;qT?B6~#him5h8XueAX-*T5!u`^Z#3yF{DVSd$L-@~L zw9#yIDzY&`_3xjVJBV8WLyb2ZlylRgxVeW7;B*h4mc7}WYp zCu7z8@N4rhvD)t_JMwE&l-J=!55s!6R>s$6RCAh0hxyWlz#WKx0PYApjabc}>Sup# zZX@?<;_~C3} z%_F($UuI-StQ8)9DLc{XRYkeq9y$}`i?YjD`I>j>_5SkgsI`h%tzTzkm$g3BjPZvR zfwfsPj-T-R;?`c2(|eoctOJ@;qxjxtIqNr{`|?)UP~o$G<*idZT$Ekjs^Z~w*%hoh zn)$v`vULN>qwn3P>SMBXE6Sr=fDQOLx1J;qH-Y+{UCA0itk(ZqfQJ#Q-`|~|RLQ!R z+^gSLGejk8yk_|Q0ay>sPpWKX661bCWviB{;vW+;p#R&QUD>)u^Y*eI=>3J$tR{n!0u`-D-gzx>z_A{*Mnp4FKuwT6{+pucbN@7Y zY|GlAIVRdY0oFN=b)}=^yF$3Wl~zTG@#!-Fc4JbjS&fMgHx!~wP7SLA@vktxl+USU z4JRH7_iM}NoMBBP9xy@4&$O0l=JGk)Dhlv=&4ps|68OHT$Jy3r9=^5z*;W~N6kXNd zqaZhO8d$YFTs7w$>pJ2mlzXG0b(@FJ$Z2E^*UaHJw#Ei{yoU|Z*vj{CgPbPTeh=3d z=UbwxiVynNBmCnZmUD^qw1=GmY;hSC=3H;>sjk9H6?LJ$X6AIXy3{~^5yrpzqLa0PcoX!ec{!b} zIyF)L105AJVWtT{FMA#f3JTaxe5@&VSh zB>z#%2Us_0X8#9TgEbe4*Z}qWP6Msy&^_(146^2W*bsxPB_4kNl)=_Y&G>umvvY=8 z>rt+MpMA%DcUh1am7WCL@41_}C=tWE+p^D4>E-j-VO9;zJiZLGnrp`N4;eDdx&oQL ze;IDI*PI%~^V;Fo&6+uV_gK9(bNcSFhWX?ptT8_M2E2OquYQ#5~HjaG;{c)t+kpt{L$8jKKU4HlTSXz+OCoXOVjnhQlQTZr8`Q>m*7;PuXZVpxTeJ!Q4ioErTSxCr=0l7}`a`P0^IBsYMIfO~1?@Sd^8YUccX##)H(sXflHmV4L` zGpyAfe*ctbtqq!SK5-=HIqO@^g<>|OZ+6b})?p7PPJO{@d$vkno|adfI@{`~IaTBq zz-?H)4Lk>V0Hm+h)VbD`=OSMW{p;CNU$zzyABFvm*9X61EpCYN zr@%kOhl$sAMZU5T%Gt@aH{VRNL zdd<|O)?wl&;e4Xg)MZv?W2GMxU#1Ij`_$L1gr>-kfxOSu6_!mr#Y| z@HNZSx2&U@Q$?-iYQFZCHTZn(p6*kz&#R%v_qA3(;@hEqC>~Dy{)h0M;MBF&IO0!%VMb_;zd-q)DjoxVYU(^Wv zn%7%hE>s*7H$!@6PJP#^aS_T-dlkNS483d3AU>m~;`gj_El{rN=f$D-t)ayIda3X> zSdS2gep2^CHdxOQ-~S`>0?j-gZLlD4*m1%9Zj;E2_X+aLeMs`vA$6bNrKukkv${{P zbm~THh4wE`Tzm%XpPc%swVt>htVdT&{nR>4ybSg?Yqr~DiHlYI3&o@Nhs2txo2}-= z+u?iMty90S1`yu{`g^Btv!)aOFgPR*P5sK6NBkJ<&##%f!&uot{eN-I;c5MOv{J&Ct}|P^5=)* z^sD<8ll$&3W|cpe#tsxS=Fh=^`$NTY<$g`OUy50|Zy)=$n9=<)>&jLt{#ZVD#D2GK zMvmUo2j+_-h24#K80=Ty854G2&4tl*<3nN)a3=Amn#1-2&8tN_SpUL%K=#MPkM&pe zBhmgI^~H2pe~gSJ+6k>y_<5Qij79A$J-oBssdg{TG0{@O{l9h3)pY(la36)>rRCRk9Bf_dN?){7aWtbUSf5;uXX;@ik|oejVZrk~c!u=bM?aN_Hy` z&oNH3uk&zTtcu;w!;i%bdz6RG0k%Ee!!u*je#gV}VyD}Gcz9W?rd{DutZ(Z6;;L9} zyFRfxU(Jl2VK?{i9HX9ng@^NEXWBhH{8+5MeV2#L0S)W|56_I9Yp?Y1yx4j6VGl2h zoo|=94CAB1UlqH+u0^cQcQa!b+UI$Aj?uzy?cu!G#rAC;ek^v0-QUCJfYx@lhiAqv zwO{k_yjWZNfQOgGuChfNjE@R`RqSdzg;?F+%#2-YpXK2>Mtl2059h@?*d0CmSnPVc zr-#h}9qmaTo*BEzUf|(*v0LnKJiIJ+yZx(&SH-&8RoY_w)cJO1th-&?!*h(Dc4H6c z#d_J-dib$eZ@Y_!%>jMwaUPx->u7Q4&-(Zj1^!|d{xV|>*8)y&vE zc2y70F-F>FdpIvP%D&vgkHtpYojhy~7;BIA@XXl#_Dm1Yi>2CIJiIJ6!T#36t74Pv zq$^Z>c>I`R+nNhSS6GkD=`qEA8(H6f*xzr8{T{Kp|8Q&nDfXAd)kmrJn{MwSZUkJn zf4cnx@k_RPFD}DAM7#>PZvPDX81Xh}UtKC>+6hG;E=SxI*1I<+XW6F_ z4*;HHWZCBt{{iP&Rg$yq=EUVI!1-k?+ip#KI_$@6jOEzFiJNMkYClKZ3eHQrREXJg zh&uw;?H{ujY0isY_qvkj+RHV^q62~J_RqE7LVbN7;;UGmy}`rZ#tQAvJ^W*An*Ec9 ze~&$4pL!M62X$Y%T<&AG>0vAPDZ7s5nEpPgT<#2e8}a9p;QTRnmfgCYEu1l_htKP&3WQ`_@1syg;(s`NPhOE$h}Fv z2mDv^e3DPn`TvS7uEFq9A;0Gs^X+ShlcD_Q7z^wk#Q)N~&>ltn5tQ#7W05^obD@wM zVZPCSvHcmzx5IgJw8|2D3-LynKP8l1YPY!-!`lV<-!S(zd$Na{=e}-lBmTLb^8Zcy zn(LJQ#OS0UYCgEq?npd;t-8;%((Xcx=Nl{SUc}R~AUd$X$Mf`FHL*yXy6d zSBo29ydHk_I=eM-C*ZWJ-?bkmUjLnvZ?KmUzYm;!^@n!y4a$8?jGdz1FWYDj(v0&B zIFYjN3GjUZo)F-y02g@J0RLtnM;{-j^5-*qw&v96B49&&W-s*VZ?cO>ANO}R+v`am z_p3MCpLq1)MG5$(K~hcTkNBnQ=_AG_*?A68+HEb@-f60c0~`@7hCN! zkfS>~sQb;^>~l1yMh^fRVw>HJoZb|ZEz{$W@pq$pfU)dczoGiYwyOR5U z4b=MLYx_=eKLR)zc&JA|BzD-NJlqa=61jgmUDd~(b`H6p3*1iZw5NIW;YNo2w1<1; z?y_flctGxMdy$9l&fR0LM~*gu_BJ;68~bC;snIsTy@05cR0l+_? zoYMcDeb~dja=){~9o_sNko&z|&ck=-{$STarttUMXKCi}_uEZKj^Q7$TaX;XKVY{( zIfehDeT|0=@uPhkxu4xtmG4h>PjbHm*bqP213mh%Lt_sQ@Yn#4_pkx_dC1W5%=X=G5qBU_%_TXL$5O;%9qyfERe!0QoB9=%SU%zhCTinp2~zfDQ4B{jo06`c$Wzwc^S zM5g>bVp|?I#1XqL>ErJ`9ktKZoEpX7dpc@g;L|^5U+&ZY-M-GJ|GVAUr~ilD$EPox z!9IQAjP&V;oQXdDu#@f64?7R}^drtppMHWf$ETm*EcWRqI;(y9NzQvd{Uqm8k3QUx zaK7}g0sI5GuQyTUchvcr++PB0h^X_2M;}h8oH94L?Z*H%k)!DT6sMZz)F`??#i{4f zhx0@-;6X1se{6v7C z3-DYI8xa53k?DN2g0osPpO02>-uLNObhi5R;pe}7`pM2dk3QV!cYg8k$BmwFt@T(L33(!C-7uo3+2?FPIIbzxFGj5=Uj6CbEXi}bE`Pb$bA&%BL%>%Jo->$ zoGSv{KERy=+%>>=26#w-M|!wROT)=Rjy?qEz4MbSr$BRR^ci5dzvw(p@(CGgyt18{ zBrgDNCv0af$|?PhvpB$S1o&+a8^UomB1b1ZtiqShR?Vr=0$@W(XE(_Y*HPnjinEX8 zHhhnf415^nI{ai&)hTncw|$-Nn8;LLsyWp(bA74i)br>cO{(r(Li!iNd~1GEO{XpC zUkYr9n$C43UprdKYdJTO{4-!f)N;C_T*t={wVlDF|K7_=zm7A4^tS*TqK@-`PyY-j z+rvkb>N+#Xy_zq~Pdd|?P43lv!4PLU3rT+E7$vXoEGKyHC=Pc*F0B;QN z)&TDc@P5sCqWucEf0uifbLK5>es^hkw$ohmYJvMz=QtgSaX;%E=U&abLW-ZuJ=b{x z-HUJ`%Itz#o&x7w@bI)_O5u31nc_X*6bMvh_JiVR`iN;QEWJ+ISXOxFq^lR)) z(#-F}HgWPb^ZK}n^Q1>VB$_z0G^dFT3FTR6#Gz48`L4PumE?CkN$FLn<5RA2g?l^OIHlTRP>sD}B!IR*tQi^;%W6ONque%5Enj$TopXKRwRM_Nc=tg0w(8r~x!NN)L|f-p&3wQ0a%Y4` zUSC}9WO{f@?v>8)9x8pT-_EJpQ!(7ny+`#|?VQtlDdzK>c1{b;nEvl_+d0>3=K6V! zGu$JGFSeYqn$tw%Q{jr&&}(%1)&A`t-QfGU+-r;Z`?YF5=(4(xQ$FPK)fa@si>F-c zq-+0nm1Xz27+zHAM?wD)lC%EP#O(hIn&Et4cu3@cfAckOFFQ(y*WOv78Pj*_we6i~ zZz&R%`3+82lK*xJ-1pAC!5QR{-*IY3XT0WJ zq3dr@zyENPv)Ut1%IoZW?UUc?SbbFdIQ-k3>H)5&IZYT4UfVvmIqiJ%E>1_1e*opv zwoeyl{hi7`uJ5-ypJ`_QZ+Et7P7^H?)%pGH&K{IUH>Iim`wnM6@o70~yuHIYOkBkX z2{Z2wNAz{$TNT(s*5?KF^13^Xk)yR?elogDPv>Hf{!gN(b7nssKQRd84fA?CqxvgO z6`g^b=k;;w4AB0IuVFu}Ro;sC?4sQCq6~@PotcQKKG*? zE5J2Ke@9v6ezY^rCm-WXCOP(xW1LZgz45u%85iKmn$tw0PS3rLIaKL$dd51nG;{qL z>zt)IO>9bn_tNvmI*o~US5SPPa}n`#hT{93ONkppPtq^%0jIs@iP3WKJzBpZ3aEO9z8{C>1Ehqxl_Hy#mb&LZM-fRlmW&lxO(}`;WCj+0Yd3)Iq z>`!hQKH0fcGnP+!-ehOI<|6S6wK)4`@?kSAn{8N!TXK9)18iYtMFHaKloYw zo>GRhM02Wm5BlE@y|Wx+n35NX2CzT;TK{aP2{HaYV~%sBX1wo|pBHm(Mvi7f|1v)* z*BMW&_6r`(%XKm}r|SKJeBc7jMWH#M|5RR{Gh6dSQEy;K%*xAm-Y0o);I<Xmn&0IdubN-db_`Xog=>H4O zHu4Yi_XX#Ukt#m<;@vM{evmiYc~mp|_mZaBkAf{x5R6A&b}Ge&R=Yi=8=|xqn*fys8=VFC>;aD>bKy-Z1`c$y@5I zC+-OS)1JK7oKJ{zL4GiAx$^~aACMo+d)?Vdd;|1f2lL)=z9;_CR=mPFL_9Y|@te*u z%^dzpCpt!@CrxC)_>o_3r8AHCc9^d&ow~|tbFZ5paKq8LMsu3D8v664Q;QsXtXKY) zQ$ur_!2bR%=UUC2{?*PcKK<2BchY}Cm0G#gPEX=vx_^J$>FsmB#<|PqevLDl^e-)= z)*ow}2YvFjPA17QK5LyL_j%*H&WYTQ=~wc}eb+g4HFN%~cN%%*`Q_F-Js$A7f7cnP zIZX`E`S-4K5arQLuzs7L^qzB6b82)Kup!=a631!x(U;)gk!e08H!l~}Ehj);xUs0X#YZ2exa8<@Y*8HXHd4d<&N zkWV7{Dv*~CZFHuR{EE|oLH`$GeD8gu^M_`R??&g;G;e-ybgF1h6P=*EkL7K2&iBX@ z#b-`?%^crNPDf&l?>d^b56 znz{aLa`H5%iFS~`cK#;kMW6m=XR%Lzv-1Y&cY<6$J%6+Fwnttk|8r-fW*#rMID0gw zieXS5^OLqX$rDxjQbkwd^ELB$xy89aGmnp3omRv+K7Q$3rx!`tUv zr* z`9C=`G_(H)o!KP60@g#_>l}1m)y(lZ+#xci5?@nd5iZu{5WNozR}T8@*f8+DZ%PAiD!E-9e zCy}EsFH_@RCHV^K>+;XduO#2`=s%HPMeaZrx6gz3V)6~yAycI{ReV2Ju_ad!*Vb}J z+F2-%YEF@pHS>DpbU8~i{vOHv{L|%8&D%rktHNv!xNNp^&%dv9x->O&{+%w{YsT~z zf&NGjzn@=2PC|}WKA_T9OXh3F{o&8^Ysqps%76B+wgiB`)rso&p1#VjE$e7G{+{$# z`E}$#&8gyg_&kS^od5M?Zh#-r4D(ZHf1fw3CueEq@axM3KK=S~ z8R@HMAP(f$mqo-W(7rxzc$WOYqkrL`26DS*oIfAVKUeNYjuyaq;UD=8<*2DDz2l=- z!2PFaK|>jhDc(i(wV`aBtMfyAQxCo`zq6sdhWLZC6gQH6HK&T_!M`KoJUN4S_9*y0 zf`aqp8F}a*wui>D9x>Mc#_~$!vZ_5s3mVG~nz=nSmbYuh{5zcASoZPg|B>HB4)*Cc zk@x!ao5=AVwhNldN60Cta+PB%Hrr{7&J@acD#%RKts$8?uP9(nZq9&)E<-k0;Np@+QT50K?GWBBlUDzd6(p6?HoHHdM(KTr-sF8fnYXuqL>@?MhT`edMd zkmNW%4h+-}W~^Tuz%Q33%U>C?}3e#jUUne(eI1hCod$% z-~W0*wkF2k`x+;gd-N~s@SrRr#{Mf!t|!LdA4`)RA4UK1_r}J{>BP$aUnfkI&uGT_ zaCgBZ`6|h=KTnsRYv%TrE_ZwMVZTxC)0`$wf$^$y<#hQQaXXm5tg4(L!_!sxT;DQf zRn1)AvSbZntZ!K|Q?MQ$TaYCmCC2>D zlFw+y@V8%(C1-2irN^V|BiV8(>eKu#TdqTS2-BY}KO@HYWy_tYPw~l?zi3APLn2#> zCsq8@L?Mj#OQ&YbeBy^;eYJFIj%@Rkn;#)DRbHbxO&o&$J-^&k*~=%7$$=y<4=p9X zTuhGF%;k|Qr~34B9>RQgX~AOIka#z^x~}08c`5NsSZ{Z( zyj0#u+ydrHoh!d8dlA0_>!Z$DVo#70hqt7s=Qp* z_sEYXy)G}*jQO{_UXxA@$@BM%T{suWmb4;8*8s<|~Hps7i?mv*x=e_a! zP^M_c`tVD^NAg@^bss8J_=#+*nd{d^d2N6@X-*SqFdpTX+bDbb3~@PVA6FJ`m9vQ7f&Ibj3%`_GiQjPXSaNV82g{y@@>tS-bC^?zejNTD z8AGP<_sD4^$ME;aCrOUs?~(h6G5kI97tI|09$96+_Md)VeXs05jN$K+g zy|NeaD^Q2reeeyTr-Y_!2FAhs3y;~GUeYs zS(oIPfBR%3l4Jhulf#HH|MtmyHFN&$lan-a{_T@Fn$rYKC&a=L`(!S0d5Feih5O~B z#P2|UJXd%?&hWT@x$sB1z{BvpgI{8S&8n+{|YHGF~5M%mkrp#NR(#PX# z&6M?;IleVhK1QbguV%{UB**xJf0{8qiK1r8VbaI&YNa%KQ|CABpVvw`teL~Bl~QFT zmIvlft(29f3V$83)DgB7CKGcO-7QD-~0kTkp#nySsWM(rg+WuUc zJCue4`aMpAH#Ly)%PwX4~y7o%8ZDr zFeg*tm2RIP>gm-N+*8x}5hlHe__-U#lie|&)ce1kFDL8O|LyYqZ?)f(_3C83QsdA+ zUH?wjtCRKWWW72$U;E!OKRwxBo$Rmvll|3@+Wz%l#cz<&-i_&Fjb!CT%co@|ff zc7)c43B~f@c+T!{-RQ16{q|w<_wUaK4(au6f*2WC-=ck_*ghCPzq>?n8?AqNo$Gg> zP%MwvZcpZ~s!v>xBI0EJo>>3p&nLH?`0HQE_ThJTvi`;!_x<^FGJj9@zy5xT^W)_B zrt$@D(XGe);cIXJ&V$%M*+Dn^}+jNBxB2eP@=lKitmQ{-irq zUhcZ@WWHei{cqP7ZYOMFxr9WsJ8@o+kd5(V=5q7v^Z8Vy`233Xc)rQZ>BWA`ZO6zZ z=j-f_<=BoAXkMRKJg;ZHU_0Y}ljRt`8!pGEbiGLNyr10%{SUTt_Ah83bcf@8V)4A6 z{b%>V`2frR+@GZ4`9JHI?w>mkn|Tz=7xg*434+Uw<(&WjZTp>XsrZIOi|uGmr1c`2 zVR8OyvVYrezWF6`Z_-E8)yMiA7GJ;{v#OuUOjr5|wEvq};vAFncjp62kL#^lul)82 zVtrd|PeFHBo^E|^3BN(;9pBiW()E&x>nFFzf5J>o4#B-aJpbKA@xFSUN@rMbe6U`H zM9{wUcpgu$q#XTEC{AB69ITIS`NWG)>3T_`IG?wwbcMv?-k83R#v>0+Mb4q}ZLm^t zf~b5D<+<>dj`zG?aTxwN|Ji@$YvH$XRXE&_HmHK``Fwl;<@3CO=>H8A4|ac|=E_Cr ze$XK-zel=ZxF_m9o?evB@qf+o$B*NQW>~O13Esw0>Ak!*nh#MvqZtm^hXw1S85XR+ z?F$tib3|+#g#O*A)5-3j{k1~-w-;jk*z8aHLL9&P=P131n5^fI31YZ56Ga#JwoApA z^*T{}w+}{pG{XYJg?H^=$8fHrax&pbd)petY+PgvS-u_w(OBr#aDn=6}j~!sGAB{KfX;FPDG6e>$1JDqr1s-O2pL z`8T&W?k|G#6@Nat{TbT-=jNLy>+i|>>utYWU;n4oU*50cc{MY(tCIV@82^*!ESyiA zA6&j{&-sV)ljlhP*Ykzj506L8+}=;Fvv8is?S%7%ne#2!p8o%?$MuNwhne%`WW73B zuhcx_ueKwuM&w5F zFDL8Ozn6a}>tE^l$Mq_niR#`|MdMgzV}jA z-+PIOR%uvogZXs4{QYyeTfUsXT>m+oL-0nQd!Np|j}nx}D|gJFuxPFC^+5aa-CvCq z+h4}_kw}m43*mhob|0bpS_#GZf%(GsoLu?HA!?o*602^)_FDcnOb5m%K{VKd@{Es_ z876-tV*ag|&z%3&=|0e-`g^gks7v3A{nO0h9E9HpR`KS0m3xo*x#Q2s|F6ucnacmL zIG+DpPySt#@3HYcte}6F-;d?NCg0z}@^SBnu|3~gi+9hB<-vPzuic3CB-R7-m)kYh z-v;^~Yeb+P{O*RXPa$G>FNfTrUf8Fn?r*j(M1M&;5zVr#Ad1fU2)27VmieM#Qb~+pexZ>>vEz!a&To4s-u3|6F~4`r!90#-Y1$ zBjC3XJ>{TSg~#;``!Bw4;o1k~J0U-nJJ#oT@%YN?!>`()|Czdp7l`9=bmha zMLazo2e{p!8K!%Z@Sdu^7aA4=>3%44%K(4!3#NnRJE>n`#(SRVpL%ynwa?__Nb&th z)@%K)-=8;z`I*}->rYDa%efu1962Jc$T=~+WIdj^>1OxisXYe$jc0#uKp*cnyZ){p z>yOW)Xa70pRlxG+@W=h+*AMcs%6|Rl^nGME{BeKy-PhLn6A^6RaU#m&nOu)q&iT&v zf7j&xF$3Nv$%9iqP*2#ZtC zMgNiEoqMv!@FEmmf;hWB`iu4@<8$UE7(blXK)+1>jG*rk{(#>IRq1$eH=5b-n|X>k zzaDx|*@wl8)LwSLZ^|e}`-nK*Qk)=O(`KS*{if0n3D!#kd)1Cm&$X{F%`*Hqm zz-7+I14F?%l-KQ44~|ehs7v?L*}rqnRpIcwv!s7Kp5()rrSz~I-SyYy|X`V&lVkU4%q`*_UxAIvXqfBanr`}?TQ->^V?p09H|h2P69Rh}R+ z_4t)2#vW1WN)p*ReXc&|7rURP^&+Ace4iAC@_d2bt=P60^JQg2Wk$sICCUtmE43LG zLHkallpM=hwOek_Z0`*xIXR(Nj_vKQ=YPC>W_!#>x8AY+KV_Z^zqzQ=%ljKRe+r9z zL$O`_Q{fbpL;tw`{8Rq^U4QPQ`Df5HmSOo{yib`SF@^HyaD5g3h+z9C^><0!j@|mq z?EuZNK>t|oGM6jMnGbxW!i|X9+m*@whXvXP8Sei~QF^dWAEx4$DDvq$9BzM{Kf!ci zy2Ij|npiI8_sSo)e>$rh^3)%c>4qC*Cm?U8zsHG)Z}s;_38Gnsa-S%YJE(Ayis#W+ zWGnlSxJQq#CFkE9?=xr}h4ZnnK#qt+?O%deb0_)}uU-Z70sVz`O8LZm?iTdN&yhHK zY@Z;^RmxqW$fNHfOLu=_da6IULD#YZp-G{|}dL9uG);|z`RS)CkNBRCL{{DC;CnpxCm-DSOJ(a(lFMmxhMET(6 zBf97M78V#DtnYRF!eZA2*d924c;3bJC1}5EfJ#?_$XTJxkZ7V!w|+6BUZjK`+K0qV z`n$U0mmBxfoDUcuF6WRq^;?X`c=#<86`y$R!k-VEA1BRVzHq<8{m9a;n6Etl;dutj z+4PSCZvUS_?d>|+N4c#Zw$~RHpugxoEHK=NX!)?$p8H|9oLK*UJzt6lQ_q7EM2g-A zW&JSii@J>8y}J5as2^tkmb{PQo}<^nVNp-NM-UMz-fBHJW-rP)f9l=)R~UY0Nc$TS zE2-aNe=z)r7_;A-?l5sg%$SDu`6NfZuvnn?>)7A0xJr-T>`#K|J<=b)8G5{nPG)5E4a z9|`*VBCY#x(%=6x*opW_wu_y0BXc*ybZNAsD5w4cxRx9agJEPDTf`Ne#T{vCpl z$hZpY9h;Bq`Bg}8Kf~*9PItU?{kQUg*KdYJGW=$^>KEhL z^SK+!q2Ih;)$@orZ?-ZM0`9}2pB`T$CG3OlDm7B!!aBOt@PqMT4#pSu72!9{RXOoG zg5&AG#}XDn#&W^(Rr9}5FR1jm;rumy*PSX?6(7HU$CLBv=k-|Eu|bJpWieTCdmK{wiKL+>d?S5!3BA!{XhWm3^c* zJ@NecyY^fjk5GPay=If=$!uPw*Pr3yeRCdf=bex7XKvpNIbOW}Jl))`-SZZX=byU^ zizjG(jQPk6`}u>t`5UxPIN|)|cm(r@*Y_>2_NSZm*xg^PpPXLymrc%B_MgqgpQ(Be zrn~W`C=ljpccw>rh^I z-ZDn{8y4**q5r{kYIjP~8ojk7od47jP1@Oc5C*D3p{QZUF`5&wom|pjM2h*EaoL9Ie`y=t$Onk)Yk#8%q3I-VTom0`i@NBxjc z`#I|TzdMD`ChrH{3j2*}-!ZL$3O6Kz%>M9wJ-lxN`_6%Q<9$HRmjv;4qKbbawZEj| z_eMD#7~cq;e?r#~I8T$Q6bA3JL-<~!?Qxkbbix<7N@-$ebS68h`AD)$lb4BemL z@dnKkeQ(v(!*nME-eWCYuHt`y&NGAI#q)>rmEYyeeNmN@>p$CbesFpg>T`2f&+mUC zol7PapVRU=DYvuZ>Hk&#`F`w)`hQ~i!}I6hc}_`t?hpRyeH5G*96x;4duk}vKfMo? zK<7}2;%ho@#&QgaXSCd1FXDLS_FtS1f4U;#dD>s(dhkERBzFB5PN@5Bwj^5FC8?%H48SHSs$>W4Yp z6U|S)Z`gUb@;@Zdg!i2v^mB;rU8sAxx*ztiYUg;)9w|Pz_UBW)e8l>w?rR;n6~j~R zl>dD0!}-kR!TY0ZayVGO+hvMSb=M(;pTM^*x)2 z!1O1G_s>JlBJD2zz6j@UFdt8}e#O%Z`WG*p3HsbNB+zv0 zrJvn=+M?4Lrt*mt*W=RSq3RjuBg?s5{U*1wP;t5Y!{PeProW%{)~|T!4CaTwzjW(0 z_NOP_f6jSO)gyQZd5$vUm-C70aX$UiW-$Gwvzx!%uX29kzJxmt{i_Jm8_z!2AESQ> z0^RxN9m&aMLJUl<}yHoSM zvM^suPEIOLC+p9DRpsOH^+$HWepTh8>d!g9Fki!BivC{C?Vl>%j`~=BuK(|J!+xsU z6DnM8cO~WQFVDmX~;XKrp2isjx zf96K?kH6;$>ht^P@!q!&`qxg6A159@w?{UE;s0F@#)}#EQQ(|TkC!Fm$$A_gWqN;a zfbHYOt2Fnjyjtk}oUo{_`_+heTCdkmEPQWy2g5Bbywc*!@n-V{y{?4wnZv65{q@f4 z{&?~eiH|q_LH~m8gB;Y4S03@~gZ}+pj^}?ce%p3od-_!0n+uB$>lH_e*U=pV_Snya z1lyy3E`N5F>fc=V+%NHY-2Zgmr@wQC`ZXT&1%LnJ`1Ky!DfENml)JEK59qf< z=0Df(66QGN-t{M*zd`>v95#dUc=dwAXLoG=Rrl=Az54fb!Xhh6rK4oK{WJf)`Nsb7 zdWcQ5ckh1%<5@+o+i_e{^Wa)BjE8dPWge$^KFZ&5GV|{UmCkOx2!^l1@%Brc4mNrI z9WNhv9Ao)^%H;OR@eHPG-AJ6jpy}_2RefbSx_3FAeJeVTLAm=K7N<8DKF5pAKhrBM z|AYRqdp3h|4u?(FWAm@-AI}}jgJv)s-UkluO9tIB|I_Y+{&6@#^LTnZPYdeBvsdNd zE!PtbFP?wwJ{W#59F~v17RR?np8lk?{w?S}Sbx|*wlB@}rjz9y-{YA<|NRW-mwJ3l z5S?k9`*-ER`1t)R+5ZRSoW9cRPb44yjyrW8!~3^E_rdf8nfq^!chF>gwC8auLhEmS z55~=x4BBtx^B{H~G>_+>S{JJEjr}`O_ne*+)#v?6UWW$5ixG^Td%jQ|ukqr?;qIsXD>TERj^6)w=Tq_AbNaZw2J0QC z=Xmbp)mwJYCdZdKp1;ao^(SA$xss}vsrvpbvKk*y&gb23`)7aI`8Ub>NAeja@f7L>C;YzD&#@>}%I1IM5F z4I2M{_L=;SSxDf!N@4nb3EqFB`)j@EzHPF8hY-qw-Xr92OJ~*#iJ|wZbcT!XdEh=V zp96%7f8UeKLz$`^cGLIqY(I(4Pw>0BkSN^@i^CICKC>Lo-yTrm!}$q(pQpZWu14SK z;d}tntHOR66(_ zKGws1iHK;f&v6sPUHZGjL{X&snIuv3QjG75?_+rBy)a&VXg~QXxOb%dy|x|dG4nfx zSg#TUmP4Y5lHSVw=~?k9_BNfC)$4o-;-l^+>bs* z_sZCw^%Z;THOK2LiqFooFg`)XeC2&mKG#YpK5zEQ)x3khZ#eS@%oqNCF=%o>#rA!n zd{n-ua`F0u<<9dZJm*&T`HJ7UE7e_s7}^lS=lfZBPXN|=bYCkTb9ylT5iwJbE0|t& zAA-XzO;5$^l^aw(CyLbWDjiAU>kN#?+)PX#azxyr@8j{inqlG3FE<}JJbZr+%fXvJ zYTQ%h8q9aB&s=U?zr*6OeHfqm`dt#vS68m~yOsY3;X5qVE_hzV<;35Q`pvL-s+`h~ zh$i~|F&HQGe8sh|5y!sU#TX90+Y%O!Z^HO-cz@S?fzs)ZKir4$^`kI;{D|S985Wo? zZhQ6iC&B(lF|XrroyH9B2GIDz=2h3Lbi)1b8!^3XpFsDIN;kvB<1NR7^?3fv_V{iC ztURdw_tE{o`yC6^!Q6+)o6}V83#Y-uDWN^J-u^{+uIXF!|4V z$PqDA#}n?;>ieUKqQ_h;hvX_4zg+sh8po*+y=MyH#+e5nZywF(H($~GmQ5}{{?3cP z@ABJoxrXUIu!vaN8Pm_}C@hEIeK&Vshs(*Y@76QFeMB7S=lB0!nzy2!>o3035uxwW z;C&nY{jw|P_g6Ylz2I=r-qm{z##>b%cpc4p`_ES6m}~#DZZBb>>~;O8b6B2_u)84h zJcH%Te9pl6$M4-Jdo}KJeC~txq&Quha1KrF3%}Eb-;1a8aXzCN7MrQx!S)gsH|zOx zM0}^ykszL>_J2G%u2&&GAFKKq5#Q52J`Qg%eCMa)$M5QLyTbV%$WCy56l{O&F4zu( z{<1soIIrd(wZ~yO;W`#Zq#?-MAMp2eJYTQA1=IISAJpUde>^#_2Y6nK`Q*O$gZCxF z;!;?*srthC*hjDXBH|ovCWx%`l&l!{QPBeH+}f)AvOa#4_q< z_?`Bk$?qPp$^LRUZ1VTMY~p(>Vd^*W9Yl4Hm-km#kIm!hZ+{ERCyU;bbEB)72*64dOwK!BlkU_c=-{u$N2C*MOZuy7tGfn$IEBd<8nNn-to$f z{X3o>$D8kS;64KH@44m4djFJppI*Nn-~V8I)O+Kq+#Bff5B()m)hB$f9NjCPc@*mp znlP?{|H_`{A)P@j0bvs z!~4u(@h0tSm7)C{zIPoApZ6WuKKOec=sqOapLoCL!S307s_u!6gRCFVhtg2jL_?wi0DP**4E8fzbB7E_j4*@yn`mod+7ckA_lBS zcR5-g_JhbB_b1K-^k<(QCquNq>#Czjfn>?-YeaV?FPN_3r%`pMOESQ~i%(@BUe7 ztn@fMZuk5>QBWWE+vCS4_?|Pf+SgJ2z;)v>UbxQ#?|&~+{X?kO{zT$mTDm@^bLe>W zA!yI{$`)LW`Tg%Qmmm5Q5$rF1r@{OCCHGG_USq$-d_glTHl2pd-^uUnhVkU_gZIhU zJ)2GGJV}+KDtBCOy7M+JUtY)dei*}H_kR6&?n46WbC~Kgyl0iF$}vH3I)ZZL@A2en zy@c*zywcyL!~ULbFYvvk_CHeWKii|frQ54@3i_8&>>v6QF7^lA`&s22x{DOM`-;vv z+2nD8^Yf36s(j%0is;;k>%B5n{a%uf`8=EVm8ib9`$E}=#g*DDIqqbCjq>GGuFUP} zJZ^Yb6|VbT4$4C!Xpi4F{JFhqpJ&l|Q_B}sxFNy!3IDA9Dm`w`!S=0w$42e9t9I_y z4{Y6S69dX@8(84_=jJ?ce@)6eT5j^99?p0LqMWiHV6A%Xo6yl>N7r6WT9MMClT*LA3} z50N}1e$?$IOzvR4O8#?y#{NA+{;wvpHjR6SNgvOVBI2RT(SPjE;QR>MiQ2bfdo1@t!}Qgl1z`wM&?79n@= z`!{;ugZ+uG$Nuv99kz3~UGuz#+kffo{=Om0OZOMbi_R@dmj~0&`=4yW{TeC<{LX~W zx+z;Po?^_}N?{O$t$j*=edT{+fI*PfY8j&IQ9`y&2vHYAo0!F&qZ z$J39er{)=I-1j~#u z^bpnyG~xH&bbIH1&Nc7uih8{6;c+(Tu5=F3yPomqd;a;LyRP4|9K+>xJb&--ckQuU z-S)x#Alu`iBZ(E0junrGlXA-oep_El&c3fdpk z<8D|4?RmU!OmZC8UH^ETe_hWbTzii9*R(%g@n$R+P9K}RKZffP-gkm^{~pYzn)F@> z>#>RFVQ#*$J(~w;ei#ggGjUX{vCUs@9;UgTBj-h_;*U!%S)1y2_mmvY`Lzk}k&_;#!>x}T{@r?? zDkM~T)VR;g=cmUrgZoxIUqBP~cd6Y4e}}f&+bTT1FB}q8^f@h@M_;7!3x1z)tCB}V zi|xvU_gQqkEoqN>;bJ{zKF3aNQo4WaFY1THs8(1`Y|p0khYH_47Z0YF-E+9{(i?P# zzZcHw2?;;LKCjL<_+3UlKX!k=m-ij{+-yFTe@iOwAmcr>kk|(8Th-SFV5)Y;>se*5 zB*{<@RR5slD!~ z-ni|_Z}09;2HPR(MM|_!wnu;AI~cmJ!tK{Dcl!aq{a<(Y@=$;O#NqOI$LEt6FYd46 zn|!{qnAY8BhDD<^49CxIe;v=B_YJw7a(Xd-3F5gd>9N_xEy@9)$6 zn}06~=Y{Z|KJCXaUs{wg5+YZC z8z=hn?|2+6pCJF9?Jv*sbbWKXugB@HIIDE~=4W6$gW=(R2>hM`?d!8Y zY<@%Yab~UuXu|%HUQfC4V?F=xXNSdyRDXCL#rIZo#;SOQi|;KUhXnuLJ@!Yue-IX5 z!*`#m-LZYp96cG+e>^kjE;z5mc_ZwX2j-1@{}auy7&rmr!}D$CK6>667L#e6i2IiC zyNum2y_`=$W<9)D@7_zt-+PDOgj3&bC-y4FBPi$J_r>(N^Wm#!qyFNnFdXjRxF2Ko_jm4n z0KWGVEVlxhuLtde%=-xOOfHYVYp$mCO+z|Q3*L9&eN?}_n?9Da$?;&mOMl-K7W}&^ z$Z%dw>pZq+eKz?X_}`UtIP4#re*3UE^d*)r%a0eYp!|684C-?@DHX6iar!u)cs&(l zZU@IRx&B;Dzl+TNu|2mVHqk$5Cud+juwK0Wipw`>^84b=Y5f@d{e<7>{qcDA96tY^ z^8d%%yT`{>)qDSI&z@^CNtz}FS_;gNa0v!zYmk;kn3$*p%B8d@kO~tMk!ZbC>Lprr z(nKIqJ=WHPNIgtQ5TZqzHifnXm^9%?w0bC34``1kF+ojE<#KG%K7@0g&u6XAAoBb9 zI?waR@At>-_k1sFt?ycU?X}ikdr#uVm;Yx!``do_*XQf`^g+9h37Gk1?s|1`{`L2( zZia+~5Ab z>#xrZ^ZItA`g-&f`TfAw35-+SsgZ@yo=m2dt1#&bJZPdta#-zE6} zT7K&~!i`h-zqES4=Wpe|zd!Z&@^SlHe_anb`S0hG|NUWp{(P&Pzi!%e{oW$F`3(Oj zL+`1*`S)z>H@B?jc?-VrySBHENBQ+he!O~Xeg3vz{r&yTGqwL-BRV;F&6*E@f{f1BU8{+sc|Gx_$& z_piKspZ&Who_QR|NK1qk!M_ddFI>mt;|2S&im!BleaRT?x8bXz8C9vhIw9P zf9D){<2g#czJHJT>nv~2ue(+jUWX-SpS_@BeQ^lZc~tumdHJpDi2V5T)_FUBKJs+)^IzxNH;=zzvkM2uVPQqs) zK4+U!v&<_sCxDB+bIq(d51*x`FSOj0o8>0zU2LMEdVH_P_jj8G=1McitTc0iE6umV zE0Nb~$ZJf{yA>A#UMKUgCE;a|OUAt5Z8S^FMl%3DWo|Ro=IcoJbrTJ4L7J_mJb17D z#DiI|$9{srUK0=YnIJy#;QiqD@Oc2=`@w$j``~tP02}~!f;++8$a^>P-i@;MK(`0F zeaLek%6bgnhoE}`d=j4=K0ku|6MPQf^HckY2mb~B&%*X|$cOOxCB7d9r|l;moB>}# z{;!(H@wq?nD(d)WbCLNo_+KbHidPv6yr)dDS7}PUYw&p=J~!a=f>-LDXBNP=(94BR z@kT?ZdQXQ=^A3a(-ZP;Jv`~e28$K_1=X(EW&h@^7&o}XT!8;FW&iA6h^SwF23%%!p zOCc}wo(V4Z4&n2Zxfq{1FCMA`>+xyy7KIwUn$Trlb!Y|H;_V2v;&Ze2gt^(vhCT|P zkK@zsZ4b4BUxMw+-jB_fy`SNe4Rv`BhQ8trgG;{Dd5#K8UbMPq-E(@GvmIYq$mIclP2f(Mya_E*rw;a0V z&@G296(~2?1o{KlKwcHN*sQXA%Dg}DE_`0_t`A&hngX}PZh~(*a3ekgUK-z<10Td^ zz-z|$4+d_==Og&M;C&SG$ME@h;H%~nfv@8;;C%w}y1+l;^BsJ?iO&n(r=VLO_#Qql zc5SS?IFRWufbVt_Qjv=z5^*f$o0j?uYJv=O2R@F^fVUstM^Kj$d>_I0 zm?=wmn6pYPLuS6@q-B9wY&pj)6YDJJnMO+w*FMwFGuMmFVw<>5Y!^GkZgI1Cw>V+B zz`SBP$9SHLZ@%dKs!X?cFW!Pi+yPhqe9Ozwr(VbG=z(q6MO7FnHHl71!na}t`BHG!?^TeN< zo}jD0)BnjlZ{^EOv(I|IW>%Qrwt5(goBf-xy2k%X^C=g3tIhsXJ&Z78K3VC#V$V?(O5mC8wts{`#&?N7Xv!;%m0A)6U1}7f5=NCj@Qf~ZxV4uz0$~Ub{q4MUmAHG=X<9gi;S#8ef;^6 zFXFDM2=-6lF8L7bzrfR)-yl8nf6+gzetcN)pv!+_@SwRWjeZF_`$6+G{6c0{@y;s#M(+TA<#=B(>HQx4`Uk;yU;}<_ zI2@QCxf0jQuY&Uic@2JaGI|2KA^6u$^xURR>(Z zsJ7SLYi6@|K?T!o_O8d<2YUir65KB)fC zF9@O{F;3gaY1(B_a zf2-n+tG+#IhiQ!)J?6ZBFs41SJ>agRL2jrzY{}fxv|qdgdbVLwM`u;^-mk zw;J+}zhK-2xk~*o^e&%60j66YJ*;$xmF{qWe{JwC=v}(QN>}Rf`g$nZAK^IitLRj~ zU8k;HXQQQ&Utzom#;PJ5=SyM(ww*jv72!Bv4n4>B`5?#j(?E{vl_1CUDv;y)d6Y4( zza4z{SB+T;ay)+*$npHWAjk6+u_J2VBY`<*@%lKT{;*f)=V)LZcKKfl4BK(x{?mMx;fIBaP0XOaieK+0(eRqA7iwk{M|4RQ6TtB!z zeRmyI+J51gy^60|{?-2XbM&kBdvW(4^{V}CXlK&pUt`lXgoY#g@$_s}!Eodnyp?uq zLA6hI6x90ntj8~P3oxE+H|Bd_9nSX;K=%8G3mOzhgW_mV9LIH?InFbV|5C8RcjL-x zagEq2uJx~;GUm*}_2LG_7YlvxbdJlL%=d&U7ifzyP3XiK@j|VPz z7V|*ie7^#_?RyHR&8c{cc7ANy)^`~42fmCqy20OIz47zHSv#Iby{$SQ+jRc=RNgZ0 zeb}}3<6iXNG0vP7pYK0+9_x8L;ONGo3*xT?hA_UoGrr9GtnAG{=Jk3!;MPY|=J>aa z`CxpzAI4kicSQ$P-jFTFGedsqv@u)bL%zHIMis{a*$;`aD6jiJ#t-}F;%Qxrf5>!|@FBtQ1(R}|l%vZaMHhZUGzIh;YNPY+2D0e>E|LLNnpEyMS zq+fjr#^s`;@;j>h-MAaV3S{({F)tTYMcIFkfvf+FJ+R_g-_1+2>c(K5pHxI2t<<^CM)p9#|aR0{Oz?#nA_> z-mNDZknae_|9QCMbo0pKXv?|AtbyMZmMi^AGv8!V3nYJ+ZksSUbur6K6nVGTjI4yz5iac6P#IsDa@@;Qs6Uq6Yw-p-2) z<{VM{D-{1k-BesfbEgM4XMK@pUnRB;)^J8q^ z4Qh|O{jdC-=c`NY(yxBsFTZ}D(cE(*Wb2Vd(^wzUp!&Vv!w%m z2IG-u2K+;Kdh%w_y$$4 z#wh29pCetm!82#i?GLfPo;SBK`r!=EZ)23_r^suJUXJu{pF8wM|5}Uj=>2m`BP}B5 zGs>K2*MM9HMN04XKf9H2joSJy@DAAeM!nqDHkHzBT{V0Z8yl>4zsV|u`L zlt0gO_-F0py0yb!`wL?poZI0S+)6e_pWR{1qjMWQuER#=9tyg3Q4DaHT1&;D2BJ#Vk$BJZGa*Kb?o9E=k;l^rxkaXq(|_1JNKp6T&cVBP-h zvUSk~C$s(5Me7$hMru6sPi2RLZl11+u$(@~htY07C~J&-CV~4r@CCHTp0W-rKMqoU zylf!!%WoR<`?8}p&R5GC{m-7p{=C`VCpCoHqfd8YJS}gJay=f5HF_^#+$<_TYTNS? ze^&h`Xs^c>ztQ_6=94SRgCTc)VPC?oKW5dRy0rd{huH6;*co#DtRwn6T<0Gu?}(m{ z@$o~*-`!uib?apKXwa<#W_2Bwhuk>Q9_01^gMx*&-}jX}K2$!dac4r;O?$8d^L21u zd+>XsjvO~Hm^a}!pdC*3C;XLQ2>VmKj;<)L47q+^Y3mjB7KYroR%y$5(QouGz&w5J zyhi`|C72)Pbw^)V!F6_b^lm&A{KUM?k~c?r9p3?&{PsLA$Z>d%*&HoFzq$|l72h`I zhx6v!_Md0^qtDuPK!5Zn$nQ18!+v~4d85a9nsoiB(VIa3C_kamJNH7zFI>v=(&#;j zc*yVJdQ6dzq`WK_PTq~Z;yT+{X7_R_cyPZj_||n zyv~mX-FmM^?NXz5sSLS!q|saTpS%xj^gfU_=ARK4$Dsq@XK{T}Px)7nU&i&w^-c@o z{{0DV-S8sx|D9yq3quulJ-0CQq4)E=9M$!5RQ>yC(A^Jgw)6jIPprw8?|*JR_B&2= z=Nt2vIK{Tp=sXMKp{?oB6cQ2*bc{=Yut z`gfPw^_4K!3*SF!edrfhpFDihrqGwy;=b;rts$O=Uz~K%Jbwh`pXBQIUniADoV+&V z#(}kpXRR&o5`UX5597S9(`_nut*!5|z*?Ix_B#~s-YDn$AI_VIylU5@gEpVrLPLss zNa@{p8(T2y^Ssn97*x5VHXp9n3w~-$dckmH%a=XNGcn$-UvS_JJFok1F6cAv{^F4K zdk$-#q0g|tJ_9?)kz;}F#cpSuh6}%hQTg$>^_?BkQU)45${AOL{REJ$VdNzI6!hXw53!VIr z3)`bf{56PZd4F&&#+|-}({|kY!NT?+``5t2TANSE)P`Mq*M?8UJQMY5!)Jmo`mcol zjCOiGFsSu+ZP=Z!TI~-sh_za0H{=<1<86b@|3$ySwnNl&M^`t7tC30+hH=i zBFyV(fwwyB=8-k3=bG?M=wGjySY$5NKQpJe{j-@<)`U++e6K;?aFYl98pS&tT!Zz= zYi2kYx|!>QR@JXn^=l2g`^#8_?e@-7W04>8{^r!R_Wa!Lub1Bjo2~)-OI;X;--%}& zzr;G?o2PE}o*TpZAl&F38^?MWGRN_eaH$;+vA$E>o0NX5^4q5T$L#s>%vi7l>!$gq z4f;F}t4`}vI=BDSa@uC^ER5$5gsOF29JJ}?nS;TfRO9+OZM*WX4s~KY={>E{y9fE~ zJ}ns`=bu&@@t-zk=(LXLa`c;LVLxFd{__b~3Hd)yYmXk?&wf#@abQsGJ{WfMcWLC; z7_X}n$;bm3-`|;Ni(G{9>!z}{$aFc`9_`1x!ga(p%l@dlzio?jWBvM>gxkNoP3bp* zoacJ6KSDm9aQh+8CWdT1@UFb=$1nOr>R&@@w^5z11ERZMSd}b|Y{K}{ojjy=D2*&b z9N$fPu?sQZY)_7=Jr9VZ%Kw1q_TPS&JYe@nYZr7xufTj&8FTpuPCsb(;~I(w)&7Uo zKd01AM|3`qD$ZHO5sbKgAB?zpG-&VVU-aYJAL{W|y@dLoUK)El)_q*(-+*{WPA`wR zd3<3+>k{n)R4bj^x5ITWdu_yBFAWiQy{u6BA&s-OA-7&#t$fyqt(KGFR=W@TQedt0 z>y>Y-I2=jg?eR$E2HCqJZogxbm9fH(@W0t#UAa~Mn(CxqQ58Q7Yh}Pjc`%`7N|8KZYdcCqw z<@TxG>uq~rK2v)PMO;7bi@0^ssQeG8{87u!Ge(s@>A7{)A;oi8oXXeFj#ICe9Z|a< zRXLlq@3u+%Y_rPG?XL!kgHd;0<572BUBCO%ndNpq!T2v$itap5hpM9-pI!>oY923* zybIUg&(18h*VnFad*FgEdFFqe*>0XfzsG!G4qCPc_IF@Cde-6)^(UNlNc%uFQP;jT zcD_0msL_1Z9eoz-+w0~u+WmCyvo+v4I2r54+CO1jI;%G7=EYj;kNa+W|JH*2T$f*i z@>!wy8*JRi0>{li{SM>hS;tN5AIQ~F_Sf4&Yoe~dHrRG~X2FW6TX(IA=Eoi0?;S+C z!B*DmxH$sVhH0HNwHENyEZlBxy;jDK19OcEcT>JhB<+**0R@Hm8jq63M z6FF|2cXq3_zgpI+cn3m%{t@q+Hb>`S-!XOe2D>kqTG(#Kt6kw`k@^noQ=Yvn(u4I= zWo%hwhtFvqIJ;Zpe|PW)7$@hL z?%-K&F7Q=m!e?NP@`qu{a zujeE0#dX^raqIJ?Rc<|ZNmZkF^XJ)qjovvAy7l`a%mXL;o9+GG2%a~%`;hj)75J+| z>|d8}CYv?yGzXu@e6cG$5d9+7HJ_~N_CJDk^yjPQhfc)X`kAVA(X(;?x(oTN!+gnn zcj3N;{FCiZo4sP}qn+$Gdt86-t#ae+kE+_Em*IX7`!2Bt%#=)0OYH z0XLqy{cb#$jopP`BcRGW@yw;? zEQ|4ayz-p7Sa1>U_s-d*^E4d!0``4Add^ncPZxOG)K3o@uFvm1=b*U=^X&J|X^ZqA zznjWRW8*j*BXisAe$8hRebLjN6Gd|R`}bs^5Lw;$K}$$rxNA?md&Jf!|K zYWrxuZI8W zxE`0B8;`M_CoxZRT)On!buq4ot~%GrP3K;(@!@*APP+Nr^4M;i-w#I@+H@g233@(* z=X}r?{1WYZ?!uTGH!EZBuyS>b{p5G&R>rvh^zymYG51`&(xyKOe>V>Z=GxD-ZwNBS*Gv4G7{}L@er?R%cT~pShI!zc^J-&m9G}uSIHi786LaJ4l*Z=< zn;!ckG1vYLvM-Feezd~I<>84G&;P^ct+wSpb>14AuEk#?{}pfeyZWwBek)?`dDA+r ztJZ~95A(ieUFiN|yZ;qB9nU`_=eOmr-_X%&V~WpT7y8Gu9d}@Vy7>GK8walM(7$5e ze%|@rZ^)lL39SSF5cXTW z=MKb1v9I{&MSEl2Shu~tXdw0^_AUPmuEad_=S5r9pSRg`CokTr^p2j{s`$35-wazj z_3nDus`I#2{jAU0v7ey!-Ku`(_KEQRkiE~T^ahpRkn$U~YzPf0zp>c$m_L8Bc&+RQ z6vqLT8?)#C*XIvOKWfLB)WU)2D%AVBC1W9;rx(w1&uu@nWIEvTn+}XzgTJ`9q|qN} zXMb$;4`IGpzr^iF-34BWaps{V2W|fQAakDm(UOC)LOk#L^^(QGYtW8Yp1(NwL##KZ zmaJ9zF3wlW)+)XOio4tYteu~`{Ur89U&Hf*$1v`n_V(vPCt@Bv^X-S^_k1X0^@nWz zU-S>f-2L(K&^1LEN8Wxsv<&^BJ#swsTb#ce-#!%^`YiVcj)&HwUv#yUX`><{a)*KK0HS7H6@8Epn))7lf93O=K zvNQ31gSfXQZtL3+nzH*J&(@SnJ|cOc;LxGz|Y725$4_yxZjnDAChK2$+pR6cw^T!IC zKi-S6=K=Q@f1`i3thV64gPythf)xcC?+e_#xT3(#2P+EPe#MFc&NmlCY75q%%zc|R zHs6q0Q^5B!GAQ5OpSD^(dcNfK1#bPnp}^InwZP2}tu~%xfiBf!lj7bg`&QYv+5Ap< zN1x@ffRitN$5t!9TISX(A+xo>jT1@Ft%u$7MC?a+`|We=i3sm6uEX;-zGtps5I)e9cCtbMR#@i4YEO7e;g9UDVJ81RT2eHKS^MaCd z*+1QL#p^E|Dsb;#3>9#Gk9wo3_h`YX7+=~h994ff@P__n^si4tKMsBwdiA)Ct+-D7jQ9mH zBYs8vs`w8}-F?(n$@fUkN`63mNPKkZ=HNf!*ULlVY;r!i_Ypr{ z+8n(4tGFKpyRc5jxE}sK)`x$9ydLA@$-Zan{nFA{L9PPx-_j!m=iR{PWR2lAv`g`_ znC`ERT0cCOQTrb)aQm=F3*0{JO1r;w)3TM}|3E%#!F$C)%UPSgA+$0aeZiP-!A@qE zRfTuqJ;uktpP(P@2ZwRr@pDrZ&O-mQWs4QZx^O?{^Fy$Q=i|8!)4{LEs|vr0brAK> zE4>?ss=}Yby5@p;jp5&;o<$d}4F4NA2l={j-|atNaM9-It5}y`b5V!%jvu+mJ=g#I zMcsBkJ#$gApgw2JZ5LHVj$xnvYZuMebHH}p@7CD$;ER5D==b(Mv^!LXcE9_g&36C% z{)>WzEVm(ax6SWk%W+?d>v{e1#RVV5Umw^No*!C(asFg~S;2ele#iV!ri1#p()ENx zn2$S`_k_zV%L~~bu@1I;W`a-uZuP)R+o>*Pz-bbh@ z)VjRTt=DS{-Fm&c@cXDg-d`+q*F&|nUsu~;?NP6$&|Qy}g<6-(@1WXsg^ep$yINc$ zwpuoX)=FNVx7+vbmWL09Kk#FYFB@!m3%o9sw@Kx7N4ej8-#fd!?U-Nj-jhv#EU;Df zt*Xy9>9t3Smjm`Z;=RQ} z?mKQr`H$Re%wzZ|5&KQ9_ORkStb7kEU6<$lCIXAFPC0P#l*&1xxQ{CCS=D=1^$y0} z_!^A6>me9-{UUDVSIdGrZ{?EL*!@M%tk!#d>-C&{Vchkrg>iSky)f?1|H8N%j~B*W zI}F?V)Ba0_Bd=n7-+##(y;r(M?=4m;j!GNHOM%L`>z~y&&fERUxSQvz<8Hsyy+4a9 zO8c4(%CAB1i`K;5Jia-^_rhN@HF4K(Yvb(Kw}l#HZ;*b4^sA*`ExmjG!+N{&SF7GZ z?e_=mzB~2}m2QpF1-0+qs(K7Zc3|9Hzo0zcjCJG5i`Po;=KX8utylRQl+Om`(`DO* z&o%GDKEShen%Y}SuAd*$d8<+SS$n-53ruO; z>ry|gwfW%5b6De{C{uSZ|<=drlH(9wMv{l@uxcbzN+trR6RPNp3pJCkF6}~&% ze3QMu2`|Ka_lx)5ZJ(p=3U7PEkLy$1|AhZ?KRKoO=k9Rodrn__$gML6)m{grKP28Ae)vP!$9%7Quiy#fWMeoIW|2N?&Th1it?r+`o7;Wqcz4j2-IX$6U zpJscx_s?dd>-;;P#QR;1(*f4|y^StCetWBSFOA%S{g7K58zZ!DY)o1{o0tw$|E zKNeUVJKL^j7RP?~62_Oyj#@vgAB*_cF&9BzK7sWa$X|0_3^v929`3CCX5}|4KX>0W z89tzW!P%nsVIB72=xh=HT4&p3vqk4%K4p6THOxhq9ngMZu-IMy@nSd6#f!(v&>ok? zi|@mDdRH`FTsMd7&0w)RZ{@|Ve=IC^*JEX|8%L^@PmS`aDR%MK6yJ_{|LMzWt-c}T z-eY>Y=oP(xJRRVE>eCKla{>Odut`B_=ajd@F?Vqf_+_m?YAYY62 z?gS4U!Mp+f3;1==)nnSO3w~}Iirx6sQ0&I1Y0v%sra|?nwDWcdey+c-u=RQByw$co zE%+Ua8%I{F{td-$JZVrp8v>H`{{80Ay4Ad1mwC5f|K-#bbpiL@buw@+`f(-XAL0H1 z@1X?Td)3LnLCNm-XjSs7lD$gyD*awbDlpUxo4T+^xkQsAs?2YTK_6c6T4V zwfNa;>bKea@qSV9xwxLsxT3H4%m0nvTU@bS`ayA-x7qFk4Ee>=*ax^`$anD%sh<`zP#A%`?y2=OiO@@%#?=3%ysk=XN_lKDV087aSV;dzt|=owC_cI^Xg4n z_qciJ{c~5BXnkD5ar4=$*GO&^*V=fF1=d^Qey_x>bJp5;TkzbQ&r5fOH%Q(fdsm5@ zFS<(HJkeF+#@((GH(zYB?f&#-TT9$Lu(ia^3tN?LTZtR*w<_JX5;yK|EphWipY)B< z_u>BWp_NB9?#*g^KtIF$hbyM|3CtUpT{)zF1v}2u)XLf7FXB4E4swY*f9QwSKUm`Y zp|^g)66d#~#9%#i&3P;Ac{{dpMalJ-d&u{Y-5)s?SfTzJz;AbpRz=NoX4f@Qlk#|M z@b=(%srNXJ_}wXvPh0%~tAEDo4_W>a>y+&hTll=n*<|KR-^$0Oc2jxT#J z;CR%V!SOHNOE}JYM{zWP<2VKb|Ak{T;3I}gKZ;|G&lr~ajG@+N3@M*6H25s*QlDk5 z@LAT?KFeC|v#jfUmbJ!bS!thTwfZkz6EbW4qE#XDNxuZg^?oVx|D4SeziYzxjDHf2 zvq6?b0Boe zs$%m@=#wbxq%cca7-lJnFw<6spM?JG@F2QmGLcdo zyCO(v{t^kSMy;caYECqYXv?Fa)x~CEG>T&)S_tdXD08ljGX9kHY>2W2E{(DlE23dUjdQ!%@b3#OhzR`lCo&Y!=0ek$+9>L>!mK&c?A8ny9%W#uzrm&WC14 zEQRA>>`TJX;GMhW_OO>W>ys|Ca*RYqo&V znnFe!EM&BaLPk|nNYAB(^sFtUXR45%i8%F@aq7>GQ(qmYeo>q`)Wn&?(m3l|8)rXE z#n}%V;_Qc)#@P>7#Muw8jhV>o_0{=abC7XNP? zvvKyTzIgE3sCh6R!*P4O7{?v)G8_lvC*im!ehQAy*_s}i`s^uV3`1p%Ay>v2M#~t( z(`Ag|KpA_*GiB@*hsxM1o-1RoI9$eFF74dTRiflPc?<;2=A1r4bx0kaPJIWc)9;+X+$DFl}mb0ei z^Vk9>&10&C^O!0zk9DcG`bAb>WA#ht(f! z8|Kq`>3rt)+yZJ2FQ8_80X0(#7}XyZFsdU94zCWFb1O?$1x#BdXQhu-?m}OB1)90$ zYiIEL<}>*Hg0psAGuPDF<9F?`A4mL!=Bgs3P1J@ySYtDElHOnrh=eO*!-yR>b$6U^1jGE+oc>LC-)ZA~6WA^w{d;D4>^?U8{-|X>^I3mJE*7Pfv(>h^~i?3up%dX<_ z-S*gFkKI>sj`-SDQN;HARjg6+Y8%7V%;(?mJ!%H7VLtC(#bdiY)~&W0du+7FE9`Nl zJzi^%*W2R@_Bf4W)cnzYKW2}|t>$(6J#;N|i{ThGMfUsg_fZpiKd$$9LlxFrU7TF^^rxRL|Sv1=sWYvKx4OcN32Xam3j20iJ~mZsf7qu)Nhg-9x`GnCC4!P0@Xn?=+|0 zhub%^#ccf{Udu7NkpBqyHk3Ol`ksq>0;GKsWPD!0$w{#S{F9mZVV&eg@cVb|xu#ii zhd2ptG4Y3eAM0(rBx!{Z>Eo*d)ky!yhg*_n6xIe2{WNauQ@*71F1q zCx3hTyYH)$y?G~YvbTV9&;04b8QDqNJ7n*)_VI_avXiv;$exp)q<&cX5peFA zuRJ_1J4ySb)tepD;A7_8A>7Q_`jNEz;P*G7p3;-lSAd;f(T@B;|}`l5!`w zbNLB7veJ{(=OmMq$0d`LC&8V|D|g_}hq?Gb>JySl$`v5vts-$AQ?iq^*MmEkFWr%r zo}|7RV0tM@?$$< z;1=`gp@i%t?Maa5GbKGqeLc8yd1xRlJxP5=GD$frnWWqcGLD?|B=y4}%NYT8E}uIv zE;~v4q}883V6abW+ZUwX2X`*79!N+}QeOeGoRst=_4OdHx3u&m^(`R%Gt!gPXC;%A zbCOBQW8j@$?S13YlhjXwJD1lFOk4XiLm1>-+#u~S@J{dfp@j4#^;K5?+o6>7B=z;+ z&gEAQG=f{a4cpSPleD*hKfs-I8};6Q3}s~R2JiI#GL)6v1G1g_t-kiYob)8~8J2xq zdXoAH=_f(-cl@zF)d!^A1DS6^dXoAIaOd(b4y2?fsjma+UvKT%fwb%-?ai`hq$jEG zkiHvaJ7i@iY45lC&uq&{Pf|Yu?p!`HFfKhw{UpfqJ`FNIQ>1!J9ArKu{U$)>GYRfo z{;i$Uw0rH3n_}lj($53w=Yu2uPP)Q?LhDNlnu4`i=*`{UT$c5#BV`{19vzwAs%Pf}k6GF?h~lKQk{l5#U> z`xm%mqj@4DJ4t(o?A;*q%gRpD-XnW2$n{!3NWUD&^Gwoj7-TtPV6V62iE-IU+9$yq zt_JRxI@9rl|sp=0hoe%OljZqJKLUxk&B*=2BK-(U&r(~}OZ@BV= zT_npTSuV+P8$qT^gRBq9e49brZq%dPjO--s9kO?VjISHyxSj=>4@tiskook2H(Ytf zE|PJOjH4f9x*TZR6J)v(kok_uJ}x^+`y|NuY#L;H<0i$XCu#RUmK&p9lI5wz_H+I9rlj*Z|w-n~zxNwz1*e40V#(*oXb z0d0GOOEykDF%Hs?q~8Qcze$kglPrH4O4rID|u+w{RS6X(G_GZ~zz?r7~ zyGXVZ$^1#?p8=UK$#fkc^X&v@nhx$F=}*!>3(~(I+z2@*nPmE5km*OjnWo?GB3UlU zd`RZQ=NlaF#zE#sGW`U|^poIB)6rcd(~(R!4RRdAA2YV;NT%~Zrt`s>rousz=}4xF zflD?HJedGlUJ|5#1vt|*e~_d?G~YvbR|K zC4(gMC7EvqWPT+5JHeTzs|HE>k@U-g^dsrl1G3y+aHi?{L6UwX)8#<=lk^`3=|2L_ zG~GN%(vM_1lILX{WIB@RCc&Ae_Cb<1U+q(4djW|00Z;7n8b?ly2E{4yZ@Ncwev z^y>z7wCxGfe+*>4Sc^Qi-wPdzx(^u^sI)04bT(jfgw`nP~HP2bo}+V%$N-v-|4_2)7m z{Ym7NDZN7AnsoN4<0Zjy16^e5@x53)aztVa%HdXni!z?r7Uc9ZlU z1KIB5ApJ=CO@OTLBskMFx|^i`G-$5}{Cz_DKS_U*{`gbl z)}N%m56(25^9V_MLUxk&lw^`}Jvh^}{1KA*lgyuF`bN->KOp0325tL-GfgWVX#wd^ z(!UL)e+HyK$#OcunWhgsLeih4e-@-4Nxxojrs-pkkn|(zmjmfX(r*mp`5c#?q<#{d zY1;4z$@C=CPlL8!FL3$bpDtK`ADn60^a#oNlT1f4T@1AS8f5tikmXc>Gfj6tLej4a zq+bf8A4$J@aHi>jM@agmWhZHGvGzwFAz3a-zfP;){|HGvNqw)?A9#eMJYwZvJVNeY zH6i{{eBIKvgY}#9=%n>K$I|vE$ay>S^YOkW`op8-{#7e1ZM#6GpVfmE)^E+D2LL5i}m~FqvZZo_gT`9GX1O`?6iJ6A0_v% z8gZ1Ke%;XXd}K*;&3(Pr|L2dAw3DoFKkbNb#M-AGC21#VAG3D!Gmz(NS~C98hn0PB zrs?>j_5IgoxMAm+0@jOTku`jhl08CMM42qr+5QvuF2d3(wItL9kJ-^yT0e)ZPxw7um1 zRaKVsvohFX?Qh>p?q5}B$?_@F&+5T8$hcn`&VgIZPwpE5alf&b+`sB3OWQt>na=9L zG5VvQPFv#s_EZ;t47|r%G@OuJ1>WghG@O#$Xyv{VMl9Q5ClItYbgDf{KeY5m!AkR~W z1gp!fc4 zd3~m(&xlzuQOR;^`qCil(G1%7C3i^f1Q~x;`X1?frSAuqY}`FOEd7Y|DzB<_s5y2ikgqww@rR)8$83cSZVe}4+xVjk+Nlf547^gh0~(b|{qZ$)1osC7Gmu9Z3I1@J{cx z{b|`r+M8u>v-WH*BRffZH^}QVD?LelKV|P9_UEK0sUMe2Qa0x(evq;cvR@{oC#kOh zKb1LcZ%TTS`Z|#D*Mqz+8bMxPX^`zk(ytk$Ukk|ngf@_V8IXP?{W?JUWu+&n?~%SA zWV)Q}B<;hpkAR=be0J{`c&GQB{o|lLe<1xPt-X8iG`P#_-H(@ZtevDiA(^CH0e&j; z?Y$}KN$TrBTW@QBXm46}lJ;iVTde)by&2g_+B;wvQLQ9;GNzh`(o9ONsw_@S^2j8b&~5r#z8W_Mv(2?A$yNF zEKY+v@!pC#m*dEp_s2lK$C3aUf0g8v!H0_1yF zImsmDVUYD3m!714LV9z)OHWeof%NyKPrQk=S3zE~@sg30^d$9Z$t2}wkomNMw%sK6 zh`k`MkA85;#+yclrJoR|!F#-oBiLf`i)CJ4RTzmSnT4c7u&!k8@G&fgLd8nnNPo!@m_%B5s>vA zvwDo9(oah^OI*4b$b1r#t0bo+r^PnV?mtNG1UtQ7?d=Bb_y@8-j({Ke#-3{?K*lu* z^0|%ob|)vrIx#1Xfn3LpOP&x-jZ5c=2{9>Ffb5TTlAH6qz@=*eJH4ZOJH;O9d#(KX z-hPnhWkm9r{62e*cKoKe&th{I?tSje$!x{%B;<>Oa1B+R8^p{0kY^ zL;GSN(}!+U33hr_`+7j8@3r!heZ!JRBu_}5wDObt zyrs_H2bsRYa>>3r>Fcfh^uA`vEmr>RzBce4Z{BE!^qtc8NbZ%~53>D+r5}-gLh_{K zX^{2zmobjt?n{EU9jrXNuL|5^Dn>2gS0{VDwO8$HkzX75Y$vW)@E-4$(GHOLbXt4W zzHZrjr0#Y3cptjN`<|Vj%r0tc>=P zTyN#XV~tkcu&o8O?`28uwDu+Yx=8H}%7wzZUFV)Y02wt=jFhxDCR zzxJ^%kok3kcAfy4z6Z4J2X=aEAL|2I&am_&(vN{mM>5@{^iv@7otB-X-M`qiV-RG1 zNs#4KSUu_kGF_eY^;W-RUxW0`(zi(83NoJ#={v2yYF`&<>jm2S$lfasi(}wDUUqZ} zwDDT`fzj9{?z~ojjIR=;ys+eCovpkop$MZ6MpfQ*xK=eIU>4 znCxD?%O?mjeNu8INWVJC^1$I_c~Bm5Ooq)_|9ArKu*Ugh4^P2)$u4!;~l6D`YJqWU#gzO~k z6|$$KuajIarllw8-z*e311^NKaB?G~Y zvbTt>AmeBQ+3z!;J%1qmJ3!{wDRzVO%YyVH>DMEBuhyPLaYMs@%*P!AoC~bS1)@b$Z;qwJ4t(s z?5&{fC$eW`@02|&J;`*v(&wZnsUMbp1ho74Ag>?F+~*$!S9b{hw6dw@(o0kYnc z;xtG|-Fy8JC@;eM0t0aSCKP(;)rvFSKpE9%$V_K}^WeF|j$<}#PB57Iv&xk7R!NWYZyB-7W) zo|c}ZzFGQ=^d$8i(sznopsgSHnpgBx7PR#P>E8n~o?fvZwBrLvzZ^)vVcEyPUa$PA zaoI`QCuEyf=z><4XofVMqA`VGrI26DYKE;~v4gzQtGZ4Z$B z)2vW?fb>g9CMj2e_Wncql=O|Doj0UUOWy*rUTq-zUq*J4`E^U5m7b(NCz+%?0y3X* z=}GD*rJn*>5AO=+=Zi_PLaYK=&pOHVVgtzZjk0%2-z9xFc&GRNr}{u%ul*p$#W9fe zngki&w3Rn(3ts8+OMrYno&;&H0Quae5@bFpko9Pmy+v#V8Ba#`4(U6^E|BT7AoK47 z=|4g}#*IeH*yNq@U`LJ`2*nM{>^Ee{$cj z9tG(?4%+A9(g#;LeF9`Y6(HNE614qU z`g-ZplA9&Bh#BcSC3k@=FDreI^u1yq$ozA%4@*BHj!Qo&c?x8HX0^^E$T)p52r|D4 z$(11e>m=8U4bnGDZV_8Srq6(U?%g4Mr`QGB`haYwUg<}~ap|W(8|SqyA0K3#6=Eew zdkSPe_0p#$H%o32GtzfR?i9N~8;|Tg()Wrv>4znch~v^vNS+j@KpXe_)V`p-P9!HK zw}Q4@kk9FRq|bq@&#>eXaYCFFr$AfI`&ABT&m*`W<9GsOzDemTq_2})FF6geycWqB z$yqTcj)2U6T=EoX%fHU0_d#1v$rX}QlItWlfK1mcxkK!dzDIH&X!|wD=j7uc6$^t)e5rQ3`oB&kbYUoeX{2yk4hewJO$F<+~Cp&LFSi` zoCH};N^+g#wB%OMmJjlIXjbf#J|~%EeB+Wy%BIPsBPj<#TfX$EH<9)_$c!f~eY50N z(8eKs2Bd$7>{;o1B1&gQy}v-YZNC)e-E_%Li(iSlw{JzD}7q}X34Ff zjaT{%XycVVD}C-wq4#+>mz|`YqcTJt=*a^eO2{ zrfUS5Ut0P$(8e!01JbV>q+eG09+2hrgM6H`yx5n zNv0=hAD5n_o}}J<(8&og^(NAumP}I4NG2&~CFkBm>c=IU7MDLseGJ6&*{2fHr`|-` z(~>i9qAf>q?oG7iNH(o12c$kBIrS#m{3U1JM4P|l+?#0gmuxPhOe(v#Ga)aN9Ri{@r$CuvVeCMhRD_WzXhB=vRDr=@R} zoRLh@FDtnp++qU%oRdt_J}%jOSaE>VCnP69TfXF!>~+#Nf?SWJWp9=~Bbj7=9nxo| z?~$C7Oww-*cNgJp1S?O~i z#|4t-k)+?a^d$8p^`=ez4Wynj^)Zm|<0fP$X(wq^>QKnxIWSj}vN!m%;lOW?vNna;9ExB28D`?lZ(q}-X z?~uIk*g7$pLJ|VsNxatAY-vb$E5Tt)X_N4TcAj?llPcmJd z>}ly+L0b>W8PL`PwC79u9?3b$q>Wqpap@-{Pl3$Wd_r-9Hg1sl#z6btqwGoPtE5j! zPujR;ZvdHZBWTBMkmoP+CelAExgX^FZ8^y#?V}*`8Iyfn_G!@epHC`okp3}{`6Q%I zg0`Q4cHJd?3bgUc-T<2KCKzZhuGo8&6VDaj=BX_P)KJxP6= z^cm?%>bpRemzBOBWH~v>B>l!fw$r%u(~`}nTzn+`VxT==(pO1NNhaynD1BP`Hpv;u zB>lQU#*>x4Uvf?|Nxxx`?KdX-xa`xC&8>*hwVCgk&$@gn zLH5Ix@iQ}UAoXaO6R)RJ^$!T#^`U%j+-Om4)QU5@~vh{(K|z<<#6QY-K`Z}>WFLyZogy?N_a#HLOC-VAEXHS9b4|S58#SSqmdrlk|O_xjO zeMRMnbz*a#w>x`}I4n+x-W^IW)`=6M*Dbp^3Uc1{zAC-Q|69j)YXE6)mfRusNk1%k zLiFx*>4G5BB_%hD9b#7O5r@SI(c7eW#5%EAoDjXQ$xrP0x|4^+2{HE#{6CAkaNUXN z%}&mNg@|)poB(bA{-)D=AmxPQq~w(3I?4Z=w0D8Fsp|j#=bHO=_TJ~R&(-C)?8D)> z=6(FNPF9$0-m632vb;W)`pNIXYkTjHcJB~%Ye`-L%K zT(}xK``aZvDzqLl>0VgfPb4lC&JmVNewEN#X0|I5mI}*Ybw8CjA)F($h4F{Y_6eaa zObT}iQ^KP{wcKoH38TW8aGY?Co4>-8j|oeKbDK&2v-Y}!jw?0HszwiB4Md;oG>ArBeaF9g-PKqVM=&ZsMeVMSVAv!#^tEQMZ%b{ zR2UbI6OM<@b_t2+2+N^!oo$ILpi?d>aizp5iL0Pf-n-V68!wy#oqoAmSRv`VB(8+c zc1I<)DoptzVKH>}TPkrGtnPmj&k>eGr`&3ZcL^&cy?C9;kHPBuU6>G-OTH~}QkW8| z$IW(L=ArBP@s2 z`;~Z?@Tjm#@~!o9e9$?+MG_Z7XZuo#%OoBr@p$NzFPHQxVbKOtUomvHFN03G3W+Nv zJ_?=dVLd7Phfet-iA#lLl0Hu2Il|S#3dv7Oyi1r89u-;}Wk1l_Pq|QSl62^#MAV?l(0(jxoD<83cb)d z{;0%7!eUr`d=i%m%OpK6@i^gl=+u*txExluN8+R~C9INs^}L){VKJ=Uuf%1r`ua$m z5Zb~D=#;O7PC2zz&MS1%qY}r2Ws)A3I3cu!6_THnI3+wPR4>T+6MA9wek3ju#)NTU zLRb!+@<%21ZZom>MX3iaRcifsiOZpLTon>m3acdD`;ysiys$!837zeVUpDz=(1{b! zxo^uQ-Ih2htd#VW#Qb=Eb@`~UNLUP=OQ_8{W^DJ?t#NMRj3oC@)T_(L; zxC=Vx^{CK#O^ydvACJT_VO*FH+QOtTy4!3Y6UK!Jp)E`bRi!B(6~=^dVM1sNlfslx z?UC(;F=1So5Zc0|FeQw=ZnlpL6GB^<6sCk~uk25l5Zc1zK9ipk#@>|rg$bc8ObSyj z-!}JA>I1VKFBz(@kNuHhQkW8|k4<`17!$^Y385`a3R6OLP_`GwgmGcQ8Af~@@-*Km=dZ# zq&{I%m=dZ#C0`g5#)S!?EldhiLiLwyFN_J}!i3NkCWR?sRPpagGQP)zabZGe3zNc> zP+4X>r46IPm@qC>9?2KRgmGcQYw~Sj(r@CFFcvUzT$l(-d0|qR5~`5Nj|yYLxUd{L z^OiSkSPY%{F%GNO{gR%LxI*Ge=#=xOo9)Vl70^j9=HJ_`o|mB$C!kZGEv%4yZ>A|1 zgHC>2m=KmrzAdpg%ao5pr+h+KA?alilb?i6eoCmaO&k@*g$ZFSN9q&W!U|YDujiWl zV(7#%iQ~eAutM@vuzG!$XUco|cS@_z2dw_Q!1;GeY2SE>6B1WQTq%qem~t^;8LZx3 z;_(tEB#zcJ`%OTnep?u;C2?&_ZMWKOi1P2YZny5(5R01hxG*8KT^5=Aq|k04u`nf6 z4W<6Zk}p&xmU&+(EN*K0L%A>stFM!=xS7dU%}sh#7!$^YDWPg1<%BU|T$m8r!lW=I zR4rwDVN94jN7^M+t)-kWB~)!BT^JL_g$bc8ObSy%)mF9_#)NTULTC$P@QYa*}`N`6Q_j9n8Yr7nV5f;w)(m! zdK=opq%b8^eN28-7!$^Y385`a3R6PWSGE_%gmGa~m=f|2Fh0bTPY7cd$o9g7&=#hKntV0PFe;1*lfslx4VQ94TbLB4go=NU-MR0g z!k8P6FzGR2T$m8r!lW=IR3oK6VN4hoCWN*yDNG3!{~mR9dxSBe^Y39-j}Jn1k(3jr zgle>;3uD5#FyW^2@3}km#f1r>?WSL1@)N?8P+e-$lVc21LUoymqr#*xC5(+V`Eg-F zXbY3VlpBwe`i1Ipsb3fq#)S!?EldhiLUn~~FN_J}F0VBC385`a3S$#Zeq5Lk+QOt8 zUuDWAg|Vw;J7Gd-yYV$9-xel?DPjCtlb;Z(>r5OKCMTOX2 z^~37%+~rc)PG}30!q|gSUYHQt!lW=IR1cZ*QDIz|5Zc0|FeOyWWIJI@7#AjlwlFD7 z3Dv{WPPkMJeKIMrS}yepq{`gtkzvHsx&SluHWL8mUhhTWiY2g$ZG_ z!jy{%C&rm@qC(2)$35?Tdvm7^Xgl z)!!G}Y+_rO6sCl+r%Zlam=M~+%BM~JRl?Y_QeK!4R>11xfX?}?lsNjFiOZmqKVF!4 z-lW^Yq%b9ny&(G$CWN*yDNG5~HaX50<-F}SaWSl(2P7_+I9h4)W5T#FA+&`_VM?g> znC+s%m@qC(2yJ1~&41mrDRs7R7!%sUq%b8^?@4)KOc)p1!lW=IRPW1n!k91x8$A5Qlj;M>7slXr>z5}J z(CI(6Feyw4)d4v#2Mwd2ntEcwxG*71LZ`lzP#rdLOc)m?K9l-BH!OzL?`b5C3ll>7 zh$)wJdDO%yq54wl6UKybVd^WBud1ZnF~fw=7AA!$q54|N3sc9Xo^K58Zw-^elu(_N z?SwI5T$m81evtZ38ODA#j0=;$m^dX=znVBIj0xkygwPfyg()}vH?w`xaZ?r3FE?q&=w|zDWNKm?S*zt6US;9+QOtT zR@dVG*W=w6CS43vFRim=ea%G364%R4Wt5+8V}% z(RPw9j0+P&TbOj?_RjHa-xTkpS!bT!ln|=UCXNbi=$y}_Fy76?385`a3gg`+Ul{Kp zu`t!s#CA-pZx<&vC#$(=bE=vvH>*-7eZ%HxHDBHwtLDDV@oIjwIR&e)?|D+M&=w|z zDL22j>`#~!ri7}G$&U){z9vozQ$p3xq!$k`{VZ|5^rJy0Jtb5Z=<4q^$At-@Eldid zLruAa&=w|zDPe4wDQ63l!jzDI?7-|#m=vaj>Ozwr6()o!p&B9i!kEw&s*#c}j0xjz zJjxt@T$m8r!lW=Ij9nzFeyw4)fJL2ObSy%HD2r8rFm=LCf>UxtOohm-2yJ0XsBSdn zFo3%RWjHg01-NZ3rLa1h%`l7;^Fz%+`F6|S>g-Kz>95YT;3ag;=_fN%h z4a=bO+&5n0#5_}_3oC?` z!m4#9hfewUlX85*q%b8^8|8dG zZ5S8Y!lW=IRL{uy5SBq_9JRN~brPn8>IJz@!k92FObBgZQW$$t+9R}uNnuK;UXu0* ztDy6I>3vzwBdq>>U*ho+mrGnBaizpn5_`AH^?=peziRru+9mrF+QOtTB~-6TIblo~ z7uv$4FeOyGWjkR^7#AjmDWR&A^1_&~3Rcf=drZD9jJ^C1!jw?G zWzub7QW$^Rq$h;Qcg=oM!q|JVUtvOM3zNd=`=(q>7#Eg*Dc9p`8GnQo!YX0eamg2! zLudS|khoG}?>DAgF?90BOI$8-mBii?GX8yQ%9p|F`Xu(Al+2Rhed zyu{_gN@11cdp%NKSmDNAlU^>Y5LQB`-YSW`KG|M49yJvuv9JtQ zw^!nFVWqH2^1W%YKVgL%2TgjputHb~tJ^EFHzeB&$HVION?a){4x4h7LT|c>i-l#d zy1f#Y3oC_HlJCus{Ru1FIMbw;3oC?`u)4hxd$VMF;dofxUWqG(#Sv4kQs~W=`g05` zV0FC`7w1a8uuAC7ljDNUI8+Xu{#PX&pKs#wnuZm^N?}!PPxX9VTxd96SRt$wme(=) zW%Ufpg_ZxoYnIc0>zn)vVU@5rD)kF1gjK@gBFPt42&>$Wy%A*vMl%@P|3k<<$VJ3VI=E3J-6mHd@Y3-@+Y38}!bB|}KXM<;(XS?U1=a}aw zPZRF|@1@=)-sinLy+3+u_y+h!_^$Rn>U+^w!+)NCj(?l~2fq#k1Cc;95Dz>OSQB_X z@K)f{z^{Rvw4$`z)7GUuoA!3viL_8~T=1^oQ^92LaPaG3B-Am~GqfUPhqi@wggy@a z7Rn6gg}a0YhKGi449^NL2yY4>4);r+o4z8wL&gmmOER`+e3s zbIzfhZ*%_0Ig`^Ww{vdq+|jw$;+VWdvyI{oWhU1xHgX?1qh zd8f|NI)Bwkt9wq}F?Gk+y|(U6b#Je`rtbQ>Pu1O8_tm=ps;lc|)vH;rMZL0m!|P3| zx2WE0^?s_CUB6!a;`%M?x2u0m{hR7PRsXg6pVa@SzBif~Z5!<$9TB}enusoqu8Teu z-5q@+dMNsR^!I2+QCZRGqRWaV7ELOeUNoy{UQtES3q|{j{#6ugkl&zwgXRr7H|Wz~ zSc6L%T;58Ch~^$&`|1C3eY%lDA3@mi$=~Y*O5$eUq+D`ZYPf$wf^r zYjRJMt3kZu(%;RZX90`c%`MO%F6Z*7QtM zU$fk19h+@#w!PV&X8W6c+$`1X`(~$``I{Ft@7w&U<|~_TYyNrjUz)2HV_V$YqN2r1 zEe^K$riH&{M$5V_JGJcIvRBJ-Ew5{NbIUm`UugMP%Q5HNcFwYM4xjVwIX|7#uvLpz zBU;UB^>C{%Tb*q6bE{gd8@KM+dU)$;t>?9Vz4bS(Gukw1)3#0LHW#*;*=AmwMQtkE zeBUP8wqx7wZ3ncS*>+LeinhtNAGSTw_LsJQwbku9w5w=$tX+-vOWUt$->1W+9Ts#r z++k?Pt2<8ZIH%*njt_KP+wsYcFLm78@vV;Ub*$?6OUFQ`oKDR;_2@LX)5cEUcha3( zbw0QAd7b-p9^QFO=gQ6>cCOo{MVB6326VZt%c3qDyBzIuyvwOBzjpC<&FNaZYpbqh zT`%r>dDk1dF73Li>*lUIyS~-+J;wJa z@3E@K)*heq$mm(OXP2JCdyefnz2~BykMum;^JvfGJx}*+6zd!t6T3O~aO~CC!Pw8S zlF|XCBTCnmet6!I^S(Z>cCXgGV!h7qHKNyzyK`r&FKqefstp)Msp;DShtfbAO*z zeJcA{ef#ts*7x$hoBJN_+qz%Jegpbl)o)e5r~AFx?`Xf1{eJ3~)4xvt;{I*>U(kPK z|7-i-)_+0&#r;?I|FZut{r~Fk9Z+*X-vJ8;EE#ZUz>xu`2K+Lh&cH?kI}GeTu-Cx; z1IG<~WZ>$7&kcNO;5P$*80b4c`~2bOKYji;=bt{m-JpSkE*ms+(40Yc4SHbEia}2f zdS%e3gT5SedXQ&u_TV~$8w_qfc=X_F2H!Av=HPnH^hR4O1m*IHfP-la!IFC1>ayb%koB#;Z2!I%=4r z+N+yY2Q^!DROPCZTA(_s`&AdUPIXo5sr^aSgSAUf{^Ta6K2c@rkm{|Dsy^x~)mI%; z{nQEee3CtXuLh|<+4Dc_Il~&NGOb}M-x{uJSQn~7YXo0G9;upGqf`s)Vs(x+hOew% zrg~Uoxl-d)U+Z$N)Oa=6nxKYQSE`}bL^aI1imyjrtwvhcsEe&h>JsZ(HO9JLjkPAL zxOJnt+?vYQ>ZYsl)(ka)9}cSpUsb&EA$&EN+%Znf@K zv#dpGo^_8}VBM=8wC-0ctflHv>jCw+^`P2pJ*2kqLj})U53Ak$V8H9vO7)iYhD%7v4I(nz7r;{qGck%JTYpSu{t(xjR zs)c@CwbE~>Hu_D~PQRtv>;0;OephwW@2PY3hpLDENX7KW>O6gr*VCV%(fW{!9(gDPH>?RipHm>N5S68mp^RTp#1r5)9>rXwx`b&?r{??<-y2P{Gy43TCb(!ZeYn-RT8t-}By3+H6 zb(Lqmb+c!KHPiF7HOupib-U+TYqsY(E8%(Gn(KMNn&;VOm3v;a?(}T8?()29E$}3* zyFIU23q8B7dp(ubV$UAyKF{mc63<@ie$N}$QqMl?0neM(gPymnhdc+ZWu8y0hdrNK z%RQf4D?DFYD?Q&@k9tm8k9oecR(Za+Y|jtY8qX+@-(sEYv@Gmgv)-`}I$rrTS;j1Ns-wgZfv` zL;5$*GX1+}mHxwH>%Tm!^*^3Yz8N!`@vw z!~2@f^6u6VFRS_@rT%${-z{OVb@)>gtD5gi+^C^Rf0A+6$-lOl;W1&Q@Pg(heX+zn z%9YZ~lCIt$j;Z(d*@ksrGqip(<$T{N)rNAPO8&9ACV%V{!?t}b)sg%Tzc2^D+O#VMd*5L4 zS2i`rU)tPKy-B~Xw~3#HLx`u{Y^f3O*oR780vp6FH4a`2C&G(*n(`-mSn4|B8O%q{ zd9#=Y9rodG5pO2_;j!kpzv6G;ZX^Exdw!kv&ZV9+oh`Kp-Ys;m!#K|KL!@8ymSMpg z=6wA&$5JbublUCwE{xOe3h1=kiJf*kblSZcI_-AqaoYVH{4in8+t-}GmxzPIEwuxl z9X~SPTyK{@-0?rhXQ%&ryrp(g-z^QT>VEKD1HwS&C9d!2JW`g9So|Md1U|-`)QD9rwMnpXb_`{SOw_e&3|ud%oHJ`&$hI{Ee(rKAn0dvcDrk%=Jz_ zXW}M|7n4Z8U5=~9Omm*^Yhkwc4mN!KC8efNZY2GCIy~{QsdqsW!wu4oe{MJJ>Jc;h z86oq>FgY(@MNR$~p?iP&Wxlz9{W zD7lVL3Gbs{JNHdzo_Cf|&pn)XCyo#=BX+OrBV8=@DDglU4{x2zcLIss_PXu6|7o+o z(jp;$Ywg^h_fpn5AGb1&J3Mq&z$YP^qA{=;W!h!+q?C< z$LEeuZu&e~$1G}Qw*S8!-&{FA?s;h=>yQ%W)k@muUQf4vmtQdsILH6YPv$%{i7NFj z@uka6d$-E{H{u<}PSV|eGIqSV4sY#O>M-d;=wC+eNW9a z$FqX-=9KFy^%Rtve)lfplylyc%#T;xVamI_WVGpDPJeRdNq2s%-`J#|J%28f`^24J z-TCLR+*ciEoBG{x=R+BXu7OTFocfM)Tpb2l>U-$6qqVf}SU*$l7~_yLKX#57y8ChB z-`H-9v}53#93SyM?qg^Dxaca=?z~gXX`J)RWSpAB{p*Zh0jaO#97_ese^T!2v)2!= zUr2rAyW`5)T*$th<8k}n2hXVLe(R1miMv_Pv3&>TS?BlgUVKlfrqDgk(X6+e?ORAa z&i2mrOY3Z@)|C5%@v{?j%Q@?w9>n`EH}}UI)a#4`EBN2p&Y5q@$R9t5c?!Dia{J|q zSCzVu^t-!S>SDNx{^{)hy$nlDAa?UVXS{dnt0djw+4Zcs)@*n7cDqP}IU zqo=_2%v(3ZCuKddp7o%!U-$lU??ZQdamSO}n1`L;3v|b2cidhp&mmo}H|^LXbjK5S z+;ETEy${{{(jAZ7@yXr4yI=RY$8C@MyyK1o?)aD{>nwM@RW{We*D&auw+e|r=w+$9 zIS#jd|LuIb=g-Y|`hzo$xaWH-{l%$w8smd={+4n7JSgYahVJ(6@wn}GkIOxuBjx$$ z*T+qLmp*2A`|XDA`TmD-dL#9&mh!hgW!ke+u79^ebDX8^%yEB8x^um@@Z9FK&%F;^ zy2s_rn_DR7rf)AW+s_wnnQq$g4zY8*3wD|M{H#Zv{{A=Pn^XS*uDdgTIPmde5%UEq8Xhb3L5>KRnj7!&&z^*XQi^y6a%~_&VKb z_BU#(IWA}Y?;Mvi9{eZW^6vIm?>71Fb#U{iTwu0$&wsYeyRWfcb=s%px~%@%?3WjQ zY8&VKPv#Ma&hb0#cIT0X3A3N`E@w^sAJ^sNotAo!*lnk~f0ys`KGivo!(^Or?>i^| zW43ee3wNF2_S@1Q%>K^4pU&>L?tORmI>Ws`&t7l1{lUGjee=xmyXXJx<2XCM>9{E$ zkn^{Z=X&S(&XIoiHS>jYe%(rX8VTemimEq z_$p03ojzr5AU-MMg!4S?oTu*W*SW8X<$aI){OdjsyU)pQaz34MZadxQ-g=YFb#~I7 zd3&~uD?83=|9#A}&i>9`hxKKB<=kJbKQPbtzp|a_+d~UblA`_cKX%)*-oYbyTUEa8#aoUo_xW^FHZ0 z)@9E7qvc#Lhtq`aI`9VWJLi4cht2rhhwW>yZf^?R_BrisPwX70!+BrwnGpQysG)n@ z?(uy#)m-O&Cr!U_ufN+L-2UP8AB*ecy#I2ZH~t&l_jPXm%T?yOy5rsBK1-cPd(Ljh zD&bnbdGN-Ji8uuUGrzm^qc;&j%+^9Qnyjw zIsbE^^PK7Q@Ah|?_PNiEr)bAr~%-wWO6#-}LftfSp@_dUn&#pXT7p{opMNL<4E z&j;APiu1Mte!bJ2UpL)(&uf$JzV~t8C%Eqy-1iUedl2_Mhx^>%z87%cd${ib+~@!Q zwjZ}0n?IF#M&8$4`kIM*&N6(xkvT7uX{U3ZN~W9iZj48d)9$ZWcR1;PbA6sBzD3Hl zKC9dY<{78lk5b?Nwwzn<+57)*?L7N<-1fQcZ6(h;?sL*A>0dwayyf&Wx8Jz^{qG&7 z-EO?{J2~F}lJ1uKmyG`zd(8QJ>pIg9bDuNuQN|Z%oU2!E>gzScoL~3({=-U>|Ib46 zUd>%!cBemXrJc_FvmL&4rBb_~^PIRBZe!f}2yX9Xsjr~(obw}W&p6@4pXFQX40N79 zd@KLY^T#m8TW4HypVtqtE_9xwmo?&BOq4s)&{8#F6Ve;Q13Z7V_z$}CqH{mCA-x9u zq33_(m$L41KCf`!m%8u!ops0n%I%+GsSBYyUi>$nJ+6Ev-T?^AyL%y5FlZND&ayonj--Oo!7$$jHKr~k$C zs8g?V9h~v&$GxWfHPX(0T^N7Jcl(`t9^Lk*W|{ur=RDp?Ip;hshVFB(Th2Yts}7j+ zJd$=f*K12-vp@GZzZhlS3j{ARbo+PJM)Mp#fcID{sDJ4pGY^0DiD9k(5^t~1ct!cE z7I7Zou1%)B+l4JATGj6pu0FyXPQKe-_qsTr*EsW;^Ldy<=kqX!&gWqcozKG@I-iF* zbo$Lhu>CD2-doemho>i)_}-h%Je-}$--NTji~eQOZ+O+v{rt-Pyv)6BkKAMKt1Yul z``z)^okw0ym~^-OA4>c)>q%!Ev*bPOtu4&?e(r8l-11 z^XqW0jJMADcj8VrnfuTv%%>mYYK=eg9W|Fao}&TmpXv2*+mN8f75N8Rc@>izLeb39J}b>3GF>15t7 zx%p1|$CPu^-SV9_nDR|!e5|q9w5uiK*I~-L?~{udH=K22hsl;YN_sDN91exw!#F$* z-RFDvdCGlH`D~H7e(v*<`#!*Zu5zE3wy=Na_?+wVJN3Ea=Wncgo%G*%{&4tzi{1B7 zJ6OLsO;hh#e$wAZHQ&&3zOz;vO;aCOX`~-OwJKCW((9mU>IqMX^!2D#b@?k~ z=UZlB(tX}^(*3AbAF2#e0^Uqg(on5F;@e=9NsBmTP^~`ZyJ3_`%W=w}S{+omq(sv4 zNXbSu-{;CFB`2+blw4Hv?XDW6)JdyJN?la*U8`E8)Jv;PN_|xGUAjV29?z&l$`hzo zcUpC6=X^9xU6NIg^h;6A&lA-r{a!RpP0xywehaGAVylSs`_MGCE2{zNuc2Bku^N(o zKbod?XBCrPiSoC`RwL3MK-1Kotj46jj%xLgRYJ-;SxrcJ7u9N+)s&R?vYL_dKC1Z% zpXQ_ti?kqRII8*ao|dFk=A1*y9#r!^uvX|ws}1^y)ee2s>VQ6Gbz;A(P_1mM3w|}K z`MH~J=vu2gDHW(z>#Uym$5GAq3`_CrQLQ#uz3@+>{6&k^8{K5}MK@dh(Wk9}=rh(J zbc;0v{e*AMS?Um~)u()WPV-Y6BS`rS)#`J;KWC{gP_2$wqwy(J^PRLy@L!@@eZ_a{ z_(UJo>KNazv-q)#vH0WGIQ%!L=6h>bpjYV$=+$~6dX2ssountB*Xrxg>-1!FgJ%j` zJ&DqO&s6*-l=ge3pZ=vSWEXq9IU>h;b;gWfyXHiYsQ(cby^ zbX2Ph?*e=#%J(?E3-J+Dt8DK*_#9NL0`Fpc4OFX|-X-{2s8(aVOVP``529ne%g`&m z%h8G6mFOn#qv+G#Rp_(c)#!8HwdhvwI`l>F6XV5Ba{0FF32fRDb zpS(NKU%b1}U%k80-@JQJ?c0m`efuaMK($Kqy@d~=T7`W3@nKY}bl(IqL--n~R?U2e@y$`KTKGQ4w?wr%$9DwZ3e~E$ z?%^8eLv&Jpj>6&ulTX3R&n3&_;ILKm;3(2Ux8{h-uE{; z(RYTFt5Ev3&$4)Hfzr2q9{jZ^ecMNpx*pYPvM+$Y0oCe8Ul2bP)#@f+7(Wfw>SkXC zembhvExs)L3{dSLK)M1ZSbp6#x!3${90723SS5OI#jF2eVy=6pjxf>b-`~y z`8zmYH~dDFd(GD!zZuo)DPK?YX!DiJ z_fJBj{_997LbYn(pNwyaYE|r?f^URs)!083UxI4Y#6Jz+6y+ZDPscY$xd;6-@GVj9 zLH|sAE0lZCKMUUm)vB$3HohIIReS#&dNetBa{`F ze?R^p$~^9W7k>z49{0bGKa6Ving0O(bClWB{}KKO%8cwki2oMlFJk?N@ZX_Y{p>%C z{{>~H@PCf~4b|#*{}KEjs8)aakK+GAwffut75*Pot26#%cojH?w*trU8r8}ZIDz+~ zTKNJe@qSdRK;V0P8p?bfIE4?P%-4Y*@#!dcR^T)~6Xnhd{EUyF+!29a@%2#dh`{go zD5_Oa;7@!5RI5gTzwwPxtx5uC@J&#yng%Rwsb(m@_7w2oTcBFC4EXTppjx#G1n{j< zt=a^F__iqXQ6P+Ok1`(xGVmQy=A%FszB9^v6v)PRMVXHRx%hKYt-1&D@jXzjdIoBs zu|O?SN>T2DKq0;tN)Hdz#ScX3;eq=2K`1>uP=p_X(!&D{(V>Axqzpr~8XhP?FAOwA zrw5voehaGAj6h5Lt*BPB0E|6BvO{qFU_=jKaT$ zvdRjK##f@OvI3XjUq`vW0%P#|QLWwyjK#l;YV}@V9R7V&s}BNK;18hOeSr!1k5KNu zz(o8(l)Eo*HU1FF-4~dIKa6ts1+K$?j&k<}CgYEwTBQP0@JCTruz{)guTW-|z%=|Z zRI9H8)A7eqt^NqiK>rNPL{-`>)JmI8u12}P(&pg3DC^arhriY3uM)QC380 zPvEDa^x?D(_*+q}W~Ob#--hxen6?=|AJyuvw5Rb4P_6Dx+k!4kdybSvs8;u24;ou=OJ$M++2!4)c29Kcm!J}wF z@GG=N@EBS%cpR-4Jb~5^oKC>%Ta#oBX|Zs9@T0>(DLx+9A&K=^x&^TS?dN_+Nx_% z)~mq)emcr}H5kOtKv}N_!}yt~R<{K+@Uu{@ZVzVRXQNsrg4y^vs8(}>x%hdgR^`Eb z{2eGGPp}65E|ifcSPOqQ%JmHv;uoQeJi)s7dr?N7V14|3C?ij>2!B7y$P;Xce*mQq z1RLQWLK%62CHRL?dPT4)eg(>tb+9>pJ<5}5uqFOUlpYdnh2Mm-9tgImWK^pg zLQC;eP)51XgZQZ^qgiMf{x+2UA6kx|htmH;EAe-rjB=qz@$*soc4!s;K9s&4T8+OS z<+&`h7QYPTxh%8}zZ~VwQs@c%W2jcELL2Zl%9=K`5x)lI%~EJHx*_y5DNmyG@X!|g zCX^l?dJg{-N)Hch#Xo~GHiow0pG6rPLoeZp@rHKdUq+e1 zL%YydL%T`YiE5P$?ZNLtwR$bI7u_4$N6H&0??6It;on4g2NK$ke;Z|X4!w&%fHFIW z-p7B0a`%M};6FpT`$8Y#zd*VBLI?3Fl=~=j2!9IYJ_;Si|A_LQB=kA{SCpAIbOiq= zs?}eiqxip3?y1mM_%kT?RQMR)Lb+?g$I(#u1Sw&Z5k7nppMf&Mhrh>Xp}aW>pTcLO zyg3Q~h|fiNa}qv{&qtXB!aw6{pv(f{U-7k2X7=#!_(GHwY4}fkdz5)0{5QTM%3TmX zgYSlN7lbV@Gey|rWu`#2>K*ps`=G2g!vXw2lsP>d#1BGQNruDt5h%|};SBsJlsh7v zg&&XdPA{B|zZzv!59i`%qm0<$eEeM~BXhV0{$7;c8?J@F52g2p3-R}(jLhM>_yDwG)^ zJP3aRWkv`O!JkB#5yC_9-=p;2@NoQ(D6>F#1pYM2ED#=r{~2ZV7#@xP3+1UTd(@^?q`W5(Wl)joi0iTO9JETv<*G5^Nq+gA%kMe|- zJ_+9pW%N$J4&M%C^iH3Q?|?FTr%%CmLK(f&r{cSy^xO1l_--iuHhnr;nm&V+^H8mN zrO(8dp*-)T&%$4bYBeH#Hhv_^Ix~F^{!)~8w(0Zmm!Z6`OTPm@0p-nY`h5IEls=rk z0Dm>gNS?kBKMB=pYWh9+n^0CV>5K6*QC2ePOYpN$`h5CQ{A`rxrt}B#C5nU zqO4NVm*W?q+zaU|@%N&vNYfw1FGcC+>8tP$qxAFi)%X=C{XBgw{t=XZp1uzM7|PqQ z^e6BeQQn57Z@_Oxc^j6#5&tyG+pzS__$?^obNbWx=TXMz^ey-oP{!x<=kPD0jL+#? z@h_u{&*|Inub@0(rN4xK73B#leLFshYV}6?4*WipyC8ihem~0l=k#6p4^Vo0`fmJT zl&7KeJ^0U2dU*O?d=<*Oi1dBD68v?L-KHte`j((HT5t4SF)89r|5H z2eegYC(5@*d5eY8B&dThDZ;vu(Wp>ARM0tyn*%RLx<@{%sqJ1-aq5U&^qXRSh zqJuK~qk}UCQgR5&JCMvl=5gd>oTuKw`Wd54`yD6ev&yE{WNn5TOCGu ze$SkWp2(a=%C{(IBXc_bJCsp3a|Zq&l+iV7CYqTwi>$6s)le5;MH)O3tr(`{W z-k7xkotm`~y(w!mIxXvI^yaKB=$x$QsCh2R?3}d~U6Zv9U7Ph1T9LIKU6-{3eLQO? z`b5?)bbZ!tbVJr2^vSHf)UXlN>V>R*_-!a}hqB(nzl1VtXYI#tNBOKR>s|Z~l+|X| z`}mzGV^`JzbYIp-=$lyw(YLY=p>Jm$MnA~<96gYA1pP4UDEd*>SLnxC$IydW$I(x+ zPN0XfPNJV?eUBc_I)$Fd`VrNU)9lNGG8RRC#`{oKhLKXNm;&V|} zfRVrP`6#Qt$QgVslvQ8E^0VqgwTebO_#%||IT0VeAFkQ%Cagols`#NDX`!l(8{V3*QZ8Y>X7* zyQAE*k-GSPD0gn8K7Iho+A>mvAB58PA`S5)QTkq_5&j~Sz85J$FOD=tFO4)u$3$A9 zmql8kV3|=P@{AVggufEy87?<2Bkkox}(=d zdZO1wO3|5-Ug(@iZ*)bZFS;_)AAKY;5Va$N(Djia)UW}iA4Z1aH=@kHk>U8wDD!V* z1paB1`8P5OzXhcqMn?P>b?4_jKgz|n>}8}ZMVYg*m*ZEUoZ;-1=p)&WqK{^;BK_S5(;P{!WuE%@(H)(_dw;eSFo zC)r!ktekD6L{RRyoR{$VD9>Cu+wnC}?wXt(_?9SlP0mhyE0nt?XBWN=%2QR&ZhQ}v zkv3-!K8CVt&Do1ypR*60obwiXOU{0DM$WtFtvT=r=h(qbGBIMZe4W9sMKcPqz9KWfsf%8~+c=D3^N% z??HKYlxqcecZBj3oa@2!8V{eI%SYXc1qeQp8^C9yoafviz6Q!Dmm9{{LV1qJ&A``3 z8Rc@b@I@$Zs&ljPjZkL5++2Kflr=_fKE5@|2$ov|-wtI2%dLg)fHH#R7UDahj9R&M z@!e3aU2c7R50p1TxkdO=l&6f`hWIj+w?Mg#@O@E6v)mH=0F-q|E}tW*!6>t8Zgc!F zl#wmBC4MBz6Gv_<`~;M{DYp&&DwOdjw;ldkl)jPM0e=HZ-^lHRzZIo#SvhA3A#Zz{eK%I6Vz z)9@uIYx2D5_@*dVKW_%UIm#WHHxu6yKnLY5M2F?wgAUJIjLyni!dADV+=F>b@d=dkpZ6esF3S1OTZS&mTaMnFw-Q~J z_b9qNZx#AQ-fHwn-dZ%3w+=m;_XJv%w*mb+ZzFm-Z!>D;KaFPRZ$WeNpF?ZsZ$%69 zx1n|OUqb8UZ%2#rcc2aOccLTnccB;M??%Vu??Erm--}+6zYiUs{}wtSe?NL<{=2k! zBFb^)zmLw&KY-55{|GJ5KZtJ5KSY_QP~Pn2AI3j}@@6mpbNsU?PmcLV@Xw<>Ip!b5 zzko6(=YNIn%|C{IoPQksH2(zpMgB?jX#V$TRsJdTc>a&*xA~{hjDnxhtb$+B{DR-n z8U=r%^$Pw*qXlQswgpxi_iup*9a`W^57=r#17>fQD7>@oC7=iv37=`{57>%m5 zOHiFQ2KAx?V4y{)S}?RgY)>yLhO2GP7RcP_-#DT6iJP2yOW- zy+~Gjm0+Hlspc}*Ojq|ZO4KX7m+>K5xJvcOZ-5TSuTyBNoAIl;zK-6NU$by6*SAh# zg{s6?sMqo9)O+|R)Yte8%3n|uO)IEV_@wHL-=q@wE$T7+7G>j~RnOv|RnOzMs!t2* zp`R5*3tv>aMorXPqfX(=YH*DPh1=Ej_*c}eq`#`}!|zmU(4=}9-K*-=tXcS$IuCtY zosaHUmsaa#HR}|hgAJ$E@(Oht=V)cTD$2qv`*9MXuYO0&}h?{s+(>` z$!@v@CA;Z!DA`T7rertWmXh6cdrEfG9Vt0nzfH<0{ae#{=pUrSb;oAY)i`}Fdbu9f zY$m^@_gJ$9sNHO#nylA1YlA-7Yzn%m**)k}&8DHxP=1R3pxI*dL$}kUwEE@xJoFCT2fb4dKRYmn^4l$%_wQ>7L>I0Ih3?@Yf9R>EhSg$j+9)jJ5zGCK9`cK zbq`9e)-g)1*5^@jwJxLNI(;!E*Xc_sxlWI#0pQvG{{)MfQ`X79fuaZnby)ExR{VkpJw3gG=E}h=84Vp>rE}cW} zE}cj2E?q$GZruQl@=KYWRjI1vyV6J1x9SZ2xtZ0@Dz*AqL#>OgE39j+Y1SNTf%Sl8 zTN|vc)^_VPYoB${I$|BS{$>4Yow4$DUEN%F(C6t3^eBCqo~Uoox9dgvL2c_zdaK^6 z59n|70MDhKn?1LC)_8*6dftxSY2KCI_1+h~V|-WoZui~id)oJoFXj8w=k;IapXk5A zKf}M#zu$jOpl4u0;Htpv!2H0gfe!+0)6P#@oOU{GXmE6Jc5rR*#o%v2Z>V;tRcK&n ze(3ek=b^7dr$WAP?QqL*&+y3b!{Kkjr^3I6uT8%-{hst!(mzYDN{?hDG8SZflaZ4d z%^Z+r7Us$dt&Pk;RdRBX(qG>ZnwO$yis`%^!P7;jb@}CEGHNF<@JkZEUG+ z40fY#EiGYLcJFGtrEaNPmVuC)+xLFmy6E=3?Yl^710jU4gbayE!WM!V0))(jEPo~o zWSJq`pC>zn7?Ml^Aq>MZVe%&#$6@un?>VQczU{W1=lA2Qt~%$`UUll!sZ-~B?pvPw z=hyt@HPN+~U3=ZNH(xt^?LF7luYKROzkcnXT>H}N&R+Mk*M0iBzq{^%op0FrUw8h` zo&UIV@AXHnzyJClzW(jkzwi40b^X_`zi!tZyFRjO>4rbM;V*Ca+zq>LeCdtV8_(bP z(HlQ~BaG5-df81se$(#f-G1}P&3E1W$jxiFoWJEYx4h|=M{fDxEkAe5r*HYYTfTYA zHM@s)AKZP+R3H z{qfr?FL=uf-u{BGz2G%3{E-(v_l_Iyxc!ddJLc~=b4Trt)jK|R$G_e&c;}n${E<8V z;?B?9IWjapbb9EAhJJnM6GLx((Z^o&2QT{b7wy~o6MMG|Up;(ucxL#a;SUXeboe_) z?%4OTeXrd2?tOo-?{D^fW8d%Y|Lp!R?*GUA5S$O(dEn@Qr332+E*|)q10Ox`TL=E& zz$Xv<+X1NR4(>g8%jkj8nbGoSWAq)Pe>(c<(JhCceYkV@n!6sp>u2x!wYz@ru8-gK ztRu&dEFbx$Bfo#-lSe*#|M~?o^ z(N7%x-$%cG^pbn7zUS6^UUbjeJy+km>)xe%-*E2_-}_Vd{`|eq8yg*aXzT~Z-ZA!D zW8WBi*7%L%%j0hz|Aq0djz44KCnkPs;^!y6K5@z9y_2((KRx-(spn4JI5j=>LsNH5 zpPl~2>0h7z+v%@N|J(EnX2xgE&O9{p@XVWMJ~;C`Gk-jDyE%_NHThdF;t! ze>MC3`zrUf?|b;Z_uco?_x-|sAGz;i_kH5NpT7U&_y5iPV{AD=khK0bWn@QLvge}3X$PJHXcE%T%EWAnB7ch0|W{uk$eZT?g9pPB#C z{GAKGzwnubuPprQ!nTv`lN%>rd-823-*fVVCx2%&!d+=|0>lVCA+Y;%2ILSv>o!W^P#{7>ydfk6do_rtP&**=ozRbc; zo?L<74+nQ4ctbq-CcHm%@Fe}8;r&*CyYQ1I-(EAY)F$NrI=ll6^a1_{zfugp$!edi z|2258>hf_R*0b`tkWUi+s^Bf zUfbd#`X^6*^H_kpl;UD@tqAmDsEx~^|e%nfTk5zgu;d__&to@E8*k%Rq%2BYW%(j zzt_Oe_4nfU+S0uP-&YzNcpZM`(*<^fZv--m4P3`??2%8 zmQrothe|60KaAfa_`S8%8~73YeiXkS!|!eQy&b=I;P=kb`GI%g_v84z8^52x?>(i9 z1CQeO-qOavf5h*7`2A$*VfgBP7{0o{f8c}o{Z#1(;jjDAfuAnD4?er!H}IeF`x*Q` zjNi}V_jCCDJbu4WdVJvj!S5IG`!D$Y5`Mpo->;OOTl!V}K2q9U`Y3+ChTpH__ZyIT ze-pp|ir;@Ly{z;x{C*3+-!3heey8*h%yr9|nfu zZ-}+|hk=LiVw(Sb)z|7DedwQj&i~}=@-H6tFCO-|hdu6V@VKwR6CV47$3Ee)U-Py4 zh7Vm?a(#7`4?U~o>in#dtMk<**MC=+T>m}C!=B?|*Lc`90%QMOQ*!-xoyT71vDbO* z^(8l!H~7%7)oKg)hr{mkH9g?-JK$?D>S3cEcG$xX`*IKaa_{okyFB(TkGDuFZbA&d+f_Sw(M(F@u8lt z)de5g@VRXGy1dfEUg=@4_OMs`(q8RLdyU7w#$#XOv43PW*b@D5>78%ZmG{S`|BVp; z`xB4->(Vm}``4v=;OT(>eb(3Xb3XKWU)tw={l4H~U+}Omde|3zt-k1M^<|I!vd4be zW54Bl?MWZn_KaI!s=VY<3*koL8Ez(i&WFC}L!~V)#TFmBc8g1KqYoYSp}Tx&c8gn$ z_xsTCEpFu<-{Mx@yob$u*hvpNDKM_QlUv-%TlCmPk6rZG*ZUg0(TCpTLvQnSd4~_Z z%jfqlUxRmh*t*?O>={~TANpG#`iu{K)W|4wq|?EHIQ#^3vLzv5wE@vwjKef78x zJ>gsVgzurRdDz!H>>D2T4c{Bz@V)UZkNuX%e#>K@^z9hf>So<@wz_$BjSpS7)y=Ex zwz_$By@y?Iur1N9t#1A9+UnNt4W8}>q2pY;VXMxyEzylW#f?72O+LjagUhC;z>*>DF(|w<(d!46yov-QZd`(~Pv9I^o z*L&<6e1326`MuG%=m&i0J-$Wn^`ZCqoZsi`_kIt1zlVL$!#?P1@IhaL4|(i|JoZB# zTi@nZ**PD2^)|QOUgJZr-R9QYYqz=e_Bs!Hork^N!(J~iuC3Q^bA0@b9{Wa*eWS;| z#n<46edrzA+fA9}yXzID5+{kwb!Z>gS#Lh;|1edxfY4tCgwPW#a9&ve)?_|Okt z?O<>9p?`X=gS}*@3w?0s@BNv|2Or$|Yw#z-|GsM2Em7xsrP~tqeCUD?ZCD69-L8?F zb)R1Jq0>He#)m$!i*uZmpV-BD&;LH@VW0G{$2{yY5Bs!-ecE8pjt<}8+VNXA_m-I7 zmgom>aj>`e(3QKN1;0(iU%C5RCI$WS9!K|^KJ@z*x;Faqp0|I3wYxU@st^66h2V{F zkh6*ZT`nQ!eEFc8S66u06$0ZNx?<4Hq3eCx8$8_&KJ85&c9TzglTUl6Px~TI_adKm z*u#c>+F_se9-ns1(~bGG6CO6<(@yxbCw-NDbF8Pf;S6#Am@KOAx zw|#rd{oA6g_iuYPe$U14+N}%QcH*~d>zQpg;`cYee+IvQ#_#{&_pe(Pw*4D^U*B?O z+c)w1$!+)JcW&EbQEOXm>-4rCLj0`*|FrFG1D9-n+rahP-#_pQ{NBBN*Wl;3e|BKw z((Nes&<$_B^pWk4Uh>HHbK8D=`~CQx+xAYx--*A6Zn*Wb2X{Vt$>pWyWml9Qz2w22 z=eB(b@P%EkyS!eydB?87i5-tczqjKprEl-J19=_AZ`a_TTrmXr_~2iE$G!Ob=exe^ zs>=qSxN67XH}O0CtoJ_S+_uXGf8$w~4eo#T-of+Fxe>q1K(}M?zdvWk;8zgm-xpkS z+2Gr+dHyrsecg`14_)_I^oi>hc0FU~&cUlLXM>!JoSEvcZqv_<^1O1Ao5?*!?$M zHu%ctJ-Bn*&6k(ndGjMz&+dHW>PvP%a`h{B?;QN_?)LQ`-+g)M?{`13<-@zbhTlV% z%XlIQIC#+K*od2-8bdoC}n@40vIhQZ4QUpV;S&hHw0bl;rHM0`_#T4xO8OydoR6z+xstF-Txu{{i{oF zJMb5~7Pfr~zlB||Jos32#pvT0d|=ni(JyR2e$N-SUxoHub;;jee$^$P#c%uI zNABG@c>JFB_2;(TF}QQ=p-U#mzOa1~e?M~X4Ld$^?-#c7_dR2~27hDh&K>_ec6n** z_(PZM7(cLM0e`=9{LUQ@BmAE6yLVi5$&G`5I{x_fua93|`i_bBU;5}JU)cWkiO2D~ zWAK+I$1ztfFMWRd>vw#8{LQz_?tJqt&zt@ax7?31uK*qA=S?$@Z~y+8%S-Q?`P<9C zKK^;6dvNF5C!W|+JNEeY*BraN^tNMHUco%Se`eQU^RoYU55@q$cVBV;w%;AB9s6C( zo5!N7?#KK@U2hnC?1~r7efEk&_}w@6&TY-PC$4xDzfaG7X;0($F3h9tShElA{M8c= z?rhFIxO3*{Gk3pt;Y%;vG5)0&UWLBhc@jPVqVJBjT++ke^Z0!X;ormW5AnNoU~=HL zfxm!WZ*t&;1Bam7`-{@SftL@A;&%wY!}v`AH;unD16wY+f8eXp9Dc{~>i`bs97W~w zVz<(*SI64z%EoN7-d);Qj~D9?$9E6!-2^$ZH#)L-q0(ryE*!0u%li)?e)Mp;JiNDz z&{Au$+pafPk1jjN(Q3IoS?{bjDjO4xN~fcAOfe!UR^x7Ytk-RwiW{v;jp-CV-RO1B z&NnAo&04)%Z#4sEs9No|+9A#y9;h^WaVNl-|3S%rp)DDYbvp6da$|!eiXh3Tkf7+e z(upT3)w6L81vcZVD^UqZDwIR6WQpaPHq0)Nrb&p+Zgpa*m7+3zF(S~VcBR=_X|>l# zxKBX7oc)@Ptx?)U|0*O~iDKxe&qo4h+V!r~OJa-bje2*iSzBt?*Opr6;-++@rpVN| z7&zkEeNaLZ4YYcx(#F6@cYCx1=31?Dy>$#&y*6EM#1ripv#`}%s;|YTyH)8dW;YXe zkF`486O}dXK*HuQLohxob(vp2+u?ndV4=6%s8<)-t@XIwt?PVHWVV+KihdoD#GFH{ z4U6k6wa!$!)w5C+!Je3Ftqy6yL$e64Vuow9*OtmpHR83n*&Sjw6KCs0u+BL2BWCTFw|z+t=@V- zWeeLcMaU|akT49Ak18TFa|I}qEk50>Kh%pCTkURKo2z%a)9u!pO{>*%d8}4DR$o24 z(5|zMoxCsxStAt4ToP2*ve9u_>am4FN{{=sDJ#%b0v< zLnTR#nk35RsdUmx!B3oxtLIKPd!4wZ%U&4B!NRn~(9vRAX%JdHGRlxN+X}E1$7U;% zwb?IZ)AeR;tkKZvFEvrP)K@5yEj%cYYzvE_qe_dCv>-z7V%xrA2dG4zsq4=j!XHo85XtMngc^Qk0PO+9&vhxXm4J ze)$#HYZt4PX48ZQMf;h5NOMCv2}lKuzi()b*(t{>>)`k-U8vA!Qx~zWk);iV?={UX z(`mj8v_-fGW{*v?MXYV+o5%QZ=fuQDwNTk`0t_It9ogV4srKPqr5lg8dd=GLxO=uG zq7EphE>`1pZh$krO4|Vo6D*=V4Oyp1b}C*)3zecx|>xw$o_DGSQv#+*ywJa*VIFPSCE#)eWSS5+Yq2<^V~og5uvv0FoUBSv>Q zCY4lS!Yr~W7;wy)jXWWG)JX&AoO%r_1Z6*8%jtn1~*f)G|{NUk{;i-{{$%DgtM@Gj+_8l6Xngn8OWb*L-QKTmS!RZ1aX;=Pq z0nBRlG{JNkh5>2Xa+5$m`MDtF@Q6z(fu|Pdgbdx3mW8c!2$Be~#_X>G*|nes5GXCR z1dw%(D=0;#%@DT=a#J9>6~YbB8F2@YluTmi#UglL@Gz-O zE0W+%`-;K)0cPv*hv$Z{b!t}wJXa@I=Go*#s}=)rqSt6tmKzMtTB9vC-{$eo^@JmN z2>YwigP~S?Z5&9uCwp;^IpFM4J%_(69Dk(3bFFHnLD*TG$7?QzO{FS!w%7i z+stYT&4bDUSuwT1m~8Aq1!@gaoQiuLHeahOld+{K{e)pYINRZm%2nL8$qCnRGOHb{ zbj~VLv}23$Dv$R}!ZE?$FhB&lrWsPj0B)Ap4}qUrTkmd2MoigSorXBjYHuL2hS9}C z8g%J!gdKV~I$voFM~(P=j6dY-tkrN-Mzin-;AWTSWzOW$a`{3Vn_@JvxaY{xL*;UV zBiI>^Iyjj^AVs#Kfx(cDwO6rBnq4WwLSYm{6c~I#OkLk|ba=z=eP=+`nArhpeT2cOxUj-h)tPH!>VfTnKHp z8yTU{J&oN6*JW;M-M>gijFiJEz_BCgE3%LggsNDCE#_#LtiXfTk<23?=`P} zyBvzyO!NmjySD&Tu#t=?dmf37w|k-${%*Xe?BRTazsBB1zzRf>3D9I+Wa>(LW2{zL zCkGmd?vFR*l(kT)Ga5+3mZemSP(G6#AT}GQ5K~UPSXqfvV8?5eYmN7+=O9D-3NRN( zk%m$_l%t8`K3JpF``WH5tY}17(Fj@52wBmHvLajASkGVpWJM!^6`=ziD;mkLqLE1W zbO%jw97wVj4g_Mq4+sYuiF(NPBJ&Ge2r;bVvGw)E^|;DYB`3O@40<-$7fr@hOtVw1 z?(n|N_)|s}-KV?)k|jcY*QZfoDI!$36paF_2%*hZkr4{r(^y3yUvIan*nPP!coyQC zAT$JPEhxNW8Ntp}r&?LZsZ@!Uai1|+$H9>sjls~9#e4#pX4l0&T><+z70|03bk^TC zoqZ9`wW5vVY%VwBE+B4Ic;DpI*u=!>q5abb4^JE%ojQDA_`u%1`}U0;+8-T0Fg<;6a(Mrt zz2kc)_m53YO&^{Tvllh>#)H4)lu zY8s)?J&mae@+QUxTf3dq=UNxy_5`LJXBx1aE*7*ooSKU)&Suj7==kJ;=f36gI$TEJX*32@ZkORg z6SXH=0WfYNx>QmUtTTa4oNacfiS0tc%Osf_xU2a|)FOr^d^OeNqZ_Kr-9 z92%RR8lO6R_|WtyCeZ$|>HYhr_Ki;+nm#afczSGj_`tq{B7G?nn1t+qYNfjG@S%fI z2SQ{X8Vj>X(#^%ImFfmkjqE#oa1%Cq(2oH^eaFD44wn&l8e;$|h^N>-3$}Y^WgU!Q zkk!LJDo4LjWgxis!s?xBw_9!59!3<-3uay(0>{xz?H~t1(r4TpCVjO*byr70vrUTp zuNsXGP3|2zaNywZ=)~UX@u`WaLlb)sj!#eR9h=7BK%N~rwD-`+)WJhCN~f2m5B2Lj zAdVjHhXeu=RS)75*0b`wS*l$r+>3lP8Fwr7M(1cWGdY2kH4&Y_Z)QSDRZUzqo}H9Q zk%-PNmZ!(&7N>9^DleTnJtgFG$EJmje(EMr8g$!?jcRg>Mq z=mf+@+=a?{>tdIXM5)Kq^o*wI3Bl%WsTotvb^@U7IRR86V@8uLK{TB)2|~tMD)HWQiHBya`c%l^& zPd7tAp&b%UHAEn(jzJlTJWsI9be;kVc}g^ur$8#yoKw{k!K{F{1`=+_!9jv6#AS{% z)a^%9osBWIVI@f5QcJ-oo9A2HR#QV0cap^Z`bvSA2Q+EXNK#8BqcVqkepwM_fx!_M zCRqT_(UxJ-(_O5S2_0|Y4yM%>R_d~1pUz_?xj6eY87DreYlH!a^m`Vz`2pP3IGYL$ z$$}R1pmMdHvOv)lQq%FTN$hx~iLtBce4MSZyevpsq8uxWI&!p8F3SZ~rQx%HZ2>NN z5`fi4Yq`?!T)BoBAc{8>m&hA;pF9!(s9j=AGJwm*EE5nD!CXcaTrX8>QJEWMBh~}t zbiLhyr3k>bp0%E!7}5}QhOPCv%EKEnQ`!bhRLmgUWTn3M$1!Yt+I4E-I`b%!m!s0B z#TaH4%)o>&5nbzHrh6l?s1kw`;237&6;*1r@?>kRQg5DywgJVpaY#5Hr(ub^+6dNJ z?%p=SLW;=3PsQk)s))913}Va{O9-;ADJrxvz*zppNV#1qNF?{8yu2>JDT^DK#N6n1 zUK+Ps3n&}~DSUqpzPN_w!*c6HOJ%$hF)s>nN|M|4`=C};`0R>dWIgzkAxxw^ro7s2 zT^Q>a9fxDFSFLJ(T(%)bT(DvZaAlazx+MYk`7kAJ4XUv%5gFzbK>GS@rHR$%d)J~w zkuOc8(MgbYY7&CW*SL*kMwrUwnA2k26}QXtVol-l%MG(b6pgaOWd_-Sr8p5G;`Vf_ z0S&#wunW}CP#SMRi289G3S21tmHl)U<4VIvpl`3nQ%$ZVOwM{I6`$=uDxpQ1BcMbw zBsrqtL&>UippPZ9iwWdKzSs`|irtnbEC0VTk!g|7NWqiwa?e)~El9RlDn6nrr ze^mCl1>~Z$==GI)6A0{ri&Yp&Vlwd#fdQt&ypfxhNf=NPW)nXPp6B5|MaT+Z0z(ML zg%Pw)wFnm|F38H#ph4i|5kAs(P%C^jZl8iKPZ?vX{47SQkOh`&YHwSMC~mZ;8kKbz zq{$VNh)BlCWdZoc>3VRhPE@uIRF?aeaL#maYJjPxszF@|wIlVr)8VIG};PTotqL zG|(obnfhQ-#!&b8e#i9BVsQH=nuRkJ$2e+HO?L59B7>ll8x=15-r5*V=aCuY0PI&V z>%)~^Exrf{@=b{aVUu;uN$7cy=&VolQu0ssUrxv@XVwBU{ zU_0y-Q^4|-OlFfj#9Bfmu6)s^6WENzs=#x~BHKXQi$1ww{V%op;ADr#@++u=Y-s)Q zZsGPxnYQxDb-r>2Sj_W|EuRIt4-B~wC8v)*I2gTBL72}^7cO;kdED`yn6&6Nlt+i2 zJxxtZp1^o^9-*5-Uo@2-eUUWs#??plY(asGFvutXyJK;_BD$8qp*t-cSI$F~OL;F( zH-#rr#TW|qdHU3@QcNOq&q~f`;Ej|)#-ql3qqf-HC@M@9cHp+PPW zFB9X;(zy!~5j!0J5T2fX)^8{$05)`mVCpuQ|mqS6%y zw;0dev>1~%#>?kC7dKanN}R4km(>rM=Ipi#`VnL5_CpyTh+=1jY>2L z(>O%ttB0F}DrOv1k$D`ok;%33}JrLH_wwzTn95eCaBPw!nS zj^2Ig!bs+^WwP>K9oa zMW(q4np|lUG}tW!rGm*t1u330Ew%C`s+NR9n#ZMffnpN($Ts0}Bi9pH5PcHsbsz>< zF8zv$c*unCu(sZ}ex&FWQ>Zwd6+-ekiKROhdpnP!`a(2-!g){hs7A?C>264=q94UE z7{L^!L-tuouUBT;mIFo zwLD7I@I@F1XzX_If?}*$66CYQ$l^s^VX6smJNjK|^wyf2kYU$pp%#as zd|#m?suv1zut9;j1KN{M24D<>A>8I*0E-BCdAKQohz631{ak#!8so1xia+_Pls+3nzSUg2_ekIWEZY9^rpP1&UPS~ticb9D8@SZu7N^O z%{(@xN~s(dX--iq$cxMv&Y}9_@tpSQ&|u+KHjdXD4Hy*kDN3ABJPo=tXEEe>ep6K4 z#ooFMx7+|0G)GM{IBmM^9^X8jior5@U0p!TcHt>x146@i+`SOTO*zvRk=kI`a->JG zqAA6ztj$PlgNC%d85L@80?boT@m29=B*)N?1r_DRNC8-6>pnP>>H1(fR`iqwvGgpD zw|&S?wJtmjDkq`n%71!ku;*K{r$@hr^Q4+-GB4$y5?TX>_B<0L8y6(Q(I z%nd&u0$^19DXM@TJ%Y18thMC0R6qbdLf|$9c+qHq0w+ViWA-E4i~t-@FEk4ht1w-F za8hUi%HNq3;B?d|8*E0UGGRe-waV^`*4!Z_6(q$5*K0SIT4F>G6)Mf0I|X!O`cxx7 z@R$=9@pN1sa^$gCj5x&?G=1NoTR#TA0hP+4~W|%V&$- z1(vjhC<=as2r!pIxZREC3&9>EYLh%h-pOHquF?N!e=-|F9NX(ykT9~vE6IFjiJ6;6 zV)(e#^+{?Y*B?zMZ++9^*=`>kZBc1km#>c*-Q^LGSK0;iljD5qmM1syKp1Zxo4TvB z!%UuP5tgwKUi;$Z>ZLE%m9aUM^2L1Fuxssyf>~=n6s=bK;b^ql4~HqB2Iu*T=!L-; z-nI9mSi+$rpU%!l#mIU0#H}zXZhZ6k%{QH@w+I(xmi|;?OPx;)myhwqJQ(#~hs4ka zYnP)U2p6SIiN>~D%0V|z91N_frP0Usc`68QIVEO4TDdgFZkW%-y`nF`sEjdPS*ybv zV{Su|9YB>}^G$6$Rt9}`&T2=wsdPy0NUj zG*r;*-G5=}ysVY2IbXOPtP85_4_7lSK9)zQ)~(* zIe3cG?Rp}y1l8-%hJ;xmRhLDlsP~kn1*3LpRU(Q`6JvLQ>+MYh6&9bRS`3FkbH)nM z-(V_jT0{qJ4h>6q4UWpxT`aY7VCWcAbR1ON1ST1Zw@PDX@X`{SJxMuwsPo^!qP7oWJ+W}@QVRie7+stIpFn9BEtR_ z4FF#;NCqKBoJm3f$mNm)l9HZur*MbSXsyfQl6MhNt+%$e!L2FeKw=Zr0+89}fS6{j z3xP)SqP9vZOSPG_M5A<1ja>!ua${qh?^@xo5P$SdgnNEIS+AIvh|ZAQ>WM9b^kpK- z$|Rz?coG1%AooH;Ixi1RbfUXJPvn&7%>t~<5}n2D1umyVT6zs*A~afQ#LCJwnC0RP zT!MZUQb01kh{u}#(Fnaex}<)M!bDg)Quc3qK_Y#H@pMtPAQ7F!B16}6gPMnyT&Ud> z66qly;iMQsQP2eq&9Zq(Cvr#3T>#YW#>9H@A!TpA92u3?_;i>zT@h^4pd7p+l(z@qmW!uGF=>P z6==3_8alzA8Clln>B8+mT(1gdYO|kfMBXDdC7x{1YAEQQdLuSOYX-TDuo0o z=cx=`8jN0(j2v zyyin=xeu1o=301{Dtb{ZoR2^fap)%@(PBV2AGlhg+061WiI}yn%B-=eCB!eSuP39y z2vx9#QUek)b>=_OId4Xu62%tj1ky!xG|gV+3fR%2Ba&7R0-ib#A68h1^!N;hB5!>d z#Kw{E1s#>y|5YN`F*?NdJWtqA8WPJCaCmg93rb>nou{cZsEJYaioWWTGSC={adC#2 zy$S6E2r~`O{v_i>)X^tEQVV_FlPJP8)CP&QYHMtA)3;k65Nh2mES`rj3n1J9mmlM|6$QQLse>gZ73NfqOz5W!=x;bvmpU1@>nGqN)Bofogkly`QQikI%!zA zgiXM4EFdkWnB1%;FqTU(X3TqkN~f?3fdmi*C@=xj=ju7I^4}a-+;WI|(;jC^(@{O% zLCd9{05C%!LC|i-xgZv>>~mvwAE}UjS*4BJ3h(CQ3*Lx z-iJn;Q?n*P?9vpR{#h7~E7;enJs!WZIP^mnRPK2BP4ko%P$#Ho8USE{7zgV!3}P&sb4XS%GlB2U_>@;K2?dzakIB3GMsQem4<`Zt{6*| z1+P0#L6qu49^vV;%-lrOIU!R`o~FqewiUO+^Lz>NfYX}dQ zr&DyYn!s>QxCB^#aEB&|Yaz%Uaj(s#l0GtP^H@^o3XwPItdg*Ly8P#~gRFv$3d;!Y zH~~RV`mpSgkime$Q3qy<9#bTQF104b-*wc)!bDEyE>u*m$Do!BAWnOOpg6{OCO3#| zS7-302#fQh5f(g-X9VhE)BwtbGP<@!GzVoBSJ9B_^wzB#I*By|JCy8CI#U8r6G4Bg zL7X=lH5&G)i!Qh}XAp+biIWe!4k0_#Aqm6&oQzh&K`F9}3Db6G)Kl#5$I+a7YW+`H}|5BZo7c zg^M~rI`D;4sd4jSS7}vX8pTl*2(b<-g0;u6+%(2@b{=YFplk|Rc|7w1d(vkjd9+pC zDg;f7RaPxiB~tevd&Fn8E(i!y90N`VL>|KNpK>4g=o3_VUO;36|aP6^@)?Ec7Lj&oiz zo4n~E{6~>viOAXEmdXlopm7HCLDbu#xa*-YkHy-K!Yh=mDOjQ64?|g``=VbK8TUgd zo3RC~8L>({U`vh?AmmKEEMez(%p<&m4dW}gg%aEf@1s0b&`}CmB8pBEQB~|46L5OM zOkM;?R!-&Q^L2hYBv&6{L z!RdLL4!*98#1k%%=}VG|d&n;_=53B@ zWHq^PSDn}3GM2lokYW_MQTt@xjg2G>v4(SRqhE9J^qhY#qq2{nbHo>m2j~EyLAd?J z=a4tnmRp+4tvINZ;2MrEJ$=?jUFaM~nZzdEb0GET2co_1-sg>%L|O>9ZY~I`zgP!K zm=3l1NKhiqKcNS(cXH(rNpLw%)S6p}`h1ev?>#`tK!z9_p(`W6uzRD|sI8f#`l%f- z0K3n{Mdh=wHkAI;=`O*zd0zg45L(ChqC|MN%l&3t+(fHyI>ro3@RMR_L)l1M8*C=k%&v z%bwxlV)a(!Us3(?(orUm1WdxA#>yi&PdtFVk^(>mhofI1E>;D&8z3H5sQdQu8g#{y z&Ytl*n-*Vi>J6Vvf;8k@(yf?o0jMe_yX4?%>f$oiG%*uw^4d0n9T9~CUof_E)YN>A zNx^9dzTlXmka3bPJ!;7zh#t>~(iDC00Z?C7+JTuaUOJ`rKF#39K0c>UvNE(pK(m{H zvYm30va93h^g4Sw1tJYc5waxqBdv5EMAs*n&~QSJg+UJ8QqrXsylkgIoPucxFCQgi z>;QT%KvO{L3{gG_7F%d`N{{RkGCdWpQUcr} zxJMm>M0B3^UXTUwdCu-xp<-7!CvejHK0*wX6GFwwHFA{gOC>v^scalgc3Ku$2wZVV&?5B6hdKU?vDz3vja%WS@Y;~=R!})O~$JUoOY^Y zE!wvg2(S`caz-u^Qv(NI171T*1VVxjn{}Hf(u)Wmbvvj4U{9HftAOBX6F&YTj4D5W zB)BE=2~XuC90ng*b|m1e)ixwcp~ulEM6lCiS+3zhzvc=pD89yoja#Ft;>Z9+I7`Dg zwBi@8rwMsSuc7%BUrBs`vVjLEctpTyF~duC=;0e14uXovn?FIXCnL-rZE#)-Z5Trw zP4YOY3eG>03%i4-B8kXV15SnZc@huDjh7iec@QcmA0qaEy32%j0g@Zb@h%Z{lDE#` z6FzJk>Z;nHKtR6`Ff#KbqWLCp7M*Z0iRpS8x6MBQene)?tkG0%JuX^&A>|JZEf{A2Hkg7zxYxQHs_7IT7 z#S($kllG-54sY;2O<)cAB9w2L-kVvgIF}@-OkUk)C^HwZsCX{E^QzN8^%j>DAV{?*`=YYxUE4i-1 zivpp*qEo+^#tq#B2@W%DJry9r(nwIVy?QY!`6upBxu^xEW1u3v0QB%BLDe=$P(Obl zK?q)W(~|4k0COliA0SG>N8K*5ho`qz#m$)sghsy2oz}=d0gB`W?(Vsqp=y&loaU=*5&-Cu5J-bfGk6t8bx?>f!J78cJoMIyhpkL zb?XopY7|VwcN`iD^D%Mbu!v2g!mS}ic>*^r@G)0NCmpG7j&$@b%nr05N&J(+B+#~b z2hx6Yv8tuEeJj!(gjaRjY2 z63{ZH5tI{>+S_5^ECbU67!n{$z2QU$BX7IR6sNV>6amPBf;(KPVj?PcW5`Y)VnRtnN4tWSz<3Mm2lp6&VF|lmwd_74# z7wavqJ?p}?jzQTB#F9RarA1j7>705&2z+D=uQliznJg7@&U{;s$=u>}D?ppTG|(-E zK$leY6dm*0U$?-hDu($Gmhj4#gG^T>Q6&{CqY}wWE>DJ{xS9BPd4-=FlEs1~M;?jqUIRKxrwht`IfxxR-oyNqXOd~673 z&3et#$jF&Jm96LvZ(8jn5mAfv4(S@1@TM*l{B*$x6 z)u(8_%JXzYyPQ^gyp6Bp@_t)^I)I$8I`0&E`hU`lK$xU)V z#lc+17HWciwllxXTX`hqRv-ZtPPhTkC#95Q&yqZh#bjafUkpaIs1Re~5F6{PA3t9m!$J!%HPv-rHVW{u z+Ic=~fEx@u=SJm94#drs3(s^a31U$Lnvr@Q%h5!Sx7{pGBt#v-yeeXU5XwGPdAQY< z{>U7(qku8nlq>;;RgYO&gg=&L5t)St#sz;VSt4Z{#W<-GKBR45l8|?5p)GtM>Yx1t zFm-hLG$aA@_T&MUGEoj-9}+WQAH#l$4<)X02?tnaZ3l!KwG=f5>j8MLO~FjgR;#v< z-krn6JSTv;GLxSo2^h7hZ2Q9I8^Z#c}5V z*IAHb0KP<%@oHO!h$4Nsm$S$`s1NK;Vt>I&$3H7n)IE-D;HdRk#aHb!~K;7%O z449104vOJkFhfHY_Ea=7-g;{V#dN4BwmFC-Nr+BG@^UW2K&fX3xznK|vw*-8?H+jT z2Ca1`=#RZx3H`#OgEE&S5PI&1mU@sc5`>&LVE*Iq6ASAh&r=D8;d%zxk$2*i22L@7 z^kOpdU}derwBxuBgjR5Vg%KJEbLxgPjx3K^(pP2JfzY?BP`HFdl*DziC-i>-&848m zPQDe&W8(I)dJV3=1F5$`3?RoLI06r-dM=No8p}LQ*eBxBq16ulq zCQ!{LE?u%oWnUCKkB~wp6^1`etGvBQWB6S0X(eCC$u)X1?o`|L^>jkX@L1g7(Gg1a zWRrMB5pofyBAB({d0mgBq z0+cAV3*hi8(XLP<32u&o2$jTyPQ@t}q5TlmQef?vi52Rcl0Hz6FNhUv$X&h3 z85`WtTM~JkfP+^nQ46pbOmE1@jg6^?dN@;bH|8<1(nMMsFY#K!<}ME%_%&20xhl*JtD%<41N_uTtz`yko0SNQ9=nkPnQ?a-_!y$HgM?V zM_F~sCaA)#o2p+!{?=H?yxQp$aoBK`+_H2}hlcVqhiLPho|=OBSi_#0_-PTUT{mV) z4a&~YG~L@m+_57bQ{YnRY=U%RZjl4hp!2h20`f;zl1SXECXvTsp<=!YLkd}zy3_*@ z(^5^}Mcb;5p#oO(k*jUbz>N3E_QgAIkI+$Njk2&rM`cl|2Bgy>6}CVw?U1NYIDwmv zKv5`~q$nKkG5vQ62MMa?B*jJ|*DyR#bT<9TGBtFIQ@5K!2Z+JoWdHyy^AVZRcQxV0D!6$1*7R&O~d+p+9JI6fZ_@o zA9*roP_%ajQX=d%VuP4Px8?xP-sHeM5Mj97#;-V}O9NEj1G+WLD4*R5?`vFcR&R?# z3oEC{rpH&Ybt&x%Zxeh$;!%s^0zHQUGku_YxEX?|{!|zRcYYYF@X@@cGb3+}=-q&Z z#TBUrO=^=&*XEnr%hc6Gxc9e)_F1TE(A+3XpMs1f{Gq!A@ZrA+b8cYM6esS9(EY-B#Q}C{A zQ1)3K>Q<>bE7Z(#b3nn#KIS>pF&M?7($hG@m<@(WHy*|3seMq3kmid}=u)?EbPndq z14SCPSOCb#TfRm}Y{&B9@^KqK&J};cjX6#MKT1P>`x6D0VD-uR*;2A`9%mK+4=Pb55DBvo1o6SEvap#A+~8PNs)- zD?B(eKdTv=N^zcTR}*$Ai63&5tR$di%Td6`G1X1^?rAe1roxFf{mo3tG!G>$M&0iD zWR?4Di{R2`Wm9^ZPbaatl|?ZXDwzdy0TzH~{QWIE$?1e)#>}YHuD4!o!QqpBq{#OS z>|#aW6aZL5h*tFYp&7_nl#$_qDr=noz-KbA{zS~l zI|`R1A-2rNw$e^?7L--+xQY!LPx{Rk!1qb`JgDX%AH5PR=3cvv?`I__mIGFH1(EE9 zcmZzMcvk?=AyO7+seP+52?5mub$rXT0;eIK?gSVklj=Dpf$-aK)-6ndVMDNSaE>ON z%>!6N0y&#cE5n)i6smMYGVZNYWPXV`z5i}%+N$qIL?_AZ}FT zWxfT4*PmXo3|Bg2(U;z z`oqGqIBnoqA3Kxk#VG0>Rcf`eJCyUCAYpBJnUe#P6nr*K6aeDim`At(VrSatYGv?T zSodESBNa8Yu%cnT?;ef7;myt!oa?k?uGVonD$gf;%^e#X!e>?n`0uIZ3 z@$X*ZTMRd0@-W|`I>@-IgRsoC;1VU_R#S&UC*lz7Vz4dkb$pDBueI)Q$xKw+<}jo> zW8MQI9FOQlAZyZh3TD+hr@H3*9-Ahldxg2s0zO%ZQ?N=$a4*voyp67@hKB62gekG| ztMQpiTgc3fQs;PO9UeMYle>T_{R!mo8G8>vw+jTwiI%ceDWt_K&4c^(1f{IQo6+fs zS^bpAK^UebJdx&DVmPPjtdHAt*r%r&Ea+tBV@|Ea`?w^+4gm?UzLH4Ngv448T&anK zXf&ZrR5HLYQ~Bu30CH95wTm`}+p> zZXS@lDvtw*Ra0|4%WSF1{b%OmDU?J?GR%iPscN;}PT9!*Nk2|z@lj7FoUzuzi-`?t3 zG4jK$0JK~_tTRp^%td(+dfI>AUgv_a;uILN5T5p>K-L6U%^`p33tE?o=3jCV?Y>5J z6L<1<0)h9{J`KLjEoMGgOB8T4^nUfS{!g{^4waLdK%;?90w6uNBE}NWV{YYP5vbXq}GTJb%sZB zpK5TZLIiAnfwj!tQPuQ&~(?jh(RhRZ@_m1_$bZ-w zla-D6l{1Xhe25GI#vd%XNqZULid<6yR9?u#BjhDcYG^+M!R(fpj9Or*#DS{GZXrO? zy~+-kfrY4SCqfLZpIEr#wG;A_7S4C^#!aGuZ$;&ZxL)ZAd?fT1cj+hV%iHh9S~ufIVOjq-6iDv||@#XSr}0av!Gv z{A}=FMC&-SBb2iBlVZ`?&Zbi0vz_pi0diF$!m{y3!0s)hmJ6h=S|krU9dbaO!JIU# z2%eWQe3Eirs_;13(|v44_dLE)NVL$SlT+8;Klx1)xUTMy^J#-E` zauQ@zj)G_xhKfUz;qb{kWr%QkX`e@gELB>;2wc3tubF=52E2o$OKr8lyNH%z_SoJ z#gI)w(zR(&(pgzZhg~A=!9Jw#gObL>JBkwOV{q_yy?Wx8OckMVG=jP~4^3;~Ja`5y zNu1%)Wu~UbJr#O2#7*C*NcOkvsc>Z-Q5I1!-}6{LK+e4yp5u z0pThPcnuT2Fe)S-fbWW?0sNY18p3ag3Iy{?+|xmFK1o%EeEA7t9IYAf!UB3$N{p}? z6YAsbUWk;bJ!&WdLuxN^u)^fi9I4fkEP^44#UyuR5CCf-4&L``_*2G= z;$P9$z<7+>O|E!u?r0ddc8wyn24DltJnW{yn#L_GJkceO~Q zHa z9-^6oG@Hzf(@X%ICMf``=3Hr{5an~pbW_a^P9+!tQ{zi!{Gd068|9p$b+-nkqPk9o z#Pb8zlSb{8kBP!V@(7NJpLPn?)u)nqW>NrUB9Fj30Df+o-f%F3M{ATlD|LuRwu+;mb}^cODw> z5VNIIHN^Be$dq&V4#u#GEASZKEkb__{S5ALlM&9lgu*D`*zgDR!Ic!5IJ@|lSiIG5 z_{$VWjUrsoHQdE98=Mx(fxMea2f(^!7w894>s93`+EzZi6BZ*;5T>5iq*2bEJ`Ls6 zqg6lx>h7WD@hL*}ug`vE^Hoet=(&>woCBK@;BuP$yH9e-{~{zQtN|NFD3M(h)zgD7 z*m)6H&HIZn@^P3V6qlkp%1vNpktX84WHlS36>tKpOBy>Qj!g-$Ph?_eA&Sy>5&>BQ zp8MpT0!8EmN=mWqCIR-PBw*am8sHk>!n{vfY9(-<9w*X7*Gjo40tx_G8NSmm@YBt_ z{^=yhIZouF2@pp<18Srxm`E6ICRG*&&Bxhf&Zset3C#>hX9ADYiB`A?qFSy5=5(_H zW57TORdN~-2b^OMoY!!vfQg7w>MPh#8J0D0A0&(bVbjx)SETT^mfTC(p@c6Hm*H3g zJf9}M^G)*`;^u!bMh3uMYH#3hqa zDT&xp1Sh={kCBXDGNnYQ_2H2AMKYzTRLE()V5un+PRueGH?J(IJ11GPZaSWD$0seA zhXpAPwd(m$ldu{%^P57J-E1?KA`?`!gvcQ%M028`*2##a2j%QwB9Hc63X(f}%X$!V zSun2jv0Re(L9wjK7&4z+_7tS+i>&oaCBxz@;#>;|B#X~Vb5gfL1ehlqS%@P7qfm%z z6qQ0sh-9fQBw-e|DAry$wI%EAP465KreEo-%p}j@%XM-rvXL-DkboB?3XoHM3ZnP5 zDUj+{C-4+V2Q(yC44oyW5_GZveA=Sbp->W%s>h)eh*D_^;B?+8plTJlfKycE)z_TWL#$TdDyl=Ibody2@!`dluu(S;QQpKNpR+^ELNayj7=Se)d+_LWi`O{)$Fsw#Nj3MlhG zn1FCd8D5r#7nt0g1Y_30W< z6jtOOHnk$LXimg)MtKpB>$`F;yFtK(v>Z(sS6L)1x z*RMr`%i#7yvZo3z5q0830)(v#sS^O!$lV7DEAx@A+$Jbj@IZd1Ozvbo1cG-P+Ubtg zpuFxvw3ty#2D1<^|vR=9^2y&(3?ZHR;X}V|RvFSjH5= zxGe`9x&Q;T3~TTN5QE9HuWXJrm!0jN_A z8m&CaZ2jDEwF)Z)P9N|-+%&pRmca;b71q@_5%jwAE2sFm(ty*K1_cQ6Lz9gIHD>|M zb^?T*nTDX#(f~hKMRpHKwM)imgGUd90U>62X;4|FF1OkQ9i1bI!6HfkI}aIP38dn- zA_D<;O5Z(V3mBqoBl&xPu#IU5mu|qz4R44-$HQG}Os-`E*o^{jqXJZSNIK`zqgKF} z4Vf3Y1BOGRO*U~YpnP9Xal;T9Bp_*`9%4MCgcwE*7mp#%UP#|w7JigFs)PUXv)yjy z!I}yxAU?_MB;j(!63B3f?!kbnjp3}R8MXejwzn=G`Yd?FzvP)7-i0J@DJ2Z5r@1+j+% zuo$o56~2V@>V^UYHF|KPmKG=`l)arENWb8qH?hKLL4Po+O*5HenWLtayEHD2#|FFOW zR!xN2+qx+Vs;+mJ35b0EXbE?<;6j>wEd-g`R5ohxE17V>@=#~QmY8xvy#n=_1ZKck zAy~Mu`6QPp%Yleh!2|sym<1Jp-RU8rn9_A5>rpbSdTCgq>%4Picd;Pswi0IUE)3qX ztlBE9Z?ha0BG}94IYMH}Z?VR(UIk#r;0Xvi$00HJxE2?W z@mfZYRZ=D*0M;Gl%0X5DazIT%q#x1Nbr{ShDRFPZshNT`k_1qhH*pVUJ+u__QjD`p zUR^`r(wNOPJ^8sSbU~?%TSKJliP&8>k%@+2 zZYgs>x%!ij8!3@Dg>+pS(ldJ{n(QIFg%+xAnh<9!J+V=R5kIuT>k((B+K!OPum|*s zsH%)3IsIB#4!#!VH?Lafdh2StGL6mH;%pKu1`?3+O288A2FVi0A6&4q&s$rQxFRKEC)nI4{N%b2L=SXi{fD9PJFqx=b#Ue9{zO%_P9MXCO|MoCU9>GhKJ} zX2r~c4ojWSQ1qPcV6y!_(5l1!jSlxx}__TRv`{ zQbcl*g*l@aNm!5W<(tn&-ll*;K5bD%AZmcVSXN6Y(#7%$%oo8umutrZOi_^pX*YQa z@p&!!N3;~Z?GaRG_(;W3@DdJ$RqP6Qc)}nwp!~yg3>w8R^U1-Td1+u3Ohaui#rKOa zzhqoT+Dnc4B?eU)!zj}xjdMF;aOUZj}S{7F5~ZB3RWHa`RnklzR3SVTubB`5vz{D_C-}tLr0ku0=w~!lH-UMg#Ro0++AdG06lAt}99BXeC~FJa zc~i6G3FOU;wT9xouaPN-@+tU8BvXAScP7o3heWzS+oTFy!46O+6K#X#%CZ)j9z4Qf z3Do=?#2p4BI59zf%5cqI4{_8`4dW<_H+d3~S*{*j+6kRN3alDf9(Wxg7Z`W!MVNut zaP0?yOeHCO4~Qxb@qE|j3TFduK(QlA2J#O`;%jru1ZHJ zNBJ~Jg%oh^G#J8Tgtby)_2=Vcj4xtRme$VIm-_Z_oL8oo)(fcPja147O@n2Llf zAVaL>&DJttcMp|AV4d?|mV?jq>bX3qv0I|GL?-jlPC6&bAnoO02KoT*HpAK1cfHo0 z6Es6lB_1t|$vX?s_8qPQOps7BIapyL7q#hoI16_@ks%Myd@~46DAXBDD}%7-5m_kowT%pHa+!zX3=phIUl3*CW|97Y z${!i5m##AKnM!*Z;+&blwd5`=L*iyCWU&m!cZt{BW(mZoHuKG4oCowhQihm%1t`8V zP+sTdp-W&$d8pMikFaN2c?2LCMSG@r9BEThQiSuIoLEp6WyIV*9WB+X=dy{odLSCo zIan422|80kV&lnR&=vddqkP5#QU({i^ob*ybfqPMQ~)R8G^&w~wneQ%kw0Z4Q>dtx zMTJwcGv%|m7GM#(V3(5(#40NBv6~@(3J@s(^!$9;a4xZWI%i=ySW$sL|jJcSFhq!yx9lFRWqiSU?i$Khy6!aDL zk}1H~U9klq7-YB>v9&gR1CR&eu?zT+F**_x$OTD@OFT+N*25u2LsK~5z(U9K!2s6m z`F=Qy;Q;A}-LjaPFQTgFFg+0CfXrJFi!fu%SBo*T5Hm9-%;b;~Z_X_OI{ON$KkI{X zNUu|j#y<1TYZil;!EFK}h^1BnasltO(J`zVR;24A3;JnHK165M#Oqv6LMSDxIO>TA z(vf#r;m$|4OlDygzJ?MZo8DCtaac@>IA$RGK(LrVsvb=1;;wc0iZ%&1dURV7>YavI zuFhGAi<-*}i^3NbwjYbIj${^iQAfvXYy?55W(EqOm2$b!=COyH}PcGMN~W*;-R!9Y}vK<0c4I&rPqv<7v0v*mjGiR*O3*eQuB zP1zu_cy2XgvkEY46xJ`EZ!{;~ApTKG3+S zoQBTYmYaU>t2>LSX3_~{iz&o-`QI%Z2DA>7h0fwO(^1em30kyB=DNG%MVwV*qZ6P`9%KWbA(ZK!NLY5) z#K;#DU!Q!4e+-yXqfff@q#;3>Om*c+ki}J>%rB`xw6gO6ZmjfRAXT*EfQXMS4A&fb z9I&1JqKmQt@IdLJ-2@dnoX2mLNvcG2Mx1XuBuB!9YaniDPpKzf%mGOqVr&nf@hTkH z^3@==CZWi}aJ8HTLDa>Yhb**a-yg~3iIN08r`}TRF&SQX|dcQxlb}^giY5Fhg(CU zQVD33ztsA_?7e@Cp4WBXdEXh5GbF{KW*A0QL|SBIg;Hb=B~ywdTeLgkFHKE~G>42L z$XaGJGo&WsFVB!BS()1zO0uQ2L1Pp_*9fv(V{3GcO@IxMVz=lPr~wyffeqjQDK^16 zXah8V1lytsHU(O23heiD&OOh)&-=bZ&X9C>|5(eM_j&HmbI(2Z{JQ7fC%0RQ_NIp5 z_A)0f${A{w606JMrWBb_Wc?Pnyu8@{M53I&6}hY8ii%RK5Wu?WoR(PzEsw zDbU7C)TjngqB>aoks$?3_Fay6h{R}P#box2qcHF`L1~%zv1GI>WMgUk3|LX^f-7Xv zq6c&3D<|8vR>-nie$`Z0`R+t7={HVw7wt}^Yy)PyaGzvK+s;{^JSOo@c|I%)&Mf`V zAor4#lu35sIovMvzB#YJ^6DM7#wnI6$zwj4@hY+3LB}e)u_~*y5Xf09@h$cON29^T z@ykVhok6>V^E2ZCu7Yb`xkE7>ATu$1a(aH@mD76r%xQc7!Wa0?!;i1443bOJ&*Zmq zv~D~uhqzZb5J=+@=8$ipEX~`lT~5u2y~%8k$BX0O-cVp&yVAZmj`vckeE6R8R_y&D z*O7LQZ5VV}?F+J99PdhK2=N{}=|gaZ^kqaY++0P&6$N)qgj+ckaUPdt+AL1vk8_iC zhfUsLKEu~HXLjC>V{^c&G*y=r&{d8u6Y5E5dJ*kqgyz#8nIp?FVj+Cf7u?cRGR&z@ zvc!g~YJKt+dRxh1xs9w*!)MVfu2`^2KH8_m35`)VoaT}EuG3=1PXlQy6>wV#xtUg403xcIzS+tN zSbB4)V;keWSyWmfYk^zLduz~G!z|qMxhU&5*hi$;#<(fjoDYiByzVVrFVc?kVLt-3 zoqpfoVE!Ar$;;`sdOdr+WT}$L+H>bid}P7RNDTx6?o?nb;2!a>k_ zR@0=FrnB$P&+5kGDun`YbCH>cgjab0>AR%Voi2}OwPWLfU}T7p+vZcr;zo$(Lu3mj z{k+JiD9gAp{9e#1OXNKV@JPLU?yX9vx=fD?*JcTL&byI@+}>2m z=Go~g+negHA|1@?&5~!JH&L-Ey@^vSY4hq;{mC)Vo7ih?aIfy<#f#Up4~Iv;8Jchf z3agaH>Ev;A?!#}&yHwAJ(~4qeRO{I=CTgwP>01(nXU|>w@MK>7jDL;XDa}b#n6S}s-6SW zQ{i$QEJ+I*QdKLHW_Bc289+Rt`4vj4)U(q)Nfb29RmDil$nVao=A}F9_?)ho?@nyb zPSuC7)?LDQT?HbPEDk4>H@VNF&ZW7zS>WhB>A@ZT*#`Ap zD~0IHO<%gEqu#n_$F57s>D2`)IYk(<+c?pPUHkz3Vm`f@KhxIAVG49jU@Hw8=uWf4 zl=^Z&tDw4T2@mf~ss2FQIu@k7noW5>nJE#0b5}H%IR!bj^$sdoi?<%yevczthe@9=9^O8q(yA(EQ^X3mA zKy$BoU}7(^VPb-_C#^Xw>y!QJ<*N#nu+y_%p_M?ZsGC)O{aSJ;sEcf>a^+1B=X6R* zI`{^kV%<0(>%I1--smZ3eaOaK)O{tog>8<*#oA!N>_l6>DUQP#DSt`i#`AMyMcTNY7FE1Rr#%J<0)!vE-(7g_B z0m$00i0&Jy4*Y&1j;1Om zWVRC<;OxX+Pj&-m|7=82yS;hWp6vX)+gABehJyl&j7B(c29e|(!*sJOeSp;~AXKk! z%wO97Sp6)tlo77jDXrbzU*?@7}D- zF%oCwzS$w`)liskpIaaFS*GpD_*C%TZGs*^+ zxnw@^YDv@JPjnz?`hCX~183zt)eALgrRoxnD>Q8O+Vm`ZhoS4N=evuhx%g8Uvz9Dx zsa(+%c;ySvpFOM3!ux8lU}BR>?lQ9Djc2YZuv|gL_*nfxrx10?prxHUa&Z64Fa6x9 zImKXnO*gvfyzXLB;%E22+?z_AX>Ag^VY2codeuO z&DdAXn}S#PVnD-iBr)=JwDkrev60oelvhrFVcdcvbJLn@wXm3-czk=*5~RX$px<9i z5aef8mK0BDS3u`P>5}aP(Lg&PFUVXz+-oY6Q!X@5(SdiZ89||y=%-Upqc?x@{es++ z%H-t!-$WDo=5>nDzicL?HHSdX5Gr*>A9r5V=c%)k>(B+g>4FMYLL4q84B4?ZwTO$s zKI!E=wVhDsy7$rPRUybCo%-V;VmCM?q(5GEri#PmbzP|x=~7UeXDyz*Q^4GKJrs)U z*${seL8z@vS^XtR^K~V8951OXAy5;SxK&D@a#s}5qP~ndE$eb&TBn>mWYw38sUtpG zS52CZ!gJer2%8*2g|$(n(~A&zZ+_X!y>lkYb5*-b&!}=(L)B|p5mlnt@51H9D}Hfv zl`fjSrmHaH;tTj#*S+33prgCY3dwCYze1tXR&RlPML;RiS8N@2(N~qq^RIx>uL`Z^ zoY(o;_N0gkuU(j~zTmOwA1LDpKwU>P7hYmbA!HmMXfPpwycQ<;lm%kAl_%Y%`VMnD z`>#pmTOb^IeB#oj%YNIuFRhmK!G-BiVcb8T$*;CydW*!x677nx6)8EUdMa|?5VF`O zEhDc`j)Nt>q4u)(&%x+QQtUR@We7{>@|DopXDh8jW~95y?I+hFt#rH)NzR{)Uqq701=~@G z6p>5oUDECHbt!Vffw+`hm43&h?Imp~mf zA7-gEtw2e;V9>6lFX;<*7jNGzYrK>^J8j{FKp@|^g?Z#lR8Sjc@)}Zv6PlM955|P! z@uI}+x%piCFq#X|Q0!!iw&0U~{esvM5$V#hbyIC5Wf>l?!C>Ou7k|8=Z^yH86et;Q zTAlg2hDa$QK2oN195kNeEW`zEwgKd#t|q;3GjeT;YWAc;a6x` zQ%cyqpbJL8ta@N2IH%(c`YUf|;oIfapG0{jX$tNJlc#b&;H>>FfQwh7)RlR0QxOs+ zVWDYOxRnULbXdX8S`(5~^mUf|5K;Q7w5~-RCAA|M>pUmr7B%C3rD0CCvn}G_7sV#5 z6B^Weyn>wS)y*Yo#2Cp{I=d8eb%HH{?6IoToy@D6Ic%v)xtRAi3lNjuEo-kT2c&&7 zfVpqRjKu(SHPPjgta2B$7q6?$RxSVpTB0i#F#fP|_Qke0wCY+Kd|ag-GvOoRYCDTP zvOU>?qQf`jF}gapQns9=`rLfgLD*icLzTvGT7~$kWdNYZX4AqKT$PDS8&Pxma<=Sy zN{HHZ=^yd?;gPm8ZB-jS!j*DoJ!HQse-uGC%dOfCjHW)9?;6XiVV`7;A)LKZin8G( zm$#qll<75hLr#h2)z-BLu2~cDtj_FaxF(}MYUj+Pog&4yIf|z>d@i@?a#a^(`6-ty z?u|etD6`BjuV-iH?Q%V7q?eUzgcUv%Ptup)bS}X>KUiWrc4T~Sa?ziq_w)VUoBno8lx~+(`Gx#%a}LZ997zA`0A1sZqHuvX?p9ii1-o_t1T zF=@y0(ERy%J<(#eu6@Ru7qNbK(x6DY{cVJ3ymfwNB7b>BAyLhfrpR{Sg+r-iYCS&U zifn5VZrL@`RiulLRnn|tu+~UlKL_cc|=_T)SBnAJes5nrl8@D)k$Ut!2%p77Ej6` zFsNJa#6#vhcDZs5aY#L4jKeH*sy5{GNr%N`pJK47YFzNfX%9``^y+dj%5~RoVcXmQQoEa>#z2*PBuCm;_aR3X* zXtYYsFU(}+F%`QoSIB&ctqnionbT3m@}sC(R+WyNTR30T%l_Ud!yVoE*`duZB?u!Y z__=C}@%J^J(=8=GYo4w*Ur%+99jZglb?X?bJ&G$jDnE)B$_bZWbkEJ~<%<&K=2p&$ zM^umV;dPpQPUh5QMS$0-=HagsLQ{-xB@z8|Ksg~4+59ROmG*U}ujg0)kXe4YYD&0_ zBRjzD7t6)7MxaAvo^f8Za|TD-g_{tpCu(Zj31(>I%(IJL=qx(%1$|-wWxl1^$7(2C zYOy(9tMg*xri~b#pE!3;#EVvfI6(U1@NQDC+{6QuU$aWh-JF=B_D{ zK_OEP&-4vBxaDe)6 z-xxCBIDjdKDsbX{)6WT+`TCi^qzF*`$`ufoUC4I18kZzwv*0P_wk^k zNI5!p_2&sP)5N*Y%Xxiyoz2NK`I;zJhHF-iJi9P88jd7gCSzP*8$prez)KrCmv5Ah z3~L*eH4-l2u*jn!z4%*_TqThsLYkCo0_S8TNi(q+mhN=xp>K{FaXPJ=kqqb#d5s=a z-n|8Nc_oGdRwvu+$@`$*vqM@JqnOh&S~Iw!H*+RNPTW%0H*+S#*Q#+`pZ+|3IqD08 ziZYBh>nCU+tT%VSnc5ZQ7C1i;FIK4pm_)Mt=J_Krk#f#m-0^DleD<5RTm@)et0GY= z2qxY$EAVzA(VL04E7J>FTk(c(Q`o|b7D+Y%GVd3fluUzlk}-@$Q|F`JT&6vR<4OOF z^{i!<-xiIl#GCZ=suc1fR(w3qVty|Fqy7pF+GTlK{$xjEO*<2DmlD|CTL zM#+DXPRpiweTB*zAyA;_8f%!dz}MNzcb=@V%@$Jc2vOV=f--(@oz$v*cEyj&i)rG> zuEuEr(=)@>lK6jdmhS-y&GbFgTGeddL%S^`-xacY*6YqHE~F6d&z=q5({E

}Pxn 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

@~7<1C)M>Dvg5YJ&L*?O4C#Q+7N{azODVGFS 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 QI1gVqz|)44|6LIHe~@Ph&Hw-a literal 0 HcmV?d00001 diff --git a/packages/NLog.4.7.2/lib/netstandard1.5/NLog.xml b/packages/NLog.4.7.2/lib/netstandard1.5/NLog.xml new file mode 100644 index 0000000..745cda7 --- /dev/null +++ b/packages/NLog.4.7.2/lib/netstandard1.5/NLog.xml @@ -0,0 +1,26729 @@ + + + + NLog + + + +

+ Indicates that the value of the marked element could be null sometimes, + so the check for null is necessary before its usage. + + + [CanBeNull] object Test() => null; + + void UseTest() { + var p = Test(); + var s = p.ToString(); // Warning: Possible 'System.NullReferenceException' + } + + + + + Indicates that the value of the marked element could never be null. + + + [NotNull] object Foo() { + return null; // Warning: Possible 'null' assignment + } + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can never be null. + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can be null. + + + + + Indicates that the marked method builds string by format pattern and (optional) arguments. + Parameter, which contains format string, should be given in constructor. The format string + should be in -like form. + + + [StringFormatMethod("message")] + void ShowError(string message, params object[] args) { /* do something */ } + + void Foo() { + ShowError("Failed: {0}"); // Warning: Non-existing argument in format string + } + + + + + Specifies which parameter of an annotated method should be treated as format-string + + + + + For a parameter that is expected to be one of the limited set of values. + Specify fields of which type should be used as values for this parameter. + + + + + Indicates that the function argument should be string literal and match one + of the parameters of the caller function. For example, ReSharper annotates + the parameter of . + + + void Foo(string param) { + if (param == null) + throw new ArgumentNullException("par"); // Warning: Cannot resolve symbol + } + + + + + Indicates that the method is contained in a type that implements + System.ComponentModel.INotifyPropertyChanged interface and this method + is used to notify that some property value changed. + + + The method should be non-static and conform to one of the supported signatures: + + NotifyChanged(string) + NotifyChanged(params string[]) + NotifyChanged{T}(Expression{Func{T}}) + NotifyChanged{T,U}(Expression{Func{T,U}}) + SetProperty{T}(ref T, T, string) + + + + public class Foo : INotifyPropertyChanged { + public event PropertyChangedEventHandler PropertyChanged; + + [NotifyPropertyChangedInvocator] + protected virtual void NotifyChanged(string propertyName) { ... } + + string _name; + + public string Name { + get { return _name; } + set { _name = value; NotifyChanged("LastName"); /* Warning */ } + } + } + + Examples of generated notifications: + + NotifyChanged("Property") + NotifyChanged(() => Property) + NotifyChanged((VM x) => x.Property) + SetProperty(ref myField, value, "Property") + + + + + + Describes dependency between method input and output. + + +

Function Definition Table syntax:

+ + FDT ::= FDTRow [;FDTRow]* + FDTRow ::= Input => Output | Output <= Input + Input ::= ParameterName: Value [, Input]* + Output ::= [ParameterName: Value]* {halt|stop|void|nothing|Value} + Value ::= true | false | null | notnull | canbenull + + If method has single input parameter, it's name could be omitted.
+ Using halt (or void/nothing, which is the same) for method output + means that the methods doesn't return normally (throws or terminates the process).
+ Value canbenull is only applicable for output parameters.
+ You can use multiple [ContractAnnotation] for each FDT row, or use single attribute + with rows separated by semicolon. There is no notion of order rows, all rows are checked + for applicability and applied per each program state tracked by R# analysis.
+
+ + + [ContractAnnotation("=> halt")] + public void TerminationMethod() + + + [ContractAnnotation("halt <= condition: false")] + public void Assert(bool condition, string text) // regular assertion method + + + [ContractAnnotation("s:null => true")] + public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty() + + + // A method that returns null if the parameter is null, + // and not null if the parameter is not null + [ContractAnnotation("null => null; notnull => notnull")] + public object Transform(object data) + + + [ContractAnnotation("=> true, result: notnull; => false, result: null")] + public bool TryParse(string s, out Person result) + + +
+ + + Indicates that marked element should be localized or not. + + + [LocalizationRequiredAttribute(true)] + class Foo { + string str = "my string"; // Warning: Localizable string + } + + + + + Indicates that the value of the marked type (or its derivatives) + cannot be compared using '==' or '!=' operators and Equals() + should be used instead. However, using '==' or '!=' for comparison + with null is always permitted. + + + [CannotApplyEqualityOperator] + class NoEquality { } + + class UsesNoEquality { + void Test() { + var ca1 = new NoEquality(); + var ca2 = new NoEquality(); + if (ca1 != null) { // OK + bool condition = ca1 == ca2; // Warning + } + } + } + + + + + When applied to a target attribute, specifies a requirement for any type marked + with the target attribute to implement or inherit specific type or types. + + + [BaseTypeRequired(typeof(IComponent)] // Specify requirement + class ComponentAttribute : Attribute { } + + [Component] // ComponentAttribute requires implementing IComponent interface + class MyComponent : IComponent { } + + + + + Indicates that the marked symbol is used implicitly (e.g. via reflection, in external library), + so this symbol will not be marked as unused (as well as by other usage inspections). + + + + + Should be used on attributes and causes ReSharper to not mark symbols marked with such attributes + as unused (as well as by other usage inspections) + + + + Only entity marked with attribute considered used. + + + Indicates implicit assignment to a member. + + + + Indicates implicit instantiation of a type with fixed constructor signature. + That means any unused constructor parameters won't be reported as such. + + + + Indicates implicit instantiation of a type. + + + + Specify what is considered used implicitly when marked + with or . + + + + Members of entity marked with attribute are considered used. + + + Entity marked with attribute and all its members considered used. + + + + This attribute is intended to mark publicly available API + which should not be removed and so is treated as used. + + + + + Tells code analysis engine if the parameter is completely handled when the invoked method is on stack. + If the parameter is a delegate, indicates that delegate is executed while the method is executed. + If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + + + + + Indicates that a method does not make any observable state changes. + The same as System.Diagnostics.Contracts.PureAttribute. + + + [Pure] int Multiply(int x, int y) => x * y; + + void M() { + Multiply(123, 42); // Waring: Return value of pure method is not used + } + + + + + Indicates that the return value of method invocation must be used. + + + + + Indicates the type member or parameter of some type, that should be used instead of all other ways + to get the value that type. This annotation is useful when you have some "context" value evaluated + and stored somewhere, meaning that all other ways to get this value must be consolidated with existing one. + + + class Foo { + [ProvidesContext] IBarService _barService = ...; + + void ProcessNode(INode node) { + DoSomething(node, node.GetGlobalServices().Bar); + // ^ Warning: use value of '_barService' field + } + } + + + + + Indicates that a parameter is a path to a file or a folder within a web project. + Path can be relative or absolute, starting from web root (~). + + + + + An extension method marked with this attribute is processed by ReSharper code completion + as a 'Source Template'. When extension method is completed over some expression, it's source code + is automatically expanded like a template at call site. + + + Template method body can contain valid source code and/or special comments starting with '$'. + Text inside these comments is added as source code when the template is applied. Template parameters + can be used either as additional method parameters or as identifiers wrapped in two '$' signs. + Use the attribute to specify macros for parameters. + + + In this example, the 'forEach' method is a source template available over all values + of enumerable types, producing ordinary C# 'foreach' statement and placing caret inside block: + + [SourceTemplate] + public static void forEach<T>(this IEnumerable<T> xs) { + foreach (var x in xs) { + //$ $END$ + } + } + + + + + + Allows specifying a macro for a parameter of a source template. + + + You can apply the attribute on the whole method or on any of its additional parameters. The macro expression + is defined in the property. When applied on a method, the target + template parameter is defined in the property. To apply the macro silently + for the parameter, set the property value = -1. + + + Applying the attribute on a source template method: + + [SourceTemplate, Macro(Target = "item", Expression = "suggestVariableName()")] + public static void forEach<T>(this IEnumerable<T> collection) { + foreach (var item in collection) { + //$ $END$ + } + } + + Applying the attribute on a template method parameter: + + [SourceTemplate] + public static void something(this Entity x, [Macro(Expression = "guid()", Editable = -1)] string newguid) { + /*$ var $x$Id = "$newguid$" + x.ToString(); + x.DoSomething($x$Id); */ + } + + + + + + Allows specifying a macro that will be executed for a source template + parameter when the template is expanded. + + + + + Allows specifying which occurrence of the target parameter becomes editable when the template is deployed. + + + If the target parameter is used several times in the template, only one occurrence becomes editable; + other occurrences are changed synchronously. To specify the zero-based index of the editable occurrence, + use values >= 0. To make the parameter non-editable when the template is expanded, use -1. + > + + + + Identifies the target parameter of a source template if the + is applied on a template method. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC action. If applied to a method, the MVC action name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC area. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is + an MVC controller. If applied to a method, the MVC controller name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC Master. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC model type. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is an MVC + partial view. If applied to a method, the MVC partial view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Allows disabling inspections for MVC views within a class or a method. + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC display template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.DisplayExtensions.DisplayForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC editor template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.EditorExtensions.EditorForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC template. + Use this attribute for custom wrappers similar to + System.ComponentModel.DataAnnotations.UIHintAttribute(System.String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component. If applied to a method, the MVC view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Controller.View(Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component name. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component view. If applied to a method, the MVC view component view name is default. + + + + + ASP.NET MVC attribute. When applied to a parameter of an attribute, + indicates that this parameter is an MVC action name. + + + [ActionName("Foo")] + public ActionResult Login(string returnUrl) { + ViewBag.ReturnUrl = Url.Action("Foo"); // OK + return RedirectToAction("Bar"); // Error: Cannot resolve action + } + + + + + Razor attribute. Indicates that a parameter or a method is a Razor section. + Use this attribute for custom wrappers similar to + System.Web.WebPages.WebPageBase.RenderSection(String). + + + + + Indicates how method, constructor invocation or property access + over collection type affects content of the collection. + + + + Method does not use or modify content of the collection. + + + Method only reads content of the collection but does not modify it. + + + Method can change content of the collection but does not add new elements. + + + Method can add new elements to the collection. + + + + Indicates that the marked method is assertion method, i.e. it halts control flow if + one of the conditions is satisfied. To set the condition, mark one of the parameters with + attribute. + + + + + Indicates the condition parameter of the assertion method. The method itself should be + marked by attribute. The mandatory argument of + the attribute is the assertion type. + + + + + Specifies assertion type. If the assertion method argument satisfies the condition, + then the execution continues. Otherwise, execution is assumed to be halted. + + + + Marked parameter should be evaluated to true. + + + Marked parameter should be evaluated to false. + + + Marked parameter should be evaluated to null value. + + + Marked parameter should be evaluated to not null value. + + + + Indicates that the marked method unconditionally terminates control flow execution. + For example, it could unconditionally throw exception. + + + + + Indicates that method is pure LINQ method, with postponed enumeration (like Enumerable.Select, + .Where). This annotation allows inference of [InstantHandle] annotation for parameters + of delegate type by analyzing LINQ method chains. + + + + + Indicates that IEnumerable, passed as parameter, is not enumerated. + + + + + Indicates that parameter is regular expression pattern. + + + + + Prevents the Member Reordering feature from tossing members of the marked class. + + + The attribute must be mentioned in your member reordering patterns + + + + + XAML attribute. Indicates the type that has ItemsSource property and should be treated + as ItemsControl-derived type, to enable inner items DataContext type resolve. + + + + + XAML attribute. Indicates the property of some BindingBase-derived type, that + is used to bind some item of ItemsControl-derived type. This annotation will + enable the DataContext type resolve for XAML bindings for such properties. + + + Property should have the tree ancestor of the ItemsControl type or + marked with the attribute. + + + + + Support implementation of + + + + + + + + + + + + + + + + + Asynchronous continuation delegate - function invoked at the end of asynchronous + processing. + + Exception during asynchronous processing or null if no exception + was thrown. + + + + Helpers for asynchronous operations. + + + + + Iterates over all items in the given collection and runs the specified action + in sequence (each action executes only after the preceding one has completed without an error). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Repeats the specified asynchronous action multiple times and invokes asynchronous continuation at the end. + + The repeat count. + The asynchronous continuation to invoke at the end. + The action to invoke. + + + + Modifies the continuation by pre-pending given action to execute just before it. + + The async continuation. + The action to pre-pend. + Continuation which will execute the given action before forwarding to the actual continuation. + + + + Attaches a timeout to a continuation which will invoke the continuation when the specified + timeout has elapsed. + + The asynchronous continuation. + The timeout. + Wrapped continuation. + + + + Iterates over all items in the given collection and runs the specified action + in parallel (each action executes on a thread from thread pool). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Runs the specified asynchronous action synchronously (blocks until the continuation has + been invoked). + + The action. + + Using this method is not recommended because it will block the calling thread. + + + + + Wraps the continuation with a guard which will only make sure that the continuation function + is invoked only once. + + The asynchronous continuation. + Wrapped asynchronous continuation. + + + + Gets the combined exception from all exceptions in the list. + + The exceptions. + Combined exception or null if no exception was thrown. + + + + Disposes the Timer, and waits for it to leave the Timer-callback-method + + The Timer object to dispose + Timeout to wait (TimeSpan.Zero means dispose without waiting) + Timer disposed within timeout (true/false) + + + + Asynchronous action. + + Continuation to be invoked at the end of action. + + + + Asynchronous action with one argument. + + Type of the argument. + Argument to the action. + Continuation to be invoked at the end of action. + + + + Represents the logging event with asynchronous continuation. + + + + + Initializes a new instance of the struct. + + The log event. + The continuation. + + + + Gets the log event. + + + + + Gets the continuation. + + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + A value of true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + String Conversion Helpers + + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + Output value + Default value + Returns false if the input value could not be parsed + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + The type of the enum + Output value. Null if parse failed + + + + Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. A parameter specifies whether the operation is case-sensitive. The return value indicates whether the conversion succeeded. + + The enumeration type to which to convert value. + The string representation of the enumeration name or underlying value to convert. + true to ignore case; false to consider case. + When this method returns, result contains an object of type TEnum whose value is represented by value if the parse operation succeeds. If the parse operation fails, result contains the default value of the underlying type of TEnum. Note that this value need not be a member of the TEnum enumeration. This parameter is passed uninitialized. + true if the value parameter was converted successfully; otherwise, false. + Wrapper because Enum.TryParse is not present in .net 3.5 + + + + Enum.TryParse implementation for .net 3.5 + + + + Don't uses reflection + + + + Enables to extract extra context details for + + + + + Name of context + + + + + The current LogFactory next to LogManager + + + + + NLog internal logger. + + Writes to file, console or custom text writer (see ) + + + Don't use as that can lead to recursive calls - stackoverflow + + + + + Gets a value indicating whether internal log includes Trace messages. + + + + + Gets a value indicating whether internal log includes Debug messages. + + + + + Gets a value indicating whether internal log includes Info messages. + + + + + Gets a value indicating whether internal log includes Warn messages. + + + + + Gets a value indicating whether internal log includes Error messages. + + + + + Gets a value indicating whether internal log includes Fatal messages. + + + + + Logs the specified message without an at the Trace level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + Log message. + + + + Logs the specified message without an at the Trace level. + will be only called when logging is enabled for level Trace. + + Function that returns the log message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Trace level. + will be only called when logging is enabled for level Trace. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Debug level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Debug level. + + Log message. + + + + Logs the specified message without an at the Debug level. + will be only called when logging is enabled for level Debug. + + Function that returns the log message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Debug level. + will be only called when logging is enabled for level Debug. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Info level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Info level. + + Log message. + + + + Logs the specified message without an at the Info level. + will be only called when logging is enabled for level Info. + + Function that returns the log message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Info level. + will be only called when logging is enabled for level Info. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Warn level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Warn level. + + Log message. + + + + Logs the specified message without an at the Warn level. + will be only called when logging is enabled for level Warn. + + Function that returns the log message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Warn level. + will be only called when logging is enabled for level Warn. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Error level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Error level. + + Log message. + + + + Logs the specified message without an at the Error level. + will be only called when logging is enabled for level Error. + + Function that returns the log message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Error level. + will be only called when logging is enabled for level Error. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Fatal level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Fatal level. + + Log message. + + + + Logs the specified message without an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Function that returns the log message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Exception to be logged. + Function that returns the log message. + + + + Initializes static members of the InternalLogger class. + + + + + Set the config of the InternalLogger with defaults and config. + + + + + Gets or sets the minimal internal log level. + + If set to , then messages of the levels , and will be written. + + + + Gets or sets a value indicating whether internal messages should be written to the console output stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the console error stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the .Trace + + + + + Gets or sets the file path of the internal log file. + + A value of value disables internal logging to a file. + + + + Gets or sets the text writer that will receive internal logs. + + + + + Event written to the internal log. + Please note that the event is not triggered when then event hasn't the minimal log level set by + + + + + Gets or sets a value indicating whether timestamp should be included in internal log output. + + + + + Is there an thrown when writing the message? + + + + + Logs the specified message without an at the specified level. + + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the specified level. + + Log level. + Log message. + + + + Logs the specified message without an at the specified level. + will be only called when logging is enabled for level . + + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + will be only called when logging is enabled for level . + + Exception to be logged. + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Log message. + + + + Write to internallogger. + + optional exception to be logged. + level + message + optional args for + + + + Create log line with timestamp, exception message etc (if configured) + + + + + Determine if logging should be avoided because of exception type. + + The exception to check. + true if logging should be avoided; otherwise, false. + + + + Determine if logging is enabled for given LogLevel + + The for the log event. + true if logging is enabled; otherwise, false. + + + + Determine if logging is enabled. + + true if logging is enabled; otherwise, false. + + + + Write internal messages to the log file defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged only when the property is true, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged when the property is true, otherwise the + method has no effect. + + + + + Write internal messages to the . + + A message to write. + + Works when property set to true. + The is used in Debug and Release configuration. + The works only in Debug configuration and this is reason why is replaced by . + in DEBUG + + + + + Logs the assembly version and file version of the given Assembly. + + The assembly to log. + + + + A message has been written to the internal logger + + + + + The rendered message + + + + + The log level + + + + + The exception. Could be null. + + + + + The type that triggered this internal log event, for example the FileTarget. + This property is not always populated. + + + + + The context name that triggered this internal log event, for example the name of the Target. + This property is not always populated. + + + + + + + + A cyclic buffer of object. + + + + + Initializes a new instance of the class. + + Buffer size. + Whether buffer should grow as it becomes full. + The maximum number of items that the buffer can grow to. + + + + Gets the capacity of the buffer + + + + + Gets the number of items in the buffer + + + + + Adds the specified log event to the buffer. + + Log event. + The number of items in the buffer. + + + + Gets the array of events accumulated in the buffer and clears the buffer as one atomic operation. + + Events in the buffer. + + + + Condition and expression. + + + + + Initializes a new instance of the class. + + Left hand side of the AND expression. + Right hand side of the AND expression. + + + + Gets the left hand side of the AND expression. + + + + + Gets the right hand side of the AND expression. + + + + + Returns a string representation of this expression. + + A concatenated '(Left) and (Right)' string. + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the conjunction operator. + + + + Exception during evaluation of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Base class for representing nodes in condition expression trees. + + + + + Converts condition text to a condition expression tree. + + Condition text to be converted. + Condition expression tree. + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition layout expression (represented by a string literal + with embedded ${}). + + + + + Initializes a new instance of the class. + + The layout. + + + + Gets the layout. + + The layout. + + + + Returns a string representation of this expression. + + String literal in single quotes. + + + + Evaluates the expression by calculating the value + of the layout in the specified evaluation context. + + Evaluation context. + The value of the layout. + + + + Condition level expression (represented by the level keyword). + + + + + Returns a string representation of the expression. + + The 'level' string. + + + + Evaluates to the current log level. + + Evaluation context. Ignored. + The object representing current log level. + + + + Condition literal expression (numeric, LogLevel.XXX, true or false). + + + + + Initializes a new instance of the class. + + Literal value. + + + + Gets the literal value. + + The literal value. + + + + Returns a string representation of the expression. + + The literal value. + + + + Evaluates the expression. + + Evaluation context. + The literal value as passed in the constructor. + + + + Condition logger name expression (represented by the logger keyword). + + + + + Returns a string representation of this expression. + + A logger string. + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + Returns a string representation of this expression. + + The 'message' string. + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Initializes a new instance of the class. + + Condition method name. + + + + Condition method invocation expression (represented by method(p1,p2,p3) syntax). + + + + + Initializes a new instance of the class. + + Name of the condition method. + of the condition method. + Precompiled delegate of the condition method. + The method parameters. + + + + Gets the method info. + + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + A bunch of utility methods (mostly predicates) which can be used in + condition expressions. Partially inspired by XPath 1.0. + + + + + Compares two values for equality. + + The first value. + The second value. + true when two objects are equal, false otherwise. + + + + Compares two strings for equality. + + The first string. + The second string. + Optional. If true, case is ignored; if false (default), case is significant. + true when two strings are equal, false otherwise. + + + + Gets or sets a value indicating whether the second string is a substring of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a substring of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a prefix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a suffix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Returns the length of a string. + + A string whose lengths is to be evaluated. + The length of the string. + + + + Indicates whether the specified regular expression finds a match in the specified input string. + + The string to search for a match. + The regular expression pattern to match. + A string consisting of the desired options for the test. The possible values are those of the separated by commas. + true if the regular expression finds a match; otherwise, false. + + + + + + + + + + + Marks the class as containing condition methods. + + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Gets the expression to be negated. + + The expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition or expression. + + + + + Initializes a new instance of the class. + + Left hand side of the OR expression. + Right hand side of the OR expression. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + Exception during parsing of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Condition parser. Turns a string representation of condition expression + into an expression tree. + + + + + Initializes a new instance of the class. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + Instance of used to resolve references to condition methods and layout renderers. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + + Try stringed keyword to + + + + success? + + + + Parse number + + negative number? minus should be parsed first. + + + + + Condition relational (==, !=, <, <=, + > or >=) expression. + + + + + Initializes a new instance of the class. + + The left expression. + The right expression. + The relational operator. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Gets the relational operator. + + The operator. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Compares the specified values using specified relational operator. + + The first value. + The second value. + The relational operator. + Result of the given relational operator. + + + + Promote values to the type needed for the comparision, e.g. parse a string to int. + + + + + + + Promotes to type + + + + success? + + + + Try to promote both values. First try to promote to , + when failed, try to . + + + + + + Get the order for the type for comparision. + + + index, 0 to max int. Lower is first + + + + Dictionary from type to index. Lower index should be tested first. + + + + + Build the dictionary needed for the order of the types. + + + + + + Get the string representing the current + + + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + Hand-written tokenizer for conditions. + + + + + Initializes a new instance of the class. + + The string reader. + + + + Gets the type of the token. + + The type of the token. + + + + Gets the token value. + + The token value. + + + + Gets the value of a string token. + + The string token value. + + + + Asserts current token type and advances to the next token. + + Expected token type. + If token type doesn't match, an exception is thrown. + + + + Asserts that current token is a keyword and returns its value and advances to the next token. + + Keyword value. + + + + Gets or sets a value indicating whether current keyword is equal to the specified value. + + The keyword. + + A value of true if current keyword is equal to the specified value; otherwise, false. + + + + + Gets or sets a value indicating whether the tokenizer has reached the end of the token stream. + + + A value of true if the tokenizer has reached the end of the token stream; otherwise, false. + + + + + Gets or sets a value indicating whether current token is a number. + + + A value of true if current token is a number; otherwise, false. + + + + + Gets or sets a value indicating whether the specified token is of specified type. + + The token type. + + A value of true if current token is of specified type; otherwise, false. + + + + + Gets the next token and sets and properties. + + + + + Try the comparison tokens (greater, smaller, greater-equals, smaller-equals) + + current char + is match + + + + Try the logical tokens (and, or, not, equals) + + current char + is match + + + + Mapping between characters and token types for punctuations. + + + + + Initializes a new instance of the CharToTokenType struct. + + The character. + Type of the token. + + + + Token types for condition expressions. + + + + + Marks the class or a member as advanced. Advanced classes and members are hidden by + default in generated documentation. + + + + + Initializes a new instance of the class. + + + + + Identifies that the output of layout or layout render does not change for the lifetime of the current appdomain. + + + A layout(renderer) could be converted to a literal when: + - The layout and all layout properties are SimpleLayout or [AppDomainFixedOutput] + + Recommendation: Apply this attribute to a layout or layout-renderer which have the result only changes by properties of type Layout. + + + + + Used to mark configurable parameters which are arrays. + Specifies the mapping between XML elements and .NET types. + + + + + Initializes a new instance of the class. + + The type of the array item. + The XML element name that represents the item. + + + + Gets the .NET type of the array item. + + + + + Gets the XML element name. + + + + + An assembly is trying to load. + + + + + New event args + + + + + + The assembly that is trying to load. + + + + + Constructs a new instance the configuration item (target, layout, layout renderer, etc.) given its type. + + Type of the item. + Created object of the specified type. + + + + Provides registration information for named items (targets, layouts, layout renderers, etc.) managed by NLog. + + Everything of an assembly could be loaded by + + + + + Called before the assembly will be loaded. + + + + + Initializes a new instance of the class. + + The assemblies to scan for named items. + + + + Gets or sets default singleton instance of . + + + This property implements lazy instantiation so that the is not built before + the internal logger is configured. + + + + + Gets or sets the creator delegate used to instantiate configuration objects. + + + By overriding this property, one can enable dependency injection or interception for created objects. + + + + + Gets the factory. + + The target factory. + + + + Gets the factory. + + The filter factory. + + + + gets the factory + + not using due to backwards-compatibility. + + + + + Gets the factory. + + The layout renderer factory. + + + + Gets the factory. + + The layout factory. + + + + Gets the ambient property factory. + + The ambient property factory. + + + + Legacy interface, no longer used by the NLog engine + + + + + Gets or sets the JSON serializer to use with or + + + + + Gets or sets the string serializer to use with + + + + + Gets or sets the custom object-type transformation for use in , or + + + + + Gets or sets the parameter converter to use with , or + + + + + Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) + + + - Null (Auto Detect) : NLog-parser checks for positional parameters, and will then fallback to string.Format-rendering. + - True: Always performs the parsing of and rendering of using the NLog-parser (Allows custom formatting with ) + - False: Always performs parsing and rendering using string.Format (Fastest if not using structured logging) + + + + + Gets the time source factory. + + The time source factory. + + + + Gets the condition method factory. + + The condition method factory. + + + + Gets the condition method factory (precompiled) + + The condition method factory. + + + + Registers named items from the assembly. + + The assembly. + + + + Registers named items from the assembly. + + The assembly. + Item name prefix. + + + + Call Preload for NLogPackageLoader + + + Every package could implement a class "NLogPackageLoader" (namespace not important) with the public static method "Preload" (no arguments) + This method will be called just before registering all items in the assembly. + + + + + + Call the Preload method for . The Preload method must be static. + + + + + + Clears the contents of all factories. + + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Builds the default configuration item factory. + + Default factory. + + + + Registers items in NLog.Extended.dll using late-bound types, so that we don't need a reference to NLog.Extended.dll. + + + + + Attribute used to mark the default parameters for layout renderers. + + + + + Initializes a new instance of the class. + + + + + Dynamic filtering with a positive list of enabled levels + + + + + Dynamic filtering with a minlevel and maxlevel range + + + + + Format of the exception output to the specific target. + + + + + Appends the Message of an Exception to the specified target. + + + + + Appends the type of an Exception to the specified target. + + + + + Appends the short type of an Exception to the specified target. + + + + + Appends the result of calling ToString() on an Exception to the specified target. + + + + + Appends the method name from Exception's stack trace to the specified target. + + + + + Appends the stack trace from an Exception to the specified target. + + + + + Appends the contents of an Exception's Data property to the specified target. + + + + + Destructure the exception (usually into JSON) + + + + + Appends the from the application or the object that caused the error. + + + + + Appends the from the application or the object that caused the error. + + + + + Appends any additional properties that specific type of Exception might have. + + + + + Factory for class-based items. + + The base type of each item. + The type of the attribute used to annotate items. + + + + Scans the assembly. + + The types to scan. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the item based on a type name. + + Name of the item. + Name of the type. + + + + Clears the contents of the factory. + + + + + Registers a single type definition. + + The item name. + The type of the item. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Creates an item instance. + + The name of the item. + Created item. + + + + Factory specialized for s. + + + + + Clear all func layouts + + + + + Register a layout renderer with a callback function. + + Name of the layoutrenderer, without ${}. + the renderer that renders the value. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides means to populate factories of named items (such as targets, layouts, layout renderers, etc.). + + + + + Implemented by objects which support installation and uninstallation. + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Interface for accessing configuration details + + + + + Name of the config section + + + + + Configuration Key/Value Pairs + + + + + Child config sections + + + + + Interface for loading NLog + + + + + Finds and loads the NLog configuration + + LogFactory that owns the NLog configuration + Name of NLog.config file (optional) + NLog configuration (or null if none found) + + + + Notifies when LoggingConfiguration has been successfully applied + + LogFactory that owns the NLog configuration + NLog Config + + + + Get file paths (including filename) for the possible NLog config files. + + Name of NLog.config file (optional) + The file paths to the possible config file + + + + Level enabled flags for each LogLevel ordinal + + + + + Converts the filter into a simple + + + + + Represents a factory of named items (such as targets, layouts, layout renderers, etc.). + + Base type for each item instance. + Item definition type (typically or ). + + + + Registers new item definition. + + Name of the item. + Item definition. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Creates item instance. + + Name of the item. + Newly created item instance. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides context for install/uninstall operations. + + + + + Mapping between log levels and console output colors. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log output. + + + + Gets or sets the installation log level. + + + + + Gets or sets a value indicating whether to ignore failures during installation. + + + + + Whether installation exceptions should be rethrown. If IgnoreFailures is set to true, + this property has no effect (there are no exceptions to rethrow). + + + + + Gets the installation parameters. + + + + + Gets or sets the log output. + + + + + Logs the specified trace message. + + The message. + The arguments. + + + + Logs the specified debug message. + + The message. + The arguments. + + + + Logs the specified informational message. + + The message. + The arguments. + + + + Logs the specified warning message. + + The message. + The arguments. + + + + Logs the specified error message. + + The message. + The arguments. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Creates the log event which can be used to render layouts during installation/uninstallations. + + Log event info object. + + + + Convert object-value into specified type + + + + + Parses the input value and converts into the wanted type + + Input Value + Wanted Type + Format to use when parsing + Culture to use when parsing + Output value with wanted type + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for extension loading + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for enabling NLog + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + LoggingConfiguration being built + + + + + Interface for fluent setup of LogFactory options for logevent serialization + + + + + LogFactory under configuration + + + + + Encapsulates and the logic to match the actual logger name + All subclasses defines immutable objects. + Concrete subclasses defines various matching rules through + + + + + Creates a concrete based on . + + + Rules used to select the concrete implementation returned: + + if is null => returns (never matches) + if doesn't contains any '*' nor '?' => returns (matches only on case sensitive equals) + if == '*' => returns (always matches) + if doesn't contain '?' + + if contains exactly 2 '*' one at the beginning and one at the end (i.e. "*foobar*) => returns + if contains exactly 1 '*' at the beginning (i.e. "*foobar") => returns + if contains exactly 1 '*' at the end (i.e. "foobar*") => returns + + + returns + + + + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + A concrete + + + + Returns the argument passed to + + + + + Checks whether given name matches the logger name pattern. + + String to be matched. + A value of when the name matches, otherwise. + + + + Defines a that never matches. + Used when pattern is null + + + + + Defines a that always matches. + Used when pattern is '*' + + + + + Defines a that matches with a case-sensitive Equals + Used when pattern is a string without wildcards '?' '*' + + + + + Defines a that matches with a case-sensitive StartsWith + Used when pattern is a string like "*foobar" + + + + + Defines a that matches with a case-sensitive EndsWith + Used when pattern is a string like "foobar*" + + + + + Defines a that matches with a case-sensitive Contains + Used when pattern is a string like "*foobar*" + + + + + Defines a that matches with a complex wildcards combinations: + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + used when pattern is a string containing any number of '?' or '*' in any position + i.e. "*Server[*].Connection[?]" + + + + + Keeps logging configuration and provides simple API to modify it. + + This class is thread-safe..ToList() is used for that purpose. + + + + Variables defined in xml or in API. name is case case insensitive. + + + + + Gets the factory that will be configured + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete on NLog 4.1 and it may be removed in a future release. + + + + Gets the variables defined in the configuration. + + + + + Gets a collection of named targets specified in the configuration. + + + A list of named targets. + + + Unnamed targets (such as those wrapped by other targets) are not returned. + + + + + Gets the collection of file names which should be watched for changes by NLog. + + + + + Gets the collection of logging rules. + + + + + Gets or sets the default culture info to use as . + + + Specific culture info or null to use + + + + + Gets all targets. + + + + + Compare objects based on their name. + + This property is use to cache the comparer object. + + + + Defines methods to support the comparison of objects for equality based on their name. + + + + + Registers the specified target object. The name of the target is read from . + + + The target object with a non + + when is + + + + Registers the specified target object under a given name. + + Name of the target. + The target object. + when is + when is + + + + Finds the target with the specified name. + + + The name of the target to be found. + + + Found target or when the target is not found. + + + + + Finds the target with the specified name and specified type. + + + The name of the target to be found. + + Type of the target + + Found target or when the target is not found of not of type + + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for all loglevels. + + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Finds the logging rule with the specified name. + + The name of the logging rule to be found. + Found logging rule or when not found. + + + + Removes the specified named logging rule. + + The name of the logging rule to be removed. + Found one or more logging rule to remove, or when not found. + + + + Called by LogManager when one of the log configuration files changes. + + + A new instance of that represents the updated configuration. + + + + + Removes the specified named target. + + Name of the target. + + + + Installs target-specific objects on current system. + + The installation context. + + Installation typically runs with administrative permissions. + + + + + Uninstalls target-specific objects from current system. + + The installation context. + + Uninstallation typically runs with administrative permissions. + + + + + Closes all targets and releases any unmanaged resources. + + + + + Log to the internal (NLog) logger the information about the and associated with this instance. + + + The information are only recorded in the internal logger if Debug level is enabled, otherwise nothing is + recorded. + + + + + Validates the configuration. + + + + + Copies all variables from provided dictionary into current configuration variables. + + Master variables dictionary + + + + Replace a simple variable with a value. The original value is removed and thus we cannot redo this in a later stage. + + + + + + + Checks whether unused targets exist. If found any, just write an internal log at Warn level. + If initializing not started or failed, then checking process will be canceled + + + + + + + + Arguments for events. + + + + + Initializes a new instance of the class. + + The new configuration. + The old configuration. + + + + Gets the old configuration. + + The old configuration. + + + + Gets the new configuration. + + The new configuration. + + + + Gets the new configuration + + The new configuration. + + + + Gets the old configuration + + The old configuration. + + + + Gets the optional boolean attribute value. + + + Name of the attribute. + Default value to return if the attribute is not found or if there is a parse error + Boolean attribute value or default. + + + + Remove the namespace (before :) + + + x:a, will be a + + + + + + + Enables loading of NLog configuration from a file + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Loads NLog configuration from + + + + + Constructor + + + + + + Loads NLog configuration from provided config section + + + + + + + Builds list with unique keys, using last value of duplicates. High priority keys placed first. + + + + + + + Parse loglevel, but don't throw if exception throwing is disabled + + Name of attribute for logging. + Value of parse. + Used if there is an exception + + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Parse {Rules} xml element + + + Rules are added to this parameter. + + + + Parse {Logger} xml element + + + + + + Parse boolean + + Name of the property for logging. + value to parse + Default value to return if the parse failed + Boolean attribute value or default. + + + + Arguments for . + + + + + Initializes a new instance of the class. + + Whether configuration reload has succeeded. + + + + Initializes a new instance of the class. + + Whether configuration reload has succeeded. + The exception during configuration reload. + + + + Gets a value indicating whether configuration reload has succeeded. + + A value of true if succeeded; otherwise, false. + + + + Gets the exception which occurred during configuration reload. + + The exception. + + + + Enables FileWatcher for the currently loaded NLog Configuration File, + and supports automatic reload on file modification. + + + + + Represents a logging rule. An equivalent of <logger /> configuration element. + + + + + Create an empty . + + + + + Create an empty . + + + + + Create a new with a and which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a new with a which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a (disabled) . You should call or see cref="EnableLoggingForLevels"/> to enable logging. + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Target to be written to when the rule matches. + + + + Rule identifier to allow rule lookup + + + + + Gets a collection of targets that should be written to when this rule matches. + + + + + Gets a collection of child rules to be evaluated when this rule matches. + + + + + Gets a collection of filters to be checked before writing to targets. + + + + + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + + Gets or sets logger name pattern. + + + Logger name pattern used by to check if a logger name matches this rule. + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + + + + Gets the collection of log levels enabled by this rule. + + + + + Default action if none of the filters match + + + + + Enables logging for a particular level. + + Level to be enabled. + + + + Enables logging for a particular levels between (included) and . + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Disables logging for a particular level. + + Level to be disabled. + + + + Disables logging for particular levels between (included) and . + + Minimum log level to be disables. + Maximum log level to de disabled. + + + + Enables logging the levels between (included) and . All the other levels will be disabled. + + >Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Returns a string representation of . Used for debugging. + + + A that represents the current . + + + + + Checks whether te particular log level is enabled for this rule. + + Level to be checked. + A value of when the log level is enabled, otherwise. + + + + Checks whether given name matches the . + + String to be matched. + A value of when the name matches, otherwise. + + + + Default filtering with static level config + + + + + Factory for locating methods. + + + + + Initializes a new instance of the class. + + Helper method to extract relevant methods from type + + + + Scans the assembly for classes marked with expected class + and methods marked with expected and adds them + to the factory. + + The types to scan. + The prefix to use for names. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Scans a type for relevant methods with their symbolic names + + Include types that are marked with this attribute + Include methods that are marked with this attribute + Class Type to scan + Collection of methods with their symbolic names + + + + Clears contents of the factory. + + + + + Registers the definition of a single method. + + The method name. + The method info. + + + + Registers the definition of a single method. + + The method name. + The method info. + The precompiled method delegate. + + + + Tries to retrieve method by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Tries to retrieve method-delegate by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Retrieves method by name. + + Method name. + MethodInfo object. + + + + Retrieves method by name. + + Method name. + Method delegate object. + + + + Tries to get method definition. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Marks the layout or layout renderer depends on mutable objects from the LogEvent + + This can be or + + + + + Attaches a simple name to an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The name of the item. + + + + Gets the name of the item. + + The name of the item. + + + + Indicates NLog should not scan this property during configuration. + + + + + Initializes a new instance of the class. + + + + + Marks the object as configuration item for NLog. + + + + + Initializes a new instance of the class. + + + + + Represents simple XML element with case-insensitive attribute semantics. + + + + + Initializes a new instance of the class. + + The reader to initialize element from. + + + + Prevents a default instance of the class from being created. + + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + Last error occured during configuration read + + + + + Returns children elements with the specified element name. + + Name of the element. + Children elements with the specified element name. + + + + Asserts that the name of the element is among specified element names. + + The allowed names. + + + + Returns all parsing errors from current and all child elements. + + + + + Special attribute we could ignore + + + + + Default implementation of + + + + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Provides simple programmatic configuration API used for trivial logging cases. + + Warning, these methods will overwrite the current config. + + + + + Configures NLog for console logging so that all messages above and including + the level are output to the console. + + + + + Configures NLog for console logging so that all messages above and including + the specified level are output to the console. + + The minimal logging level. + + + + Configures NLog for to log to the specified target so that all messages + above and including the level are output. + + The target to log all messages to. + + + + Configures NLog for to log to the specified target so that all messages + above and including the specified level are output. + + The target to log all messages to. + The minimal logging level. + + + + Configures NLog for file logging so that all messages above and including + the level are written to the specified file. + + Log file name. + + + + Configures NLog for file logging so that all messages above and including + the specified level are written to the specified file. + + Log file name. + The minimal logging level. + + + + Value indicating how stack trace should be captured when processing the log event. + + + + + Stack trace should not be captured. + + + + + Stack trace should be captured without source-level information. + + + + + Stack trace should be captured including source-level information such as line numbers. + + + + + Capture maximum amount of the stack trace information supported on the platform. + + + + + Marks the layout or layout renderer as thread independent - it producing correct results + regardless of the thread it's running on. + + Without this attribute everything is rendered on the main thread. + + + If this attribute is set on a layout, it could be rendered on the another thread. + This could be more efficient as it's skipped when not needed. + + If context like HttpContext.Current is needed, which is only available on the main thread, this attribute should not be applied. + + See the AsyncTargetWrapper and BufferTargetWrapper with the , using + + Apply this attribute when: + - The result can we rendered in another thread. Delaying this could be more efficient. And/Or, + - The result should not be precalculated, for example the target sends some extra context information. + + + + + Marks the layout or layout renderer as thread safe - it producing correct results + regardless of the number of threads it's running on. + + Without this attribute then the target concurrency will be reduced + + + + + A class for configuring NLog through an XML configuration file + (App.config style or App.nlog style). + + Parsing of the XML file is also implemented in this class. + + + - This class is thread-safe..ToList() is used for that purpose. + - Update TemplateXSD.xml for changes outside targets + + + + + Initializes a new instance of the class. + + Configuration file to be read. + + + + Initializes a new instance of the class. + + Configuration file to be read. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + XML reader to read from. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + The XML contents. + Name of the XML file. + The to which to apply any applicable configuration values. + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + NLog LogFactory + + + + Did the Succeeded? true= success, false= error, null = initialize not started yet. + + + + + Gets or sets a value indicating whether all of the configuration files + should be watched for changes and reloaded automatically when changed. + + + + + Gets the collection of file names which should be watched for changes by NLog. + This is the list of configuration files processed. + If the autoReload attribute is not set it returns empty collection. + + + + + Re-reads the original configuration file and returns the new object. + + The new object. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Create XML reader for (xml config) file. + + filepath + reader or null if filename is empty. + + + + Initializes the configuration. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Checks whether any error during XML configuration parsing has occured. + If there are any and ThrowConfigExceptions or ThrowExceptions + setting is enabled - throws NLogConfigurationException, otherwise + just write an internal log at Warn level. + + Root NLog configuration xml element + + + + Add a file with configuration. Check if not already included. + + + + + + + Parse the root + + + path to config file. + The default value for the autoReload option. + + + + Parse {configuration} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parse {NLog} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Include (multiple) files by filemask, e.g. *.nlog + + base directory in case if is relative + relative or absolute fileMask + + + + + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language + described
here. + + + + + Gets or sets the condition expression. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + An abstract filter class. Provides a way to eliminate log messages + based on properties other than logger name and log level. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the action to be taken when filter matches. + + + + + + Gets the result of evaluating filter against given log event. + + The log event. + Filter result. + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Marks class as a layout renderer and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the filter. + + + + Filter result. + + + + + The filter doesn't want to decide whether to log or discard the message. + + + + + The message should be logged. + + + + + The message should not be logged. + + + + + The message should be logged and processing should be finished. + + + + + The message should not be logged and processing should be finished. + + + + + A base class for filters that are based on comparing a value to a layout. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout to be used to filter log messages. + + The layout. + + + + + Matches when the calculated layout contains the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets the substring to be matched. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets a string to compare the layout to. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches the provided filter-method + + + + + Initializes a new instance of the class. + + + + + + + + Matches when the calculated layout does NOT contain the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets the substring to be matched. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is NOT equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a string to compare the layout to. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the result of the calculated layout has been repeated a moment ago + + + + + How long before a filter expires, and logging is accepted again + + + + + + Max length of filter values, will truncate if above limit + + + + + + Applies the configured action to the initial logevent that starts the timeout period. + Used to configure that it should ignore all events until timeout. + + + + + + Max number of unique filter values to expect simultaneously + + + + + + Default number of unique filter values to expect, will automatically increase if needed + + + + + + Insert FilterCount value into when an event is no longer filtered + + + + + + Append FilterCount to the when an event is no longer filtered + + + + + + Reuse internal buffers, and doesn't have to constantly allocate new buffers + + + + + + Default buffer size for the internal buffers + + + + + + Can be used if has been enabled. + + + + + Initializes a new instance of the class. + + + + + Checks whether log event should be logged or not. In case the LogEvent has just been repeated. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Uses object pooling, and prunes stale filter items when the pool runs dry + + + + + Remove stale filter-value from the cache, and fill them into the pool for reuse + + + + + Renders the Log Event into a filter value, that is used for checking if just repeated + + + + + Repeated LogEvent detected. Checks if it should activate filter-action + + + + + Filter Value State (mutable) + + + + + Filter Lookup Key (immutable) + + + + + A global logging class using caller info to find the logger. + + + + + Starts building a log event with the specified . + + The log level. + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Trace level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Debug level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Info level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Warn level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Error level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Fatal level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + A fluent class to build log events for NLog. + + + + + Initializes a new instance of the class. + + The to send the log event. + + + + Initializes a new instance of the class. + + The to send the log event. + The for the log event. + + + + Gets the created by the builder. + + + + + Sets the information of the logging event. + + The exception information of the logging event. + current for chaining calls. + + + + Sets the level of the logging event. + + The level of the logging event. + current for chaining calls. + + + + Sets the logger name of the logging event. + + The logger name of the logging event. + current for chaining calls. + + + + Sets the log message on the logging event. + + The log message for the logging event. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + The fourth object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + An object that supplies culture-specific formatting information. + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets a per-event context property on the logging event. + + The name of the context property. + The value of the context property. + current for chaining calls. + + + + Sets multiple per-event context properties on the logging event. + + The properties to set. + current for chaining calls. + + + + Sets the timestamp of the logging event. + + The timestamp of the logging event. + current for chaining calls. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + current for chaining calls. + + + + Writes the log event to the underlying logger. + + The method or property name of the caller to the method. This is set at by the compiler. + The full path of the source file that contains the caller. This is set at by the compiler. + The line number in the source file at which the method is called. This is set at by the compiler. + + + + Writes the log event to the underlying logger if the condition delegate is true. + + If condition is true, write log event; otherwise ignore event. + The method or property name of the caller to the method. This is set at by the compiler. + The full path of the source file that contains the caller. This is set at by the compiler. + The line number in the source file at which the method is called. This is set at by the compiler. + + + + Writes the log event to the underlying logger if the condition is true. + + If condition is true, write log event; otherwise ignore event. + The method or property name of the caller to the method. This is set at by the compiler. + The full path of the source file that contains the caller. This is set at by the compiler. + The line number in the source file at which the method is called. This is set at by the compiler. + + + + Extension methods for NLog . + + + + + Starts building a log event with the specified . + + The logger to write the log event to. + The log level. + current for chaining calls. + + + + Starts building a log event at the Trace level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Debug level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Info level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Warn level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Error level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Fatal level. + + The logger to write the log event to. + current for chaining calls. + + + + Global Diagnostics Context + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Global Diagnostics Context - a dictionary structure to hold per-application-instance values. + + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The item value, if defined; otherwise null. + + + + Returns all item names + + A collection of the names of all items in the Global Diagnostics Context. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Include context properties + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Interface for serialization of object values into JSON format + + + + + Serialization of an object into JSON format. + + The object to serialize to JSON. + Output destination. + Serialize succeeded (true/false) + + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format.s + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Logger with only generic methods (passing 'LogLevel' to methods) and core properties. + + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Extensions for NLog . + + + + + Writes the diagnostic message and exception at the specified level. + + A logger implementation that will handle the message. + The log level. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Allocates new builder and appends to the provided target builder on dispose + + + + + Access the new builder allocated + + + + + Helpers for . + + + + + Load from url + + file or path, including .dll + basepath, optional + + + + + Load from url + + name without .dll + + + + + Forward declare of system delegate type for use by other classes + + + + + Keeps track of pending operation count, and can notify when pending operation count reaches zero + + + + + Mark operation has started + + + + + Mark operation has completed + + Exception coming from the completed operation [optional] + + + + Registers an AsyncContinuation to be called when all pending operations have completed + + Invoked on completion + AsyncContinuation operation + + + + Clear o + + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Legacy attempt to skip async MoveNext, but caused source file line number to be lost + + + + + Gets the entire stack trace. + + + + + Finds first user stack frame in a stack trace + + The stack trace of the logging method invocation + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + Index of the first user stack frame or 0 if all stack frames are non-user + + + + This is only done for legacy reason, as the correct method-name and line-number should be extracted from the MoveNext-StackFrame + + The stack trace of the logging method invocation + Starting point for skipping async MoveNext-frames + + + + Assembly to skip? + + Find assembly via this frame. + true, we should skip. + + + + Is this the type of the logger? + + get type of this logger in this frame. + Type of the logger. + + + + + Memory optimized filtering + + Passing state too avoid delegate capture and memory-allocations. + + + + Provides untyped IDictionary interface on top of generic IDictionary. + + The type of the key. + The type of the value. + + + + Initializes a new instance of the DictionaryAdapter class. + + The implementation. + + + + Gets an object containing the values in the object. + + + + An object containing the values in the object. + + + + + Gets the number of elements contained in the . + + + + The number of elements contained in the . + + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + + + Gets an object that can be used to synchronize access to the . + + + + An object that can be used to synchronize access to the . + + + + + Gets a value indicating whether the object has a fixed size. + + + true if the object has a fixed size; otherwise, false. + + + + + Gets a value indicating whether the object is read-only. + + + true if the object is read-only; otherwise, false. + + + + + Gets an object containing the keys of the object. + + + + An object containing the keys of the object. + + + + + Gets or sets the with the specified key. + + Dictionary key. + Value corresponding to key or null if not found + + + + Adds an element with the provided key and value to the object. + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + + Removes all elements from the object. + + + + + Determines whether the object contains an element with the specified key. + + The key to locate in the object. + + True if the contains an element with the key; otherwise, false. + + + + + Returns an object for the object. + + + An object for the object. + + + + + Removes the element with the specified key from the object. + + The key of the element to remove. + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Wrapper IDictionaryEnumerator. + + + + + Initializes a new instance of the class. + + The wrapped. + + + + Gets both the key and the value of the current dictionary entry. + + + + A containing both the key and the value of the current dictionary entry. + + + + + Gets the key of the current dictionary entry. + + + + The key of the current element of the enumeration. + + + + + Gets the value of the current dictionary entry. + + + + The value of the current element of the enumeration. + + + + + Gets the current element in the collection. + + + + The current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + + True if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Ensures that IDictionary.GetEnumerator returns DictionaryEntry values + + + + + UTF-8 BOM 239, 187, 191 + + + + + Safe way to get environment variables. + + + + + Helper class for dealing with exceptions. + + + + + Mark this exception as logged to the . + + + + + + + Is this exception logged to the ? + + + trueif the has been logged to the . + + + + Determines whether the exception must be rethrown and logs the error to the if is false. + + Advised to log first the error to the before calling this method. + + The exception to check. + Target context of the exception. + trueif the must be rethrown, false otherwise. + + + + Determines whether the exception must be rethrown immediately, without logging the error to the . + + Only used this method in special cases. + + The exception to check. + trueif the must be rethrown, false otherwise. + + + + Object construction helper. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Initializes a new instance of the class. + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + Interface for fakeable the current . Not fully implemented, please methods/properties as necessary. + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + Abstract calls for the application environment + + + + + Gets current process name (excluding filename extension, if any). + + + + + Abstract calls to FileSystem + + + + Determines whether the specified file exists. + The file to check. + + + Returns the content of the specified file + The file to load. + + + + Base class for optimized file appenders. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Gets the path of the file, including file extension. + + The name of the file. + + + + Gets or sets the creation time for a file associated with the appender. The time returned is in Coordinated + Universal Time [UTC] standard. + + The creation time of the file. + + + + Gets or sets the creation time for a file associated with the appender. Synchronized by + The time format is based on + + + + + Gets the last time the file associated with the appender is opened. The time returned is in Coordinated + Universal Time [UTC] standard. + + The time the file was last opened. + + + + Gets the file creation parameters. + + The file creation parameters. + + + + Writes the specified bytes. + + The bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Creates the file stream. + + If set to true sets the file stream to allow shared writing. + If larger than 0 then it will be used instead of the default BufferSize for the FileStream. + A object which can be used to write to the file. + + + + Base class for optimized file appenders which require the usage of a mutex. + + It is possible to use this class as replacement of BaseFileAppender and the mutex functionality + is not enforced to the implementing subclasses. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Gets the mutually-exclusive lock for archiving files. + + The mutex for archiving. + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Creates a mutex that is sharable by more than one process. + + The prefix to use for the name of the mutex. + A object which is sharable by multiple processes. + + + + Implementation of which caches + file information. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Closes this instance of the appender. + + + + + Flushes this current appender. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Writes the specified bytes to a file. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Factory class which creates objects. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Maintains a collection of file appenders usually associated with file targets. + + + + + An "empty" instance of the class with zero size and empty list of appenders. + + + + + Initializes a new "empty" instance of the class with zero size and empty + list of appenders. + + + + + Initializes a new instance of the class. + + + The size of the list should be positive. No validations are performed during initialization as it is an + internal class. + + Total number of appenders allowed in list. + Factory used to create each appender. + Parameters used for creating a file. + + + + The archive file path pattern that is used to detect when archiving occurs. + + + + + Invalidates appenders for all files that were archived. + + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + Interface that provides parameters for create file function. + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + Gets or sets the log file buffer size in bytes. + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + Gets or sets the file attributes (Windows only). + + + + + Should archive mutex be created? + + + + + Should manual simple detection of file deletion be enabled? + + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + The archive file path pattern that is used to detect when archiving occurs. + + + + + Invalidates appenders for all files that were archived. + + + + + Interface implemented by all factories capable of creating file appenders. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + Instance of which can be used to write to the file. + + + + Provides a multi process-safe atomic file appends while + keeping the files open. + + + On Unix you can get all the appends to be atomic, even when multiple + processes are trying to write to the same file, because setting the file + pointer to the end of the file and appending can be made one operation. + On Win32 we need to maintain some synchronization between processes + (global named mutex is used for this) + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Closes this instance. + + + + + Flushes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Appender used to discard data for the FileTarget. + Used mostly for testing entire stack except the actual writing to disk. + Throws away all data. + + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Multi-process and multi-host file appender which attempts + to get exclusive write access and retries if it's not available. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Optimized single-process file appender which keeps the file open for exclusive write. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + A layout that represents a filePath. + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Cached invalid file names char array to avoid memory allocation every time Path.GetInvalidFileNameChars() is called. + + + + + not null when == false + + + + + non null is fixed, + + + + + is the cache-key, and when newly rendered filename matches the cache-key, + then it reuses the cleaned cache-value . + + + + + is the cache-value that is reused, when the newly rendered filename + matches the cache-key + + + + Initializes a new instance of the class. + + + + Render the raw filename from Layout + + The log event. + StringBuilder to minimize allocations [optional]. + String representation of a layout. + + + + Convert the raw filename to a correct filename + + The filename generated by Layout. + String representation of a correct filename. + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Convert object to string + + value + format for conversion. + + + If is null and isn't a already, then the will get a locked by + + + + + Format a log message + + + + + Format the message and return + + LogEvent with message to be formatted + formatted message + + + + Has the logevent properties? + + LogEvent with message to be formatted + False when logevent has no properties to be extracted + + + + Appends the logevent message to the provided StringBuilder + + LogEvent with message to be formatted + The to append the formatted message. + + + + Get the Raw, unformatted and unstrinyfied, value + + + + + Get the raw value + + + The value + RawValue supported? + + + + Interface implemented by layouts and layout renderers. + + + + + Renders the the value of layout or layout renderer in the context of the specified log event. + + The log event. + String representation of a layout. + + + + Supports rendering as string value with limited or no allocations (preferred) + + + + + Renders the value of layout renderer in the context of the specified log event + + + null if not possible or unknown + + + + Supports object initialization and termination. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Render the event info as parse as short + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as int + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as bool + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Logger configuration. + + + + + Initializes a new instance of the class. + + The targets by level. + Use the old exception log handling of NLog 3.0? + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete before NLog 4.3.11 and it will be removed in NLog 5. + + + + Gets targets for the specified level. + + The level. + Chain of targets with attached filters. + + + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + New formatter + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + The MessageFormatter delegate + + + + + + + + Most-Recently-Used-Cache, that discards less frequently used items on overflow + + + + + Constructor + + Maximum number of items the cache will hold before discarding. + + + + Attempt to insert item into cache. + + Key of the item to be inserted in the cache. + Value of the item to be inserted in the cache. + true when the key does not already exist in the cache, false otherwise. + + + + Lookup existing item in cache. + + Key of the item to be searched in the cache. + Output value of the item found in the cache. + True when the key is found in the cache, false otherwise. + + + + Watches multiple files at the same time and raises an event whenever + a single change is detected in any of those files. + + + + + The types of changes to watch for. + + + + + Occurs when a change is detected in one of the monitored files. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Stops watching all files. + + + + + Stops watching the specified file. + + + + + + Watches the specified files for changes. + + The file names. + + + + Network sender which uses HTTP or HTTPS POST. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Creates instances of objects for given URLs. + + + + + Creates a new instance of the network sender based on a network URL. + + URL that determines the network sender to be created. + The maximum queue size. + SSL protocols for TCP + KeepAliveTime for TCP + + A newly created network sender. + + + + + Interface for mocking socket calls. + + + + + A base class for all network senders. Supports one-way sending of messages + over various protocols. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Gets the address of the network endpoint. + + + + + Gets the last send time. + + + + + Initializes this network sender. + + + + + Closes the sender and releases any unmanaged resources. + + The continuation. + + + + Flushes any pending messages and invokes a continuation. + + The continuation. + + + + Send the given text over the specified protocol. + + Bytes to be sent. + Offset in buffer. + Number of bytes to send. + The asynchronous continuation. + + + + Closes the sender and releases any unmanaged resources. + + + + + Performs sender-specific initialization. + + + + + Performs sender-specific close operation. + + The continuation. + + + + Performs sender-specific flush. + + The continuation. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Parses the URI into an endpoint address. + + The URI to parse. + The address family. + Parsed endpoint. + + + + Default implementation of . + + + + + + + + A base class for network senders that can block or send out-of-order + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Performs sender-specific flush. + + The continuation. + + + + Socket proxy for mocking Socket code. + + + + + Initializes a new instance of the class. + + The address family. + Type of the socket. + Type of the protocol. + + + + Gets underlying socket instance. + + + + + Closes the wrapped socket. + + + + + Invokes ConnectAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendToAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Sends messages over a TCP network connection. + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + The address family. + + + + Creates the socket with given parameters. + + The host address. + The address family. + Type of the socket. + Type of the protocol. + Instance of which represents the socket. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Facilitates mocking of class. + + + + + Raises the Completed event. + + + + + Sends messages over the network as UDP datagrams. + + + + + Initializes a new instance of the class. + + URL. Must start with udp://. + The address family. + + + + Creates the socket. + + The address family. + Type of the socket. + Type of the protocol. + Implementation of to use. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Sends the specified text as a UDP datagram. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Scans (breadth-first) the object graph following all the edges whose are + instances have attached and returns + all objects implementing a specified interfaces. + + + + + Finds the objects which have attached which are reachable + from any of the given root objects when traversing the object graph over public properties. + + Type of the objects to return. + Also search the properties of the wanted objects. + The root objects. + Ordered list of objects implementing T. + + + ISet is not there in .net35, so using HashSet + + + + Helper for extracting propertyPath + + + + + Object Path to check + + + + + Try get value from , using , and set into + + + + + + + + Converts object into a List of property-names and -values using reflection + + + + + Scans properties for name (Skips string-compare and value-lookup until finding match) + + + + + Scans properties for name (Skips property value lookup until finding match) + + + + + Scans properties for name + + + + + Combine paths + + basepath, not null + optional dir + optional file + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Trims directory separators from the path + + path, could be null + never null + + + + Detects the platform the NLog is running on. + + + + + Gets the current runtime OS. + + + + + Gets a value indicating whether current OS is Win32-based (desktop or mobile). + + + + + Gets a value indicating whether current OS is Unix-based. + + + + + Gets a value indicating whether current runtime is Mono-based + + + + + Gets a value indicating whether current runtime supports use of mutex + + + + + Will creating a mutex succeed runtime? + "Cached" detection + + + + + Will creating a mutex succeed runtime? + + + + + Dictionary that combines the standard with the + MessageTemplate-properties extracted from the . + + The are returned as the first items + in the collection, and in positional order. + + + + + Value of the property + + + + + Is this a property of the message? + + + + + + + Value of the property + Is this a property of the message? + + + + The properties of the logEvent + + + + + The properties extracted from the message + + + + + Injects the list of message-template-parameter into the IDictionary-interface + + Message-template-parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check if the message-template-parameters can be used directly without allocating a dictionary + + Message-template-parameters + Are all parameter names unique (true / false) + + + + Attempt to insert the message-template-parameters into an empty dictionary + + Message-template-parameters + The initially empty dictionary + Message-template-parameters was inserted into dictionary without trouble (true/false) + + + + Attempt to override the existing dictionary values using the message-template-parameters + + Message-template-parameters + The already filled dictionary + List of unique message-template-parameters + + + + + + + + + + + + + + + + + + + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + + + + + + + + + + + + + + + + + Reflection helpers for accessing properties. + + + + + Set value parsed from string. + + object instance to set with property + name of the property on + The value to be parsed. + + + + + Get property info + + object which could have property + property name on + result when success. + success. + + + + Try parse of string to (Generic) list, comma separated. + + + If there is a comma in the value, then (single) quote the value. For single quotes, use the backslash as escape + + + + + Attempt to reuse the HashSet.Comparer from the original HashSet-object (Ex. StringComparer.OrdinalIgnoreCase) + + + + + Try get the property + + + + + Reflection helpers. + + + + + Gets all usable exported types from the given assembly. + + Assembly to scan. + Usable types from the given assembly. + Types which cannot be loaded are skipped. + + + + Is this a static class? + + + + This is a work around, as Type doesn't have this property. + From: https://stackoverflow.com/questions/1175888/determine-if-a-type-is-static + + + + + Optimized delegate for calling MethodInfo + + Object instance, use null for static methods. + Complete list of parameters that matches the method, including optional/default parameters. + + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Controls a single allocated AsyncLogEventInfo-List for reuse (only one active user) + + + + + Controls a single allocated char[]-buffer for reuse (only one active user) + + + + + Controls a single allocated StringBuilder for reuse (only one active user) + + + + + Controls a single allocated object for reuse (only one active user) + + + + Empty handle when is disabled + + + + Creates handle to the reusable char[]-buffer for active usage + + Handle to the reusable item, that can release it again + + + + Access the acquired reusable object + + + + + Controls a single allocated MemoryStream for reuse (only one active user) + + + + + Supported operating systems. + + + If you add anything here, make sure to add the appropriate detection + code to + + + + + Unknown operating system. + + + + + Unix/Linux operating systems. + + + + + Desktop versions of Windows (95,98,ME). + + + + + Windows NT, 2000, 2003 and future versions based on NT technology. + + + + + Macintosh Mac OSX + + + + + Simple character tokenizer. + + + + + Initializes a new instance of the class. + + The text to be tokenized. + + + + Current position in + + + + + Full text to be parsed + + + + + Check current char while not changing the position. + + + + + + Read the current char and change position + + + + + + Get the substring of the + + + + + + + + Implements a single-call guard around given continuation function. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + + + + Continuation function which implements the single-call guard. + + The exception. + + + + HashSet optimized for single item + + + + + + Insert single item on scope start, and remove on scope exit + + Item to insert in scope + Existing hashset to update + Force allocation of real hashset-container + HashSet EqualityComparer + + + + Add item to collection, if it not already exists + + Item to insert + + + + Clear hashset + + + + + Check if hashset contains item + + + Item exists in hashset (true/false) + + + + Remove item from hashset + + + Item removed from hashset (true/false) + + + + Copy items in hashset to array + + Destination array + Array offset + + + + Create hashset enumerator + + Enumerator + + + + Provides helpers to sort log events and associated continuations. + + + + + Key selector delegate. + + The type of the value. + The type of the key. + Value to extract key information from. + Key selected from log event. + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + The key comparer function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Single-Bucket optimized readonly dictionary. Uses normal internally Dictionary if multiple buckets are needed. + + Avoids allocating a new dictionary, when all items are using the same bucket + + The type of the key. + The type of the value. + + + + + + + + + + + + + + + + Allows direct lookup of existing keys. If trying to access non-existing key exception is thrown. + Consider to use instead for better safety. + + Key value for lookup + Mapped value found + + + + Non-Allocating struct-enumerator + + + + + + + + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + + + + Will always throw, as dictionary is readonly + + + + Utilities for dealing with values. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + + + + Returns the assembly from the provided StackFrame (If not internal assembly) + + Valid assembly, or null if assembly was internal + + + + Returns the classname from the provided StackFrame (If not from internal assembly) + + + Valid class name, or empty string if assembly was internal + + + + Stream helpers + + + + + Copy to output stream and skip BOM if encoding is UTF8 + + + + + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + .net35 doesn't have a .copyto + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + first bytes to skip (optional) + + + + Helpers for , which is used in e.g. layout renderers. + + + + + Renders the specified log event context item and appends it to the specified . + + append to this + value to be appended + format string. If @, then serialize the value with the Default JsonConverter. + provider, for example culture + + + + Appends int without using culture, and most importantly without garbage + + + value to append + + + + Appends uint without using culture, and most importantly without garbage + + Credits Gavin Pugh - https://www.gavpugh.com/2010/04/01/xnac-avoiding-garbage-when-working-with-stringbuilder/ + + + value to append + + + + Convert DateTime into UTC and format to yyyy-MM-ddTHH:mm:ss.fffffffZ - ISO 6801 date (Round-Trip-Time) + + + + + Clears the provider StringBuilder + + + + + + Copies the contents of the StringBuilder to the MemoryStream using the specified encoding (Without BOM/Preamble) + + StringBuilder source + MemoryStream destination + Encoding used for converter string into byte-stream + Helper char-buffer to minimize memory allocations + + + + Copies the contents of the StringBuilder to the destination StringBuilder + + StringBuilder source + StringBuilder destination + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle character to search for + + Index of the first occurrence (Else -1) + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle characters to search for + + Index of the first occurrence (Else -1) + + + + Compares the contents of two StringBuilders + + + Correct implementation of that also works when is not the same + + True when content is the same + + + + Compares the contents of a StringBuilder and a String + + True when content is the same + + + + Append a number and pad with 0 to 2 digits + + append to this + the number + + + + Append a number and pad with 0 to 4 digits + + append to this + the number + + + + Append a int type (byte, int) as string + + + + + Constructor + + Max number of items + Initial StringBuilder Size + Max StringBuilder Size + + + + Takes StringBuilder from pool + + Allow return to pool + + + + Releases StringBuilder back to pool at its right place + + + + + Keeps track of acquired pool item + + + + + Releases pool item back into pool + + + + + Helpers for . + + + + + IsNullOrWhiteSpace, including for .NET 3.5 + + + + + + + Split a string + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Represents target with a chain of filters which determine + whether logging should happen. + + + + + cached result as calculating is expensive. + + + + + Initializes a new instance of the class. + + The target. + The filter chain. + Default action if none of the filters match. + + + + Gets the target. + + The target. + + + + Gets the filter chain. + + The filter chain. + + + + Default action if none of the filters match. + + + + + Gets or sets the next item in the chain. + + The next item in the chain. + This is for example the 'target2' logger in writeTo='target1,target2' + + + + Gets the stack trace usage. + + A value that determines stack trace handling. + + + + Helper for dealing with thread-local storage. + + + + + Allocates the data slot for storing thread-local information. + + Allocated slot key. + + + + Gets the data for a slot in thread-local storage. + + Type of the data. + The slot to get data for. + Automatically create the object if it doesn't exist. + + Slot data (will create T if null). + + + + + Wraps with a timeout. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + The timeout. + + + + Continuation function which implements the timeout logic. + + The exception. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Transformation on a layout. Pre-calculated if the layout has a fixed value. + + + + + Create TransformedLayout. + + Layout + Transformation method + Optional renderer, otherwise is used + + + + + + + Create TransformedLayout. If is null, then the returns null + + Layout + Transformation method + Optional renderer, otherwise is used + null if is null + + + + + + + + + + URL Encoding helper. + + + + Allow UnreservedMarks instead of ReservedMarks, as specified by chosen RFC + + + Use RFC2396 standard (instead of RFC3986) + + + Should use lowercase when doing HEX escaping of special characters + + + Replace space ' ' with '+' instead of '%20' + + + Skip UTF8 encoding, and prefix special characters with '%u' + + + + Escape unicode string data for use in http-requests + + unicode string-data to be encoded + target for the encoded result + s for how to perform the encoding + + + + Convert the wide-char into utf8-bytes, and then escape + + + + + + + + + Is allowed? + + + + + + + + Is a-z / A-Z / 0-9 + + + + + + + Prevents the Xamarin linker from linking the target. + + + By applying this attribute all of the members of the target will be kept as if they had been referenced by the code. + + + + + Ensures that all members of this type are preserved + + + + + Flags the method as a method to preserve during linking if the container class is pulled in. + + + + + Helper class for XML + + + + + removes any unusual unicode characters that can't be encoded into XML + + + + + Pretest, small text and not escape needed + + + + + + + + Converts object value to invariant format, and strips any invalid xml-characters + + Object value + Object value converted to string + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object value converted to string + + + + XML elements must follow these naming rules: + - Element names are case-sensitive + - Element names must start with a letter or underscore + - Element names can contain letters, digits, hyphens, underscores, and periods + - Element names cannot contain spaces + + + + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object TypeCode + Check and remove unusual unicode characters from the result string. + Object value converted to string + + + + Safe version of WriteAttributeString + + + + + + + + + + Safe version of WriteAttributeString + + + + + + + + Safe version of WriteElementSafeString + + + + + + + + + + Safe version of WriteCData + + + + + + + Interface for handling object transformation + + + + + Takes a dangerous (or massive) object and converts into a safe (or reduced) object + + + Null if unknown object, or object cannot be handled + + + + + Provides an interface to execute System.Actions without surfacing any exceptions raised for that action. + + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Logs an exception is logged at Error level if the provided task does not run to completion. + + The task for which to log an error if it does not run to completion. + This method is useful in fire-and-forget situations, where application logic does not depend on completion of task. This method is avoids C# warning CS4014 in such situations. + + + + Returns a task that completes when a specified task to completes. If the task does not run to completion, an exception is logged at Error level. The returned task always runs to completion. + + The task for which to log an error if it does not run to completion. + A task that completes in the state when completes. + + + + Runs async action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Async action to execute. + A task that completes in the state when completes. + + + + Runs the provided async function and returns its result. If the task does not run to completion, an exception is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Async function to run. + A task that represents the completion of the supplied task. If the supplied task ends in the state, the result of the new task will be the result of the supplied task; otherwise, the result of the new task will be the default value of type . + + + + Runs the provided async function and returns its result. If the task does not run to completion, an exception is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Async function to run. + Fallback value to return if the task does not end in the state. + A task that represents the completion of the supplied task. If the supplied task ends in the state, the result of the new task will be the result of the supplied task; otherwise, the result of the new task will be the fallback value. + + + + Render a message template property to a string + + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Log event context data. + + + + + Initializes a new instance of the class. + + + + + Gets or sets string that will be used to separate key/value pairs. + + + + + + Get or set if empty values should be included. + + A value is empty when null or in case of a string, null or empty string. + + + + + + Gets or sets the keys to exclude from the output. If omitted, none are excluded. + + + + + + Also render the caller information attributes? (, + , ). + + See https://msdn.microsoft.com/en-us/library/hh534540.aspx + + + + + + Gets or sets how key/value pairs will be formatted. + + + + + + Renders all log event's properties and appends them to the specified . + + The to append the rendered data to. + Logging event. + + + + The names of caller information attributes. + , , ). + https://msdn.microsoft.com/en-us/library/hh534540.aspx + TODO NLog ver. 5 - Remove these properties + + + + + Designates a property of the class as an ambient property. + + + non-ambient: ${uppercase:${level}} + ambient : ${level:uppercase} + + + + + Initializes a new instance of the class. + + Ambient property name. + + + + Used to render the application domain name. + + + + + Create a new renderer + + + + + Create a new renderer + + + + + Format string. Possible values: "Short", "Long" or custom like {0} {1}. Default "Long" + The first parameter is the , the second the second the + This string is used in + + + + + + + + + + + + + + + Renders the assembly version information for the entry assembly or a named assembly. + + + As this layout renderer uses reflection and version information is unlikely to change during application execution, + it is recommended to use it in conjunction with the . + + + The entry assembly can't be found in some cases e.g. ASP.NET, unit tests, etc. + + + + + Initializes a new instance of the class. + + + + + The (full) name of the assembly. If null, using the entry assembly. + + + + + + Gets or sets the type of assembly version to retrieve. + + + Some version type and platform combinations are not fully supported. + - UWP earlier than .NET Standard 1.5: Value for is always returned unless the parameter is specified. + - Silverlight: Value for is always returned. + + + + + + Gets or sets the custom format of the assembly version output. + + + Supported placeholders are 'major', 'minor', 'build' and 'revision'. + The default .NET template for version numbers is 'major.minor.build.revision'. See + https://docs.microsoft.com/en-gb/dotnet/api/system.version?view=netframework-4.7.2#remarks + for details. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders an assembly version and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets the assembly specified by , or entry assembly otherwise + + Found assembly + + + + Type of assembly version to retrieve. + + + + + Gets the assembly version. + + + + + Gets the file version. + + + + + Gets additional version information. + + + + + The current application domain's base directory. + + + + + cached + + + + + Use base dir of current process. Alternative one can just use ${processdir} + + + + + + Fallback to the base dir of current process, when AppDomain.BaseDirectory is Temp-Path (.NET Core 3 - Single File Publish) + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the base directory. + + + + + + Renders the application base directory and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site source file name. Full callsite + + + + + Gets or sets a value indicating whether to include source file path. + + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + + + + + + The call site (class name, method name and source information). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to render the class name. + + + + + + Gets or sets a value indicating whether to render the include the namespace with . + + + + + + Gets or sets a value indicating whether to render the method name. + + + + + + Gets or sets a value indicating whether the method name will be cleaned up if it is detected as an anonymous delegate. + + + + + + Gets or sets a value indicating whether the method and class names will be cleaned up if it is detected as an async continuation + (everything after an await-statement inside of an async method). + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets a value indicating whether to render the source file name and line number. + + + + + + Gets or sets a value indicating whether to include source file path. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site source line number. Full callsite + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + + + + + + A counter value (increases on each layout rendering). + + + + + Gets or sets the initial value of the counter. + + + + + + Gets or sets the value to be added to the counter after each layout rendering. + + + + + + Gets or sets the name of the sequence. Different named sequences can have individual values. + + + + + + + + + The current working directory of the application. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the current directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the current directory. + + + + + + + + + + + + Current date and time. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the date format. Can be any argument accepted by DateTime.ToString(format). + + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + + + + + + + + + + DB null for a database + + + + + + + + + + + The OS dependent directory separator + + + + + + + + + + + The environment variable. + + + + + Gets or sets the name of the environment variable. + + + + + + Gets or sets the default value to be used when the environment variable is not set. + + + + + + + + + + + + Log event context data. + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the name of the item. + + + + + + Renders the specified log event context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Log event context data. See . + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + + + + + + + + + + Exception information provided through + a call to one of the Logger.*Exception() methods. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the format of the output. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + + + Gets or sets the format of the output of inner exceptions. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + Gets or sets the separator used to concatenate parts specified in the Format. + + + + + + Gets or sets the separator used to concatenate exception data specified in the Format. + + + + + + Gets or sets the maximum number of inner exceptions to include in the output. + By default inner exceptions are not enabled for compatibility with NLog 1.0. + + + + + + Gets or sets the separator between inner exceptions. + + + + + + Gets or sets whether to render innermost Exception from + + + + + Gets the formats of the output of inner exceptions to be rendered in target. + + + + + + + Gets the formats of the output to be rendered in target. + + + + + + + + + + + + + Appends the Message of an Exception to the specified . + + The to append the rendered data to. + The exception containing the Message to append. + + + + Appends the method name from Exception's stack trace to the specified . + + The to append the rendered data to. + The Exception whose method name should be appended. + + + + Appends the stack trace from an Exception to the specified . + + The to append the rendered data to. + The Exception whose stack trace should be appended. + + + + Appends the result of calling ToString() on an Exception to the specified . + + The to append the rendered data to. + The Exception whose call to ToString() should be appended. + + + + Appends the type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose type should be appended. + + + + Appends the short type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose short type should be appended. + + + + Appends the application source of an Exception to the specified . + + The to append the rendered data to. + The Exception whose source should be appended. + + + + Appends the HResult of an Exception to the specified . + + The to append the rendered data to. + The Exception whose HResult should be appended. + + + + Appends the contents of an Exception's Data property to the specified . + + The to append the rendered data to. + The Exception whose Data property elements should be appended. + + + + Appends all the serialized properties of an Exception into the specified . + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Appends all the additional properties of an Exception like Data key-value-pairs + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Split the string and then compile into list of Rendering formats. + + + + + Find name of method on stracktrace. + + Full stracktrace + + + + + Renders contents of the specified file. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file. + + + + + + Gets or sets the encoding used in the file. + + The encoding. + + + + + Renders the contents of the specified file and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + Name used in config without ${}. E.g. "test" could be used as "${test}". + + + + + Method that renders the layout. + + + + + Format string for conversion from object to string. + + + + + + + + + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + The information about the garbage collector. + + + + + Gets or sets the property to retrieve. + + + + + + + + + Gets or sets the property of System.GC to retrieve. + + + + + Total memory allocated. + + + + + Total memory allocated (perform full garbage collection first). + + + + + Gets the number of Gen0 collections. + + + + + Gets the number of Gen1 collections. + + + + + Gets the number of Gen2 collections. + + + + + Maximum generation number supported by GC. + + + + + Render a Global Diagnostics Context item. See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + + + + Globally-unique identifier (GUID). + + + + + Gets or sets the GUID format as accepted by Guid.ToString() method. + + + + + + Generate the Guid from the NLog LogEvent (Will be the same for all targets) + + + + + + + + + + + + + + + The host name that the process is running on. + + + + + + + + Gets the host name and falls back to computer name if not available + + + + + Tries the lookup value. + + The lookup function. + Type of the lookup. + + + + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Gets or sets the name of the parameter. + + + + + + Renders the specified installation parameter and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render environmental information related to logging events. + + + + + Gets the logging configuration this target is part of. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Renders the the value of layout renderer in the context of the specified log event. + + The log event. + String representation of a layout renderer. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Renders the value of layout renderer in the context of the specified log event. + + The log event. + The layout render output is appended to builder + + + + Renders the value of layout renderer in the context of the specified log event into . + + The to append the rendered data to. + Logging event. + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Get the for rendering the messages to a + + LogEvent with culture + Culture in on Layout level + + + + + Get the for rendering the messages to a , needed for date and number formats + + LogEvent with culture + Culture in on Layout level + + + is preferred + + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Marks class as a layout renderer and assigns a name to it. + + This attribute is not required when registering the layout in the API. + + + + Initializes a new instance of the class. + + Name of the layout renderer, without the `${ }` + + + + Format of the ${level} layout renderer output. + + + + + Render the LogLevel standard name. + + + + + Render the first character of the level. + + + + + Render the ordinal (aka number) for the level. + + + + + Render the LogLevel full name, expanding Warn / Info abbreviations + + + + + The log level. + + + + + Gets or sets a value indicating the output format of the level. + + + + + + + + + + + + + + + A string literal. + + + This is used to escape '${' sequence + as ;${literal:text=${}' + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The literal text value. + This is used by the layout compiler. + + + + Gets or sets the literal text. + + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes the layout renderer. + + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets a value indicating whether the XML should use spaces for indentation. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDLC item separator. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the XML logging event and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The logger name. + + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + + + + + + + The date and time in a long, sortable format yyyy-MM-dd HH:mm:ss.ffff. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the date in the long format (yyyy-MM-dd HH:mm:ss.ffff) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The machine name that the process is running on. + + + + + + + + + + + Render a Mapped Diagnostic Context item, See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + Render a Mapped Diagnostic Logical Context item (based on CallContext). + See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + The formatted log message. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to log exception along with message. + + + + + + Gets or sets the string that separates message from the exception. + + + + + + Gets or sets whether it should render the raw message without formatting parameters + + + + + + + + + + + + Render a Nested Diagnostic Context item. + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested diagnostics context output. + + + + + + Renders the specified Nested Diagnostics Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render a Nested Diagnostic Logical Context item (Async scope) + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested logical context output. + + + + + + Renders the specified Nested Logical Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Timing Renderer (Async scope) + + + + + Gets or sets whether to only include the duration of the last scope created + + + + + + Gets or sets whether to just display the scope creation time, and not the duration + + + + + + Gets or sets the TimeSpan format. Can be any argument accepted by TimeSpan.ToString(format). + + + + + + Renders the timing details of the Nested Logical Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A newline literal. + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The directory where NLog.dll is located. + + + + + Initializes static members of the NLogDirLayoutRenderer class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The executable directory from the FileName, + using the current process + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the process directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the process directory. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + The identifier of the current process. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + + + + The information about the running process. + + + + + Gets or sets the property to retrieve. + + + + + + Gets or sets the format-string to use if the property supports it (Ex. DateTime / TimeSpan / Enum) + + + + + + + + + + + + + + + Property of System.Diagnostics.Process to retrieve. + + + + + Base Priority. + + + + + Exit Code. + + + + + Exit Time. + + + + + Process Handle. + + + + + Handle Count. + + + + + Whether process has exited. + + + + + Process ID. + + + + + Machine name. + + + + + Handle of the main window. + + + + + Title of the main window. + + + + + Maximum Working Set. + + + + + Minimum Working Set. + + + + + Non-paged System Memory Size. + + + + + Non-paged System Memory Size (64-bit). + + + + + Paged Memory Size. + + + + + Paged Memory Size (64-bit).. + + + + + Paged System Memory Size. + + + + + Paged System Memory Size (64-bit). + + + + + Peak Paged Memory Size. + + + + + Peak Paged Memory Size (64-bit). + + + + + Peak Virtual Memory Size. + + + + + Peak Virtual Memory Size (64-bit).. + + + + + Peak Working Set Size. + + + + + Peak Working Set Size (64-bit). + + + + + Whether priority boost is enabled. + + + + + Priority Class. + + + + + Private Memory Size. + + + + + Private Memory Size (64-bit). + + + + + Privileged Processor Time. + + + + + Process Name. + + + + + Whether process is responding. + + + + + Session ID. + + + + + Process Start Time. + + + + + Total Processor Time. + + + + + User Processor Time. + + + + + Virtual Memory Size. + + + + + Virtual Memory Size (64-bit). + + + + + Working Set Size. + + + + + Working Set Size (64-bit). + + + + + The name of the current process. + + + + + Gets or sets a value indicating whether to write the full path to the process executable. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Renders the current process name (optionally with a full path). + + The to append the rendered data to. + Logging event. + + + + The process time in format HH:mm:ss.mmm. + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + Write timestamp to builder with format hh:mm:ss:fff + + + + + The sequence ID + + + + + + + + + + + The short date in a sortable format yyyy-MM-dd. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the current short date string (yyyy-MM-dd) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Format of the ${stacktrace} layout renderer output. + + + + + Raw format (multiline - as returned by StackFrame.ToString() method). + + + + + Flat format (class and method names displayed in a single line). + + + + + Detailed flat format (method signatures displayed in a single line). + + + + + Stack trace renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the output format of the stack trace. + + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets the stack frame separator string. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A temporary directory. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The identifier of the current thread. + + + + + + + + The name of the current thread. + + + + + + + + The Ticks value of current date and time. + + + + + + + + + + + The time in a 24-hour, sortable format HH:mm:ss.mmmm. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + Render a NLog variable (xml or config) + + + + + Gets or sets the name of the NLog variable. + + + + + + Gets or sets the default value to be used when the variable is not set. + + Not used if Name is null + + + + + Initializes the layout renderer. + + + + + Try get the + + + + + + + Renders the specified variable and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Applies caching to another layout output. + + + The value of the inner layout will be rendered only once and reused subsequently. + + + + + A value indicating when the cache is cleared. + + + + Never clear the cache. + + + Clear the cache whenever the is initialized. + + + Clear the cache whenever the is closed. + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether this is enabled. + + + + + + Gets or sets a value indicating when the cache is cleared. + + + + + + Cachekey. If the cachekey changes, resets the value. For example, the cachekey would be the current day.s + + + + + + Gets or sets a value indicating how many seconds the value should stay cached until it expires + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + + + + Filters characters not allowed in the file names by replacing them with safe character. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to modify the output of this renderer so it can be used as a part of file path + (illegal characters are replaced with '_'). + + + + + + + + + + + + Escapes output of another layout using JSON rules. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply JSON encoding. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + + + + + + + Left part of a text + + + + + Gets or sets the length in characters. + + + + + + Same as -property, so it can be used as ambient property. + + + ${message:truncate=80} + + + + + + + + + + + + Converts the result of another layout output to lower case. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Render the non-raw value of an object. + + For performance and/or full (formatted) control of the output. + + + + Gets or sets a value indicating whether to disable the IRawValue-interface + + A value of true if IRawValue-interface should be ignored; otherwise, false. + + + + + + + + + + + Render a single property of a object + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + Shortcut for + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + Only outputs the inner layout when exception has been defined for log message. + + + + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + ${onhasproperties:, Properties\: ${all-event-properties}} + + + + + + + + + + + Horizontal alignment for padding layout renderers. + + + + + When layout text is too long, align it to the left + (remove characters from the right). + + + + + When layout text is too long, align it to the right + (remove characters from the left). + + + + + Applies padding to another layout output. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of characters to pad the output to. + + + Positive padding values cause left padding, negative values + cause right padding to the desired width. + + + + + + Gets or sets the padding character. + + + + + + Gets or sets a value indicating whether to trim the + rendered text to the absolute value of the padding length. + + + + + + Gets or sets a value indicating whether a value that has + been truncated (when is true) + will be left-aligned (characters removed from the right) + or right-aligned (characters removed from the left). The + default is left alignment. + + RegistryLayoutRenderer + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Replaces a string in the output of another layout with another string. + + + ${replace:searchFor=\\n+:replaceWith=-:regex=true:inner=${message}} + + + + + Gets or sets the text to search for. + + The text search for. + + + + + Gets or sets a value indicating whether regular expressions should be used. + + A value of true if regular expressions should be used otherwise, false. + + + + + Gets or sets the replacement string. + + The replacement string. + + + + + Gets or sets the group name to replace when using regular expressions. + Leave null or empty to replace without using group name. + + The group name. + + + + + Gets or sets a value indicating whether to ignore case. + + A value of true if case should be ignored when searching; otherwise, false. + + + + + Gets or sets a value indicating whether to search for whole words. + + A value of true if whole words should be searched for; otherwise, false. + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Initializes the layout renderer. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + This class was created instead of simply using a lambda expression so that the "ThreadAgnosticAttributeTest" will pass + + + + + A match evaluator for Regular Expression based replacing + + Input string. + Group name in the regex. + Replace value. + Match from regex. + Groups replaced with . + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating the string that should be used for separating lines. + + + + + + + + + + + + Right part of a text + + + + + Gets or sets the length in characters. + + + + + + + + + + + + Decodes text "encrypted" with ROT-13. + + + See https://en.wikipedia.org/wiki/ROT13. + + + + + Gets or sets the layout to be wrapped. + + The layout to be wrapped. + This variable is for backwards compatibility + + + + + Encodes/Decodes ROT-13-encoded string. + + The string to be encoded/decoded. + Encoded/Decoded text. + + + + + + + + + + Encodes/Decodes ROT-13-encoded string. + + + + + Substring the result + + + ${substring:${level}:start=2:length=2} + ${substring:${level}:start=-2:length=2} + ${substring:Inner=${level}:start=2:length=2} + + + + + Initializes a new instance of the class. + + + + + Gets or sets the start index. + + Index + + + + + Gets or sets the length in characters. If null, then the whole string + + Index + + + + + + + + + + + Calculate start position + + 0 or positive number + + + + Calculate needed length + + 0 or positive number + + + + Trims the whitespace from the result of another layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + + + + + + + Converts the result of another layout output to upper case. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + ${level:uppercase} // [AmbientProperty] + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether upper case conversion should be applied. + + A value of true if upper case conversion should be applied otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Encodes the result of another layout output for use with URLs. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether spaces should be translated to '+' or '%20'. + + A value of true if space should be translated to '+'; otherwise, false. + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + + + Gets or sets the layout to be rendered when original layout produced empty result. + + + + + + + + + + + + + + + Only outputs the inner layout when the specified condition has been met. + + + + + Gets or sets the condition that must be met for the layout to be printed. + + + + + + If is not met, print this layout. + + + + + + + + + + + + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the line length for wrapping. + + + Only positive values are allowed + + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + Base class for s which wrapping other s. + + This has the property (which is default) and can be used to wrap. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + + + + + Gets or sets the wrapped layout. + + [DefaultParameter] so Inner: is not required if it's the first + + + + + + + + + Renders the inner message, processes it and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Appends the rendered output from -layout and transforms the added output (when necessary) + + Logging event. + The to append the rendered data to. + Start position for any necessary transformation of . + + + + Transforms the output of another layout. + + Logging event. + Output to be transform. + Transformed text. + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + Base class for s which wrapping other s. + + This expects the transformation to work on a + + + + + + + + Transforms the output of another layout. + + + Output to be transform. + + + + Transforms the output of another layout. + + Output to be transform. + + + + Renders the inner layout contents. + + + for the result + + + + + + + + + + + + + + + + + + Converts the result of another layout output to be XML-compliant. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply XML encoding. + + Ensures always valid XML, but gives a performance hit + + + + + Gets or sets a value indicating whether to transform newlines (\r\n) into ( ) + + + + + + + + + + + + A layout containing one or more nested layouts. + + + + + Initializes a new instance of the class. + + + + + Gets the inner layouts. + + + + + + Initializes the layout. + + + + + Formats the log event relying on inner layouts. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event relying on inner layouts. + + The logging event. + for the result + + + + Closes the layout. + + + + + Generate description of Compound Layout + + Compound Layout String Description + + + + A column in the CSV. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the column. + The layout of the column. + + + + Gets or sets the name of the column. + + + + + + Gets or sets the layout of the column. + + + + + + Gets or sets the override of Quoting mode + + + and are faster than the default + + + + + + Specifies allowed column delimiters. + + + + + Automatically detect from regional settings. + + + + + Comma (ASCII 44). + + + + + Semicolon (ASCII 59). + + + + + Tab character (ASCII 9). + + + + + Pipe character (ASCII 124). + + + + + Space character (ASCII 32). + + + + + Custom string, specified by the CustomDelimiter. + + + + + A specialized layout that renders CSV-formatted events. + + If is set, then the header generation with column names will be disabled. + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + Gets or sets a value indicating whether CVS should include header. + + A value of true if CVS should include header; otherwise, false. + + + + + Gets or sets the column delimiter. + + + + + + Gets or sets the quoting mode. + + + + + + Gets or sets the quote Character. + + + + + + Gets or sets the custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). + + + + + + Initializes the layout. + + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event for write. + + The logging event. + for the result + + + + Get the headers with the column names. + + + + + + Header with column names for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Generate description of CSV Layout + + CSV Layout String Description + + + + Specifies CSV quoting modes. + + + + + Quote all column (Fast) + + + + + Quote nothing (Very fast) + + + + + Quote only whose values contain the quote symbol or the separator (Slow) + + + + + JSON attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with json-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Json encoded. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A specialized layout that renders JSON-formatted events. + + + + + Initializes a new instance of the class. + + + + + Gets the array of attributes' configurations. + + + + + + Gets or sets the option to suppress the extra spaces in the output json + + + + + + Gets or sets the option to render the empty object value {} + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as JSON) + + + + + + List of property names to exclude when is true + + + + + + How far should the JSON serializer follow object references before backing off + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Formats the log event as a JSON document for writing. + + The logging event. + for the result + + + + Formats the log event as a JSON document for writing. + + The log event to be formatted. + A JSON string representation of the log event. + + + + Generate description of JSON Layout + + JSON Layout String Description + + + + Abstract interface that layouts must implement. + + + + + Is this layout initialized? See + + + + + Gets a value indicating whether this layout is thread-agnostic (can be rendered on any thread). + + + Layout is thread-agnostic if it has been marked with [ThreadAgnostic] attribute and all its children are + like that as well. + + Thread-agnostic layouts only use contents of for its output. + + + + + Gets the level of stack trace information required for rendering. + + + + + Gets the logging configuration this target is part of. + + + + + Converts a given text to a . + + Text to be converted. + object represented by the text. + + + + Implicitly converts the specified string to a . + + The layout string. + Instance of .' + + + + Implicitly converts the specified string to a . + + The layout string. + The NLog factories to use when resolving layout renderers. + Instance of . + + + + Implicitly converts the specified string to a . + + The layout string. + Whether should be thrown on parse errors (false = replace unrecognized tokens with a space). + Instance of . + + + + Create a from a lambda method. + + Method that renders the layout. + Tell if method is safe for concurrent threading. + Instance of . + + + + Precalculates the layout for the specified log event and stores the result + in per-log event cache. + + Only if the layout doesn't have [ThreadAgnostic] and doesn't contain layouts with [ThreadAgnostic]. + + The log event. + + Calling this method enables you to store the log event in a buffer + and/or potentially evaluate it in another thread even though the + layout may contain thread-dependent renderer. + + + + + Renders the event info in layout. + + The event info. + String representing log event. + + + + Optimized version of for internal Layouts. Works best + when override of is available. + + The event info. + Appends the string representing log event to target + Should rendering result be cached on LogEventInfo + + + + Valid default implementation of , when having implemented the optimized + + The logging event. + StringBuilder to help minimize allocations [optional]. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Optimized version of for internal Layouts, when + override of is available. + + + + + Try get value + + + rawValue if return result is true + false if we could not determine the rawValue + + + + Marks class as a layout renderer and assigns a format string to it. + + + + + Initializes a new instance of the class. + + Layout name. + + + + Parses layout strings. + + + + + Add to + + + + + + + Options available for + + + + + Default options + + + + + Layout renderer method can handle concurrent threads + + + + + Layout renderer method is agnostic to current thread context. This means it will render the same result indepdent of thread-context. + + + + + A specialized layout that supports header and footer. + + + + + Gets or sets the body layout (can be repeated multiple times). + + + + + + Gets or sets the header layout. + + + + + + Gets or sets the footer layout. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result. + + + + A specialized layout that renders Log4j-compatible XML events. + + + This layout is not meant to be used explicitly. Instead you can use ${log4jxmlevent} layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets the instance that renders log events. + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Represents a string with embedded placeholders that can render contextual information. + + + This layout is not meant to be used explicitly. Instead you can just use a string containing layout + renderers everywhere the layout is required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout string to parse. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + Whether should be thrown on parse errors. + + + + Original text before compile to Layout renderes + + + + + Gets or sets the layout text. + + + + + + Is the message fixed? (no Layout renderers used) + + + + + Get the fixed text. Only set when is true + + + + + Is the message a simple formatted string? (Can skip StringBuilder) + + + + + Gets a collection of objects that make up this layout. + + + + + Gets the level of stack trace information required for rendering. + + + + + Converts a text to a simple layout. + + Text to be converted. + A object. + + + + Escapes the passed text so that it can + be used literally in all places where + layout is normally expected without being + treated as layout. + + The text to be escaped. + The escaped text. + + Escaping is done by replacing all occurrences of + '${' with '${literal:text=${}' + + + + + Evaluates the specified text by expanding all layout renderers. + + The text to be evaluated. + Log event to be used for evaluation. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Evaluates the specified text by expanding all layout renderers + in new context. + + The text to be evaluated. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Returns a that represents the current object. + + + A that represents the current object. + + + + + + + + + + + + + + + + + + + + XML attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with xml-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A XML Element + + + + + + + + + + + Name of the element + + + + + + Value inside the element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + The name of the top XML node + The value of the top XML node + + + + Name of the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Value inside the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Auto indent and create new lines + + + + + + Gets the array of xml 'elements' configurations. + + + + + + Gets the array of 'attributes' configurations for the element + + + + + + Gets or sets whether a ElementValue with empty value should be included in the output + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as XML) + + + + + + List of property names to exclude when is true + + + + + + XML element name to use when rendering properties + + + Support string-format where {0} means property-key-name + + Skips closing element tag when having configured + + + + + + XML attribute name to use when rendering property-key + + When null (or empty) then key-attribute is not included + + + Will replace newlines in attribute-value with + + + + + + XML attribute name to use when rendering property-value + + When null (or empty) then value-attribute is not included and + value is formatted as XML-element-value + + + Skips closing element tag when using attribute for value + + Will replace newlines in attribute-value with + + + + + + XML element name to use for rendering IList-collections items + + + + + + How far should the XML serializer follow object references before backing off + + + + + + Initializes the layout. + + + + + Formats the log event as a XML document for writing. + + The logging event. + for the result + + + + Formats the log event as a XML document for writing. + + The log event to be formatted. + A XML string representation of the log event. + + + + write attribute, only if is not empty + + + + + rendered + + + + Generate description of XML Layout + + XML Layout String Description + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + + + + + + + Name of the root XML element + + + + + + Value inside the root XML element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Represents the logging event. + + + + + Gets the date of the first log event created. + + + + + The formatted log message. + + + + + The log message including any parameter placeholders + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + Exception information. + + + + Gets the unique identifier of log event which is automatically generated + and monotonously increasing. + + + + + Gets or sets the timestamp of the logging event. + + + + + Gets or sets the level of the logging event. + + + + + Gets a value indicating whether stack trace has been set for this event. + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Gets the entire stack trace. + + + + + Gets the callsite class name + + + + + Gets the callsite member function name + + + + + Gets the callsite source file path + + + + + Gets the callsite source file line number + + + + + Gets or sets the exception information. + + + + + Gets or sets the logger name. + + + + + Gets the logger short name. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the log message including any parameter placeholders. + + + + + Gets or sets the parameter values or null if no parameters have been specified. + + + + + Gets or sets the format provider that was provided while logging or + when no formatProvider was specified. + + + + + Gets or sets the message formatter for generating + Uses string.Format(...) when nothing else has been configured. + + + + + Gets the formatted message. + + + + + Checks if any per-event properties (Without allocation) + + + + + Gets the dictionary of per-event context properties. + + + + + Gets the dictionary of per-event context properties. + Internal helper for the PropertiesDictionary type. + + Create the event-properties dictionary, even if no initial template parameters + Provided when having parsed the message template and capture template parameters (else null) + + + + + Gets the named parameters extracted from parsing as MessageTemplate + + + + + Gets the dictionary of per-event context properties. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + The exception. + Instance of . + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates from this by attaching the specified asynchronous continuation. + + The asynchronous continuation. + Instance of with attached continuation. + + + + Returns a string representation of this log event. + + String representation of the log event. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace (Negative means NLog should skip stackframes from System-assemblies). + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Set the + + true = Always, false = Never, null = Auto Detect + + + + Specialized LogFactory that can return instances of custom logger types. + + Use this only when a custom Logger type is defined. + The type of the logger to be returned. Must inherit from . + + + + Gets the logger with type . + + The logger name. + An instance of . + + + + Gets a custom logger with the full name of the current class (so namespace and class name) and type . + + An instance of . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Overwrite possible file paths (including filename) for possible NLog config files. + When this property is null, the default file paths ( are used. + + + + + Occurs when logging changes. + + + + + Occurs when logging gets reloaded. + + + + + Initializes static members of the LogManager class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The config. + + + + Initializes a new instance of the class. + + The config loader + The custom AppEnvironmnet override + + + + Gets the current . + + + + + Gets or sets a value indicating whether exceptions should be thrown. See also . + + A value of true if exception should be thrown; otherwise, false. + By default exceptions are not thrown under any circumstances. + + + + Gets or sets a value indicating whether should be thrown. + + If null then is used. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. After setting this property all + existing loggers will be re-configured, so there is no need to call + manually. + + + + + Gets or sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets the default culture info to use as . + + + Specific culture info or null to use + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting + unmanaged resources. + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Creates a logger that discards all log messages. + + Null logger instance. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets the logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + The logger with type . + Type of the logger + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The type of the logger to create. The type must inherit from + The logger of type . + This is a slow-running method. Make sure you are not calling this method in a + loop. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + Name of the logger. + Type of the logger + The logger reference with type . Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The type of the logger to create. The type must inherit from . + The logger of type . Multiple calls to GetLogger with the + same argument aren't guaranteed to return the same logger reference. + + + + Loops through all loggers previously returned by GetLogger and recalculates their + target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time + will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flushes any pending log messages on all appenders. + + Config containing Targets to Flush + Flush completed notification (success / timeout) + Optional timeout that guarantees that completed notication is called. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Returns if logging is currently enabled. + + A value of if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Raises the event when the configuration is reloaded. + + Event arguments. + + + + Raises the event when the configuration is reloaded. + + Event arguments + + + + Currently this is disposing? + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Logger cache key. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Determines if two objects are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Determines if two objects of the same type are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Logger cache. + + + + + Inserts or updates. + + + + + + + Internal for unit tests + + + + + Enables logging in implementation. + + + + + Initializes a new instance of the class. + + The factory. + + + + Enables logging. + + + + + Logging methods which only are executed when the DEBUG conditional compilation symbol is set. + + Remarks: + The DEBUG conditional compilation symbol is default enabled (only) in a debug build. + + If the DEBUG conditional compilation symbol isn't set in the calling library, the compiler will remove all the invocations to these methods. + This could lead to better performance. + + See: https://msdn.microsoft.com/en-us/library/4xssyw96%28v=vs.90%29.aspx + + + Provides logging interface and utility functions. + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Initializes a new instance of the class. + + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Collection of context properties for the Logger. The logger will append it for all log events + + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Creates new logger that automatically appends the specified property to all log events (without changing current logger) + + Property Name + Property Value + New Logger object that automatically appends specified property + + + + Updates the specified context property for the current logger. The logger will append it for all log events. + + It could be rendered with ${event-properties:YOURNAME} + + With property, all properties could be changed. + + + Will affect all locations/contexts that makes use of the same named logger object. + + Property Name + Property Value + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Logs an exception is logged at Error level if the provided task does not run to completion. + + The task for which to log an error if it does not run to completion. + This method is useful in fire-and-forget situations, where application logic does not depend on completion of task. This method is avoids C# warning CS4014 in such situations. + + + + Returns a task that completes when a specified task to completes. If the task does not run to completion, an exception is logged at Error level. The returned task always runs to completion. + + The task for which to log an error if it does not run to completion. + A task that completes in the state when completes. + + + + Runs async action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Async action to execute. + + + + Runs the provided async function and returns its result. If the task does not run to completion, an exception is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Async function to run. + A task that represents the completion of the supplied task. If the supplied task ends in the state, the result of the new task will be the result of the supplied task; otherwise, the result of the new task will be the default value of type . + + + + Runs the provided async function and returns its result. If the task does not run to completion, an exception is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Async function to run. + Fallback value to return if the task does not end in the state. + A task that represents the completion of the supplied task. If the supplied task ends in the state, the result of the new task will be the result of the supplied task; otherwise, the result of the new task will be the fallback value. + + + + Raises the event when the logger is reconfigured. + + Event arguments + + + + Implementation of logging engine. + + + + + Gets the filter result. + + The filter chain. + The log event. + default result if there are no filters, or none of the filters decides. + The result of the filter. + + + + Defines available log levels. + + + + + Trace log level. + + + + + Debug log level. + + + + + Info log level. + + + + + Warn log level. + + + + + Error log level. + + + + + Fatal log level. + + + + + Off log level. + + + + + Gets all the available log levels (Trace, Debug, Info, Warn, Error, Fatal, Off). + + + + + Gets all the log levels that can be used to log events (Trace, Debug, Info, Warn, Error, Fatal) + i.e LogLevel.Off is excluded. + + + + + Initializes a new instance of . + + The log level name. + The log level ordinal number. + + + + Gets the name of the log level. + + + + + Gets the ordinal of the log level. + + + + + Compares two objects + and returns a value indicating whether + the first one is equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal == level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is not equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal != level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than the second one. + + The first level. + The second level. + The value of level1.Ordinal > level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal >= level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than the second one. + + The first level. + The second level. + The value of level1.Ordinal < level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal <= level2.Ordinal. + + + + Gets the that corresponds to the specified ordinal. + + The ordinal. + The instance. For 0 it returns , 1 gives and so on. + + + + Returns the that corresponds to the supplied . + + The textual representation of the log level. + The enumeration value. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Determines whether the specified instance is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Compares the level to the other object. + + + The object object. + + + A value less than zero when this logger's is + less than the other logger's ordinal, 0 when they are equal and + greater than zero when this ordinal is greater than the + other ordinal. + + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Delegate used to set/get the culture in use. + + This delegate marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the instance used in the . + + Could be used to pass the to other methods + + + + Occurs when logging changes. + + + + + Occurs when logging gets reloaded. + + + + + Gets or sets a value indicating whether NLog should throw exceptions. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether should be thrown. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Gets or sets the global log threshold. Log events below this threshold are not logged. + + + + + Gets or sets the default culture to use. + + This property was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Adds the given assembly which will be skipped + when NLog is trying to find the calling method on stack trace. + + The assembly to skip. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The logger class. This class must inherit from . + The logger of type . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates a logger that discards all log messages. + + Null logger which discards all log messages. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + + + + Gets the specified named custom logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The logger class. This class must inherit from . + The logger of type . Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + The generic way for this method is + + + + Loops through all loggers previously returned by GetLogger. + and recalculates their target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Checks if logging is currently enabled. + + if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Dispose all targets, and shutdown logging. + + + + + Generates a formatted message from the log event + + Log event. + Formatted message + + + + Returns a log message. Used to defer calculation of + the log message until it's actually needed. + + Log message. + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + + + + + Gets the thread-local dictionary + + Must be true for any subsequent dictionary modification operation + + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The to use when converting a value to a . + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Returns all item names + + A set of the names of all items in current thread-MDC. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified exists in current thread MDC. + + + + Removes the specified from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Async version of Mapped Diagnostics Context - a logical context structure that keeps a dictionary + of strings and provides methods to output them in layouts. Allows for maintaining state across + asynchronous tasks and call contexts. + + + Ideally, these changes should be incorporated as a new version of the MappedDiagnosticsContext class in the original + NLog library so that state can be maintained for multiple threads in asynchronous situations. + + + + + Simulate ImmutableDictionary behavior (which is not yet part of all .NET frameworks). + In future the real ImmutableDictionary could be used here to minimize memory usage and copying time. + + Must be true for any subsequent dictionary modification operation + Prepare dictionary for additional inserts + + + + + Gets the current logical context named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current logical context named item, as . + + Item name. + The to use when converting a value to a string. + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current logical context named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Updates the current logical context with multiple items in single operation + + . + >An that can be used to remove the item from the current logical context (null if no items). + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Returns all item names + + A collection of the names of all items in current logical context. + + + + Checks whether the specified exists in current logical context. + + Item name. + A boolean indicating whether the specified exists in current logical context. + + + + Removes the specified from current logical context. + + Item name. + + + + Clears the content of current logical context. + + + + + Clears the content of current logical context. + + Free the full slot. + + + + Mapped Diagnostics Context + + This class marked as obsolete before NLog 2.0 and it may be removed in a future release. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified item exists in current thread MDC. + + + + Removes the specified item from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Mark a parameter of a method for message templating + + + + + Specifies which parameter of an annotated method should be treated as message-template-string + + + + + The name of the parameter that should be as treated as message-template-string + + + + + The type of the captured hole + + + + + Not decided + + + + + normal {x} + + + + + Serialize operator {@x} (aka destructure) + + + + + stringification operator {$x} + + + + + A hole that will be replaced with a value + + + + + Constructor + + + + Parameter name sent to structured loggers. + This is everything between "{" and the first of ",:}". + Including surrounding spaces and names that are numbers. + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + Type + + + + When the template is positional, this is the parsed name of this parameter. + For named templates, the value of Index is undefined. + + + Alignment to render the parameter, by default 0. + This is the parsed value between "," and the first of ":}" + + + + A fixed value + + + + Number of characters from the original template to copy at the current position. + This can be 0 when the template starts with a hole or when there are multiple consecutive holes. + + + Number of characters to skip in the original template at the current position. + 0 is a special value that mean: 1 escaped char, no hole. It can also happen last when the template ends with a literal. + + + + Combines Literal and Hole + + + + Literal + + + Hole + Uninitialized when = 0. + + + + Description of a single parameter extracted from a MessageTemplate + + + + + Parameter Name extracted from + This is everything between "{" and the first of ",:}". + + + + + Parameter Value extracted from the -array + + + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + + Parameter method that should be used to render the parameter + See also + + + + + Returns index for , when + + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + Parameter CaptureType + + + + Parameters extracted from parsing as MessageTemplate + + + + + + + + + + + Gets the parameters at the given index + + + + + Number of parameters + + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Indicates whether the template was parsed successful, and there are no unmatched parameters + + + + + Constructor for parsing the message template with parameters + + including any parameter placeholders + All + + + + Constructor for named parameters that already has been parsed + + + + + Create MessageTemplateParameter from + + + + + A message template + + + + The original template string. + This is the key passed to structured targets. + + + The list of literal parts, useful for string rendering. + It indicates the number of characters from the original string to print, + then there's a hole with how many chars to skip. + + "Hello {firstName} {lastName}!" + ------------------------------------- + ║P |S ║P|S ║P|S║ + ║6 |11 ║1|10 ║1|0║ + ║Hello |{firstName}║ |{lastName}║!║ + + "{x} * 2 = {2x}" + -------------------- + ║P|S ║P |S ║ + ║0|3 ║7 |4 ║ + ║{x}║ * 2 = |{2x}║ + + The tricky part is escaped braces. They are represented by a skip = 0, + which is interpreted as "move one char forward, no hole". + + "Escaped }} is fun." + ---------------------- + ║P |S║P |S║ + ║9 |0║8 |0║ + ║Escaped }|}║ is fun.|║ + + + + This list of holes. It's used both to fill the string rendering + and to send values along the template to structured targets. + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Create a template, which is already parsed + + + + + + + + + Create a template, which is already parsed + + + + + + + + This is for testing only: recreates from the parsed data. + + + + This is for testing only: rebuilds the hole + + Add to this string builder + ref for performance + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Gets the current literal/hole in the template + + + + + Clears the enumerator + + + + + Restarts the enumerator of the template + + + + + Moves to the next literal/hole in the template + + Found new element [true/false] + + + + Parse format after hole name/index. Handle the escaped { and } in the format. Don't read the last } + + + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Error when parsing a template. + + + + + Current index when the error occurred. + + + + + The template we were parsing + + + + + New exception + + The message to be shown. + Current index when the error occurred. + + + + + Render templates + + + + + Render a template to a string. + + The template. + Culture. + Parameters for the holes. + Do not fallback to StringBuilder.Format for positional templates. + The String Builder destination. + Parameters for the holes. + + + + Render a template to a string. + + The template. + The String Builder destination. + Culture. + Parameters for the holes. + Rendered template, never null. + + + + Convert Render or serialize a value, with optionally backwards-compatible with + + + + Singleton + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Format an object to a readable string, or if it's an object, serialize + + The value to convert + + + + + + + + Try serializing a scalar (string, int, NULL) or simple type (IFormattable) + + + + + Serialize Dictionary as JSON like structure, without { and } + + + "FirstOrder"=true, "Previous login"=20-12-2017 14:55:32, "number of tries"=1 + + + formatstring of an item + + + + + + + + + Convert a value to a string with format and append to . + + The value to convert. + Format sting for the value. + Format provider for the value. + Append to this + + + + Nested Diagnostics Context + + This class marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top object off the NDC stack. The object is removed from the stack. + + The top object from the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all objects on the NDC stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Nested Diagnostics Context - a thread-local structure that keeps a stack + of strings and provides methods to output them in layouts + + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object at the top of the NDC stack if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified object on current thread NDC. + + The object to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top message from the NDC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top object off the NDC stack. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Peeks the first object on the NDC stack + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. + + Array of objects on the stack. + + + + Resets the stack to the original count during . + + + + + Initializes a new instance of the class. + + The stack. + The previous count. + + + + Reverts the stack to original item count. + + + + + Async version of - a logical context structure that keeps a stack + Allows for maintaining scope across asynchronous tasks and call contexts. + + + + + Pushes the specified value on current stack + + The value to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified value on current stack + + The value to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDLC stack. + + The top message which is no longer on the stack. + this methods returns a object instead of string, this because of backwards-compatibility + + + + Pops the top message from the NDLC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top message off the current NDLC stack + + The object from the top of the NDLC stack, if defined; otherwise null. + + + + Peeks the top object on the current NDLC stack + + The object from the top of the NDLC stack, if defined; otherwise null. + + + + Peeks the current scope, and returns its start time + + Scope Creation Time + + + + Peeks the first scope, and returns its start time + + Scope Creation Time + + + + Clears current stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Exception thrown during NLog configuration. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The inner exception. + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Exception thrown during log event processing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + It works as a normal but it discards all messages which an application requests + to be logged. + + It effectively implements the "Null Object" pattern for objects. + + + + + Initializes a new instance of . + + The factory class to be used for the creation of this logger. + + + + Extension methods to setup LogFactory options + + + + + Gets the logger with the full name of the current class, so namespace and class name. + + + + + Gets the specified named logger. + + + + + Configures loading of NLog extensions for Targets and LayoutRenderers + + + + + Configures the output of NLog for diagnostics / troubleshooting + + + + + Configures serialization and transformation of LogEvents + + + + + Loads NLog config created by the method + + + + + Loads NLog config provided in + + + + + Loads NLog config from filename if provided, else fallback to scanning for NLog.config + + + + + Loads NLog config from XML in + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Enable/disables autoloading of NLog extensions by scanning and loading available assemblies + + + Enabled by default, and gives a huge performance hit during startup. Recommended to disable this when running in the cloud. + + + + + Registers NLog extensions from the assembly. + + + + + Registers NLog extensions from the assembly type name + + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + MethodInfo extracted by reflection - typeof(MyClass).GetMethod("MyFunc", BindingFlags.Static). + + + + Extension methods to setup NLog options + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Overrides the active with a new custom implementation + + + + + Overrides the active with a new custom implementation + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Specifies the way archive numbering is performed. + + + + + Sequence style numbering. The most recent archive has the highest number. + + + + + Rolling style numbering (the most recent is always #0 then #1, ..., #N. + + + + + Date style numbering. Archives will be stamped with the prior period + (Year, Month, Day, Hour, Minute) datetime. + + + + + Date and sequence style numbering. + Archives will be stamped with the prior period (Year, Month, Day) datetime. + The most recent archive has the highest number (in combination with the date). + + + + + Abstract Target with async Task support + + + + + How many milliseconds to delay the actual write operation to optimize for batching + + + + + How many seconds a Task is allowed to run before it is cancelled. + + + + + How many attempts to retry the same Task, before it is aborted + + + + + How many milliseconds to wait before next retry (will double with each retry) + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Task Scheduler used for processing async Tasks + + + + + Constructor + + + + + Initializes the internal queue for pending logevents + + + + + Override this to create the actual logging task + + Example of how to override this method, and call custom async method + + protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) + { + return CustomWriteAsync(logEvent, token); + } + + private async Task CustomWriteAsync(LogEventInfo logEvent, CancellationToken token) + { + await MyLogMethodAsync(logEvent, token).ConfigureAwait(false); + } + + + The log event. + The cancellation token + + + + + Override this to create the actual logging task for handling batch of logevents + + A batch of logevents. + The cancellation token + + + + + Handle cleanup after failed write operation + + Exception from previous failed Task + The cancellation token + Number of retries remaining + Time to sleep before retrying + Should attempt retry + + + + Schedules the LogEventInfo for async writing + + The log event. + + + + Write to queue without locking + + + + + + Schedules notification of when all messages has been written + + + + + + Closes Target by updating CancellationToken + + + + + Releases any managed resources + + + + + + Checks the internal queue for the next to create a new task for + + Used for race-condition validation between task-completion and timeout + Signals whether previousTask completed an almost full BatchSize + + + + Generates recursive task-chain to perform retry of writing logevents with increasing retry-delay + + + + + Creates new task to handle the writing of the input + + LogEvents to write + New Task created [true / false] + + + + Handles that scheduled task has completed (successfully or failed), and starts the next pending task + + Task just completed + AsyncContinuation to notify of success or failure + + + + Timer method, that is fired when pending task fails to complete within timeout + + + + + + Sends log messages to the remote instance of Chainsaw application from log4j. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a name. + + Name of the target. + + + + Color formatting for using ANSI Color Codes + + + + + Not using bold to get light colors, as it has to be cleared + + + + + Not using bold to get light colors, as it has to be cleared (And because it only works for text, and not background) + + + + + Resets both foreground and background color. + + + + + ANSI have 8 color-codes (30-37) by default. The "bright" (or "intense") color-codes (90-97) are extended values not supported by all terminals + + + + + Color formatting for using + and + + + + + Writes log messages to the console with customizable coloring. + + Documentation on NLog Wiki + + + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default.In multithreaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether the error stream (stderr) should be used instead of the output stream (stdout). + + + + + + Gets or sets a value indicating whether to use default row highlighting rules. + + + The default rules are: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConditionForeground ColorBackground Color
level == LogLevel.FatalRedNoChange
level == LogLevel.ErrorYellowNoChange
level == LogLevel.WarnMagentaNoChange
level == LogLevel.InfoWhiteNoChange
level == LogLevel.DebugGrayNoChange
level == LogLevel.TraceDarkGrayNoChange
+
+ +
+ + + The encoding for writing messages to the . + + Has side effect + + + + + Gets or sets a value indicating whether to auto-check if the console is available. + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-check if the console has been redirected to file + - Disables coloring logic when System.Console.IsOutputRedirected = true + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + + Enables output using ANSI Color Codes + + + + + + Gets the row highlighting rules. + + + + + + Gets the word highlighting rules. + + + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified log event to the console highlighting entries + and words based on a set of defined rules. + + Log event. + + + + Colored console output color. + + + Note that this enumeration is defined to be binary compatible with + .NET 2.0 System.ConsoleColor + some additions + + + + + Black Color (#000000). + + + + + Dark blue Color (#000080). + + + + + Dark green Color (#008000). + + + + + Dark Cyan Color (#008080). + + + + + Dark Red Color (#800000). + + + + + Dark Magenta Color (#800080). + + + + + Dark Yellow Color (#808000). + + + + + Gray Color (#C0C0C0). + + + + + Dark Gray Color (#808080). + + + + + Blue Color (#0000FF). + + + + + Green Color (#00FF00). + + + + + Cyan Color (#00FFFF). + + + + + Red Color (#FF0000). + + + + + Magenta Color (#FF00FF). + + + + + Yellow Color (#FFFF00). + + + + + White Color (#FFFFFF). + + + + + Don't change the color. + + + + + The row-highlighting condition. + + + + + Initializes static members of the ConsoleRowHighlightingRule class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The condition. + Color of the foreground. + Color of the background. + + + + Gets the default highlighting rule. Doesn't change the color. + + + + + Gets or sets the condition that must be met in order to set the specified foreground and background color. + + + + + + Gets or sets the foreground color. + + + + + + Gets or sets the background color. + + + + + + Checks whether the specified log event matches the condition (if any). + + + Log event. + + + A value of if the condition is not defined or + if it matches, otherwise. + + + + + Writes log messages to the console. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default. In multi threaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Gets or sets a value indicating whether to send the log messages to the standard error instead of the standard output. + + + + + + The encoding for writing messages to the . + + Has side effect + + + + + Gets or sets a value indicating whether to auto-check if the console is available + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + + Gets or sets whether to enable batch writing using char[]-buffers, instead of using + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified logging event to the Console.Out or + Console.Error depending on the value of the Error flag. + + The logging event. + + Note that the Error option is not supported on .NET Compact Framework. + + + + + + + + Write to output + + + + + Highlighting rule for Win32 colorful console. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The text to be matched.. + Color of the foreground. + Color of the background. + + + + Gets or sets the regular expression to be matched. You must specify either text or regex. + + + + + + Gets or sets the condition that must be met before scanning the row for highlight of words + + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets the text to be matched. You must specify either text or regex. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Gets or sets the foreground color. + + + + + + Gets or sets the background color. + + + + + + Gets the compiled regular expression that matches either Text or Regex property. Only used when is true. + + + + + Information about database command + parameters. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the type of the command. + + The type of the command. + + + + + Gets or sets the connection string to run the command against. If not provided, connection string from the target is used. + + + + + + Gets or sets the command text. + + + + + + Gets or sets a value indicating whether to ignore failures. + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a database named or positional parameter. + + + + + + Information about object-property for the database-connection-object + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name for the object-property + + + + + + Gets or sets the value to assign on the object-property + + + + + + Gets or sets the type of the object-property + + + + + + Gets or sets convert format of the property value + + + + + + Gets or sets the culture used for parsing property string-value for type-conversion + + + + + + Represents a parameter to a Database target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the parameter. + The parameter layout. + + + + Gets or sets the database parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets the database parameter DbType. + + + + + + Gets or sets the database parameter size. + + + + + + Gets or sets the database parameter precision. + + + + + + Gets or sets the database parameter scale. + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets convert format of the database parameter value. + + + + + + Gets or sets the culture used for parsing parameter string-value for type-conversion + + + + + + Writes log messages to the database using an ADO.NET provider. + + + - NETSTANDARD cannot load connectionstrings from .config + + Documentation on NLog Wiki + + + The configuration is dependent on the database type, because + there are different methods of specifying connection string, SQL + command and command parameters. + + MS SQL Server using System.Data.SqlClient: + + Oracle using System.Data.OracleClient: + + Oracle using System.Data.OleDBClient: + + To set up the log target programmatically use code like this (an equivalent of MSSQL configuration): + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets the name of the database provider. + + + + The parameter name should be a provider invariant name as registered in machine.config or app.config. Common values are: + +
    +
  • System.Data.SqlClient - SQL Sever Client
  • +
  • System.Data.SqlServerCe.3.5 - SQL Sever Compact 3.5
  • +
  • System.Data.OracleClient - Oracle Client from Microsoft (deprecated in .NET Framework 4)
  • +
  • Oracle.DataAccess.Client - ODP.NET provider from Oracle
  • +
  • System.Data.SQLite - System.Data.SQLite driver for SQLite
  • +
  • Npgsql - Npgsql driver for PostgreSQL
  • +
  • MySql.Data.MySqlClient - MySQL Connector/Net
  • +
+ (Note that provider invariant names are not supported on .NET Compact Framework). + + Alternatively the parameter value can be be a fully qualified name of the provider + connection type (class implementing ) or one of the following tokens: + +
    +
  • sqlserver, mssql, microsoft or msde - SQL Server Data Provider
  • +
  • oledb - OLEDB Data Provider
  • +
  • odbc - ODBC Data Provider
  • +
+
+ +
+ + + Gets or sets the connection string. When provided, it overrides the values + specified in DBHost, DBUserName, DBPassword, DBDatabase. + + + + + + Gets or sets the connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used. + + + + + + Gets the installation DDL commands. + + + + + + Gets the uninstallation DDL commands. + + + + + + Gets or sets a value indicating whether to keep the + database connection open between the log events. + + + + + + Obsolete - value will be ignored! The logging code always runs outside of transaction. + + Gets or sets a value indicating whether to use database transactions. + Some data providers require this. + + + + This option was removed in NLog 4.0 because the logging code always runs outside of transaction. + This ensures that the log gets written to the database if you rollback the main transaction because of an error and want to log the error. + + + + + Gets or sets the database host name. If the ConnectionString is not provided + this value will be used to construct the "Server=" part of the + connection string. + + + + + + Gets or sets the database user name. If the ConnectionString is not provided + this value will be used to construct the "User ID=" part of the + connection string. + + + + + + Gets or sets the database password. If the ConnectionString is not provided + this value will be used to construct the "Password=" part of the + connection string. + + + + + + Gets or sets the database name. If the ConnectionString is not provided + this value will be used to construct the "Database=" part of the + connection string. + + + + + + Gets or sets the text of the SQL command to be run on each log level. + + + Typically this is a SQL INSERT statement or a stored procedure call. + It should use the database-specific parameters (marked as @parameter + for SQL server or :parameter for Oracle, other data providers + have their own notation) and not the layout renderers, + because the latter is prone to SQL injection attacks. + The layout renderers should be specified as <parameter /> elements instead. + + + + + + Gets or sets the type of the SQL command to be run on each log level. + + + This specifies how the command text is interpreted, as "Text" (default) or as "StoredProcedure". + When using the value StoredProcedure, the commandText-property would + normally be the name of the stored procedure. TableDirect method is not supported in this context. + + + + + + Gets the collection of parameters. Each item contains a mapping + between NLog layout and a database named or positional parameter. + + + + + + Gets the collection of properties. Each item contains a mapping + between NLog layout and a property on the DbConnection instance + + + + + + Gets the collection of properties. Each item contains a mapping + between NLog layout and a property on the DbCommand instance + + + + + + Configures isolated transaction batch writing. If supported by the database, then it will improve insert performance. + + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Set the to use it for opening connections to the database. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the database. It creates + a new database command, prepares parameters for it by calculating + layouts and executes the command. + + The logging event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Write logEvent to database + + + + + Build the connectionstring from the properties. + + + Using at first, and falls back to the properties , + , and + + Event to render the layout inside the properties. + + + + + Escape quotes and semicolons. + See https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms722656(v=vs.85)#setting-values-that-use-reserved-characters + + + + + Create database parameter + + Current command. + Parameter configuration info. + + + + Extract parameter value from the logevent + + Current logevent. + Parameter configuration info. + + + + Create Default Value of Type + + + + + + + Fake transaction + + Transactions aren't in .NET Core: https://github.com/dotnet/corefx/issues/2949 + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Fake option + + + + + A descriptor for an archive created with the DateAndSequence numbering mode. + + + + + The full name of the archive file. + + + + + The parsed date contained in the file name. + + + + + The parsed sequence number contained in the file name. + + + + + Determines whether produces the same string as the current instance's date once formatted with the current instance's date format. + + The date to compare the current object's date to. + True if the formatted dates are equal, otherwise False. + + + + Initializes a new instance of the class. + + + + + Mock target - useful for testing. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + Increases the number of messages. + + The logging event. + + + + Default class for serialization of values to JSON format. + + + + + Singleton instance of the serializer. + + + + + Private. Use + + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + Serialized value. + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + serialisation options + Serialized value. + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + The objects in path (Avoid cyclic reference loop). + The current depth (level) of recursion. + Object serialized successfully (true/false). + + + + No quotes needed for this type? + + + + + Checks the object if it is numeric + + TypeCode for the object + Accept fractional types as numeric type. + + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + all options + JSON escaped string + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + Should non-ascii characters be encoded + + JSON escaped string + + + + Check if cleanup should be performed on initialize new file + + Skip cleanup when initializing new file, just after having performed archive operation + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Characters determining the start of the . + + + + + Characters determining the end of the . + + + + + File name which is used as template for matching and replacements. + It is expected to contain a pattern to match. + + + + + The begging position of the + within the . -1 is returned + when no pattern can be found. + + + + + The ending position of the + within the . -1 is returned + when no pattern can be found. + + + + + Replace the pattern with the specified String. + + + + + + + Archives the log-files using a date style numbering. Archives will be stamped with the + prior period (Year, Month, Day, Hour, Minute) datetime. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Archives the log-files using a date and sequence style numbering. Archives will be stamped + with the prior period (Year, Month, Day) datetime. The most recent archive has the highest number (in + combination with the date). + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Parse filename with date and sequence pattern + + + dateformat for archive + + the found pattern. When failed, then default + the found pattern. When failed, then default + + + + + Archives the log-files using the provided base-archive-filename. If the base-archive-filename causes + duplicate archive filenames, then sequence-style is automatically enforced. + + Example: + Base Filename trace.log + Next Filename trace.0.log + + The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Dynamically converts a non-template archiveFilePath into a correct archiveFilePattern. + Before called the original IFileArchiveMode, that has been wrapped by this + + + + + Determines if the file name as contains a numeric pattern i.e. {#} in it. + + Example: + trace{#}.log Contains the numeric pattern. + trace{###}.log Contains the numeric pattern. + trace{#X#}.log Contains the numeric pattern (See remarks). + trace.log Does not contain the pattern. + + Occasionally, this method can identify the existence of the {#} pattern incorrectly. + File name to be checked. + when the pattern is found; otherwise. + + + + Archives the log-files using a rolling style numbering (the most recent is always #0 then + #1, ..., #N. + + When the number of archive files exceed the obsolete archives + are deleted. + + + + + Replaces the numeric pattern i.e. {#} in a file name with the parameter value. + + File name which contains the numeric pattern. + Value which will replace the numeric pattern. + File name with the value of in the position of the numeric pattern. + + + + Archives the log-files using a sequence style numbering. The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Modes of archiving files based on time. + + + + + Don't archive based on time. + + + + + AddToArchive every year. + + + + + AddToArchive every month. + + + + + AddToArchive daily. + + + + + AddToArchive every hour. + + + + + AddToArchive every minute. + + + + + AddToArchive every Sunday. + + + + + AddToArchive every Monday. + + + + + AddToArchive every Tuesday. + + + + + AddToArchive every Wednesday. + + + + + AddToArchive every Thursday. + + + + + AddToArchive every Friday. + + + + + AddToArchive every Saturday. + + + + + Type of filepath + + + + + Detect of relative or absolute + + + + + Relative path + + + + + Absolute path + + Best for performance + + + + Writes log messages to one or more files. + + Documentation on NLog Wiki + + + + Default clean up period of the initialized files. When a file exceeds the clean up period is removed from the list. + + Clean up period is defined in days. + + + + The maximum number of initialized files before clean up procedures are initiated, + to keep the number of initialized files to a minimum. Chose 25 to cater for monthly rolling of log-files. + + + + + This value disables file archiving based on the size. + + + + + Holds the initialized files each given time by the instance. Against each file, the last write time is stored. + + Last write time is store in local time (no UTC). + + + + List of the associated file appenders with the instance. + + + + + The number of initialized files at any one time. + + + + + The maximum number of archive files that should be kept. + + + + + The maximum days of archive files that should be kept. + + + + + The filename as target + + + + + The archive file name as target + + + + + The date of the previous log event. + + + + + The file name of the previous log event. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the name of the file to write to. + + + This FileName string is a layout which may include instances of layout renderers. + This lets you use a single target to write to multiple files. + + + The following value makes NLog write logging events to files based on the log level in the directory where + the application runs. + ${basedir}/${level}.log + All Debug messages will go to Debug.log, all Info messages will go to Info.log and so on. + You can combine as many of the layout renderers as you want to produce an arbitrary log file name. + + + + + + Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. + If set to false, nothing gets written when the filename is wrong. + + + + + + Is the an absolute or relative path? + + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + + Gets or sets a value indicating whether to delete old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + + + + + + Gets or sets a value indicating whether to replace file contents on each write instead of appending log message at the end. + + + + + + Gets or sets a value indicating whether to keep log file open instead of opening and closing it on each logging event. + + + Setting this property to True helps improve performance. + + + + + + Gets or sets the maximum number of log file names that should be stored as existing. + + + The bigger this number is the longer it will take to write each log record. The smaller the number is + the higher the chance that the clean function will be run when no new files have been opened. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + + Gets or sets the file attributes (Windows only). + + + + + + Gets or sets the line ending mode. + + + + + + Gets or sets a value indicating whether to automatically flush the file buffers after each log message. + + + + + + Gets or sets the number of files to be kept open. Setting this to a higher value may improve performance + in a situation where a single File target is writing to many files + (such as splitting by level or by logger). + + + The files are managed on a LRU (least recently used) basis, which flushes + the files that have not been used for the longest period of time should the + cache become full. As a rule of thumb, you shouldn't set this parameter to + a very high value. A number like 10-15 shouldn't be exceeded, because you'd + be keeping a large number of files open which consumes system resources. + + + + + + Gets or sets the maximum number of seconds that files are kept open. If this number is negative the files are + not automatically closed after a period of inactivity. + + + + + + Gets or sets the maximum number of seconds before open files are flushed. If this number is negative or zero + the files are not flushed by timer. + + + + + + Gets or sets the log file buffer size in bytes. + + + + + + Gets or sets the file encoding. + + + + + + Gets or sets whether or not this target should just discard all data that its asked to write. + Mostly used for when testing NLog Stack except final write + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on different network hosts. + + + This effectively prevents files from being kept open. + + + + + + Gets or sets a value indicating whether to write BOM (byte order mark) in created files + + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + The actual delay is a random value between 0 and the value specified + in this parameter. On each failed attempt the delay base is doubled + up to times. + + + Assuming that ConcurrentWriteAttemptDelay is 10 the time to wait will be:

+ a random value between 0 and 10 milliseconds - 1st attempt
+ a random value between 0 and 20 milliseconds - 2nd attempt
+ a random value between 0 and 40 milliseconds - 3rd attempt
+ a random value between 0 and 80 milliseconds - 4th attempt
+ ...

+ and so on. + + + + +

+ Gets or sets a value indicating whether to archive old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + After archiving the old file, the current log file will be empty. + + +
+ + + Gets or sets a value of the file size threshold to archive old log file on startup. + + + This option won't work if is set to false + Default value is 0 which means that the file is archived as soon as archival on + startup is enabled. + + + + + + Gets or sets a value specifying the date format to use when archiving files. + + + This option works only when the "ArchiveNumbering" parameter is set either to Date or DateAndSequence. + + + + + + Gets or sets the size in bytes above which log files will be automatically archived. + + Warning: combining this with isn't supported. We cannot create multiple archive files, if they should have the same name. + Choose: + + + Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. + + + + + + Gets or sets a value indicating whether to automatically archive log files every time the specified time passes. + + + Files are moved to the archive as part of the write operation if the current period of time changes. For example + if the current hour changes from 10 to 11, the first write that will occur + on or after 11:00 will trigger the archiving. +

+ Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. +

+
+ +
+ + + Is the an absolute or relative path? + + + + + + Gets or sets the name of the file to be used for an archive. + + + It may contain a special placeholder {#####} + that will be replaced with a sequence of numbers depending on + the archiving strategy. The number of hash characters used determines + the number of numerical digits to be used for numbering files. + + + + + + Gets or sets the maximum number of archive files that should be kept. + + + + + + Gets or sets the maximum days of archive files that should be kept. + + + + + + Gets or sets the way file archives are numbered. + + + + + + Used to compress log files during archiving. + This may be used to provide your own implementation of a zip file compressor, + on platforms other than .Net4.5. + Defaults to ZipArchiveFileCompressor on .Net4.5 and to null otherwise. + + + + + + Gets or sets a value indicating whether to compress archive files into the zip archive format. + + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + + Gets or sets a value indicating whether file creation calls should be synchronized by a system global mutex. + + + + + + Gets or sets a value indicating whether the footer should be written only when the file is archived. + + + + + + Gets the characters that are appended after each line. + + + + + Refresh the ArchiveFilePatternToWatch option of the . + The log file must be watched for archiving when multiple processes are writing to the same + open file. + + + + + Removes records of initialized files that have not been + accessed in the last two days. + + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Removes records of initialized files that have not been + accessed after the specified date. + + The cleanup threshold. + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Flushes all pending file operations. + + The asynchronous continuation. + + The timeout parameter is ignored, because file APIs don't provide + the needed functionality. + + + + + Returns the suitable appender factory ( ) to be used to generate the file + appenders associated with the instance. + + The type of the file appender factory returned depends on the values of various properties. + + suitable for this instance. + + + + Initializes file logging by creating data structures that + enable efficient multi-file logging. + + + + + Closes the file(s) opened for writing. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Get full filename (=absolute) and cleaned if needed. + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes the specified array of logging events to a file specified in the FileName + parameter. + + An array of objects. + + This function makes use of the fact that the events are batched by sorting + the requests by filename. This optimizes the number of open/close calls + and can help improve performance. + + + + + Returns estimated size for memory stream, based on events count and first event size in bytes. + + Count of events + Bytes count of first event + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Gets the bytes to be written to the file. + + Log event. + Array of bytes that are ready to be written. + + + + Modifies the specified byte array before it gets sent to a file. + + The byte array. + The modified byte array. The function can do the modification in-place. + + + + Gets the bytes to be written to the file. + + The log event to be formatted. + to help format log event. + Optional temporary char-array to help format log event. + Destination for the encoded result. + + + + Formats the log event for write. + + The log event to be formatted. + for the result. + + + + Modifies the specified byte array before it gets sent to a file. + + The LogEvent being written + The byte array. + + + + Archives fileName to archiveFileName. + + File name to be archived. + Name of the archive file. + + + + Gets the correct formatting to be used based on the value of for converting values which will be inserting into file + names during archiving. + + This value will be computed only when a empty value or is passed into + + Date format to used irrespectively of value. + Formatting for dates. + + + + Calculate the DateTime of the requested day of the week. + + The DateTime of the previous log event. + The next occuring day of the week to return a DateTime for. + The DateTime of the next occuring dayOfWeek. + For example: if previousLogEventTimestamp is Thursday 2017-03-02 and dayOfWeek is Sunday, this will return + Sunday 2017-03-05. If dayOfWeek is Thursday, this will return *next* Thursday 2017-03-09. + + + + Invokes the archiving process after determining when and which type of archiving is required. + + File name to be checked and archived. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + + + + Gets the pattern that archive files will match + + Filename of the log file + Log event that the instance is currently processing. + A string with a pattern that will match the archive file names + + + + Archives the file if it should be archived. + + The file name to check for. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + True when archive operation of the file was completed (by this target or a concurrent target) + + + + Closes any active file-appenders that matches the input filenames. + File-appender is requested to invalidate/close its filehandle, but keeping its archive-mutex alive + + + + + Indicates if the automatic archiving process should be executed. + + File name to be written. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the correct filename to archive + + + + + + Gets the file name for archiving, or null if archiving should not occur based on file size. + + File name to be written. + The size in bytes of the next chunk of data to be written in the file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the file name for archiving, or null if archiving should not occur based on date/time. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Truncates the input-time, so comparison of low resolution times (like dates) are not affected by ticks + + High resolution Time + Time Resolution Level + Truncated Low Resolution Time + + + + Evaluates which parts of a file should be written (header, content, footer) based on various properties of + instance and writes them. + + File name to be written. + Raw sequence of to be written into the content part of the file. + File has just been opened. + + + + Initialise a file to be used by the instance. Based on the number of initialized + files and the values of various instance properties clean up and/or archiving processes can be invoked. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file (DateTime.MinValue if just initialized). + + + + Writes the file footer and finalizes the file in instance internal structures. + + File name to close. + Indicates if the file is being finalized for archiving. + + + + Writes the footer information to a file. + + The file path to write to. + + + + Decision logic whether to archive logfile on startup. + and properties. + + File name to be written. + Decision whether to archive or not. + + + + Invokes the archiving and clean up of older archive file based on the values of + and + properties respectively. + + File name to be written. + Log event that the instance is currently processing. + + + + Creates the file specified in and writes the file content in each entirety i.e. + Header, Content and Footer. + + The name of the file to be written. + Sequence of to be written in the content section of the file. + First attempt to write? + This method is used when the content of the log file is re-written on every write. + + + + Writes the header information and byte order mark to a file. + + File appender associated with the file. + + + + The sequence of to be written in a file after applying any formatting and any + transformations required from the . + + The layout used to render output message. + Sequence of to be written. + Usually it is used to render the header and hooter of the files. + + + + Controls the text and color formatting for + + + + + Creates a TextWriter for the console to start building a colored text message + + Active console stream + Optional StringBuilder to optimize performance + TextWriter for the console + + + + Releases the TextWriter for the console after having built a colored text message (Restores console colors) + + Colored TextWriter + Active console stream + Original foreground color for console (If changed) + Original background color for console (If changed) + Flush TextWriter + + + + Changes foreground color for the Colored TextWriter + + Colored TextWriter + New foreground color for the console + Old previous backgroundColor color for the console + Old foreground color for the console + + + + Changes backgroundColor color for the Colored TextWriter + + Colored TextWriter + New backgroundColor color for the console + Old previous backgroundColor color for the console + Old backgroundColor color for the console + + + + Restores console colors back to their original state + + Colored TextWriter + Original foregroundColor color for the console + Original backgroundColor color for the console + + + + Writes multiple characters to console in one operation (faster) + + Colored TextWriter + Output Text + Start Index + End Index + + + + Writes single character to console + + Colored TextWriter + Output Text + + + + Writes whole string and completes with newline + + Colored TextWriter + Output Text + + + + Default row highlight rules for the console printer + + + + + Check if cleanup should be performed on initialize new file + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Create a wildcard file-mask that allows one to find all files belonging to the same archive. + + Base archive file pattern + Wildcard file-mask + + + + Search directory for all existing files that are part of the same archive. + + Base archive file pattern + + + + + Generate the next archive filename for the archive. + + Base archive file pattern + File date of archive + Existing files in the same archive + + + + + Return all files that should be removed from the provided archive. + + Base archive file pattern + Existing files in the same archive + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + + + + may be configured to compress archived files in a custom way + by setting before logging your first event. + + + + + Create archiveFileName by compressing fileName. + + Absolute path to the log file to compress. + Absolute path to the compressed archive file to create. + + + + Interface for serialization of values, maybe even objects to JSON format. + Useful for wrappers for existing serializers. + + + + + Returns a serialization of an object + into JSON format. + + The object to serialize to JSON. + Serialized value (null = Serialize failed). + + + + Options for JSON serialisation + + + + + Add quotes around object keys? + + + + + Format provider for value + + + + + Format string for value + + + + + Should non-ascii characters be encoded + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + Serialize enum as string value + + + + + Should dictionary keys be sanitized. All characters must either be letters, numbers or underscore character (_). + + Any other characters will be converted to underscore character (_) + + + + + How far down the rabbit hole should the Json Serializer go with object-reflection before stopping + + + + Initializes a new instance of the class. + + + + Line ending mode. + + + + + Insert platform-dependent end-of-line sequence after each line. + + + + + Insert CR LF sequence (ASCII 13, ASCII 10) after each line. + + + + + Insert CR character (ASCII 13) after each line. + + + + + Insert LF character (ASCII 10) after each line. + + + + + Insert null terminator (ASCII 0) after each line. + + + + + Do not insert any line ending. + + + + + Gets the name of the LineEndingMode instance. + + + + + Gets the new line characters (value) of the LineEndingMode instance. + + + + + Initializes a new instance of . + + The mode name. + The new line characters to be used. + + + + Returns the that corresponds to the supplied . + + + The textual representation of the line ending mode, such as CRLF, LF, Default etc. + Name is not case sensitive. + + The value, that corresponds to the . + There is no line ending mode with the specified name. + + + + Compares two objects and returns a + value indicating whether the first one is equal to the second one. + + The first level. + The second level. + The value of mode1.NewLineCharacters == mode2.NewLineCharacters. + + + + Compares two objects and returns a + value indicating whether the first one is not equal to the second one. + + The first mode + The second mode + The value of mode1.NewLineCharacters != mode2.NewLineCharacters. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms + and data structures like a hash table. + + + + + Determines whether the specified is + equal to this instance. + + The to compare with + this instance. + + Value of true if the specified + is equal to this instance; otherwise, false. + + + The parameter is null. + + + + Indicates whether the current object is equal to another object of the same type. + true if the current object is equal to the parameter; otherwise, false. + An object to compare with this object. + + + + Provides a type converter to convert objects to and from other representations. + + + + + Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. + + + true if this converter can perform the conversion; otherwise, false. + + An that provides a format context. A that represents the type you want to convert from. + + + + Converts the given object to the type of this converter, using the specified context and culture information. + + + An that represents the converted value. + + An that provides a format context. The to use as the current culture. The to convert. The conversion cannot be performed. + + + + Writes log messages to an ArrayList in memory for programmatic retrieval. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the list of logs gathered in the . + + + + + Gets or sets the max number of items to have in memory + + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + A parameter to MethodCall. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout to use for parameter value. + + + + Initializes a new instance of the class. + + Name of the parameter. + The layout. + + + + Initializes a new instance of the class. + + The name of the parameter. + The layout. + The type of the parameter. + + + + Gets or sets the name of the parameter. + + + + + + Gets or sets the type of the parameter. Obsolete alias for + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets the class name. + + + + + + Gets or sets the method name. The method must be public and static. + + Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx + e.g. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Initializes a new instance of the class. + + Name of the target. + Method to call on logevent. + + + + Initializes the target. + + + + + Calls the specified Method. + + Method parameters. + The logging event. + + + + Calls the specified Method. + + Method parameters. + + + + The base class for all targets which call methods (local or remote). + Manages parameters and type coercion. + + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + + + + Prepares an array of parameters to be passed based on the logging event and calls DoInvoke(). + + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Sends log messages over the network. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ To print the results, use any application that's able to receive messages over + TCP or UDP. NetCat is + a simple but very powerful command-line tool that can be used for that. This image + demonstrates the NetCat tool receiving log messages from Network target. +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will be very slow. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+

+ There are two specialized versions of the Network target: Chainsaw + and NLogViewer which write to instances of Chainsaw log4j viewer + or NLogViewer application respectively. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6) (not supported on Windows Phone 7.0)
  • +
  • tcp4://host:port - force TCP/IPv4 (not supported on Windows Phone 7.0)
  • +
  • tcp6://host:port - force TCP/IPv6 (not supported on Windows Phone 7.0)
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6, not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp4://host:port - force UDP/IPv4 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp6://host:port - force UDP/IPv6 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • http://host:port/pageName - HTTP using POST verb
  • +
  • https://host:port/pageName - HTTPS using POST verb
  • +
+ For SOAP-based webservice support over HTTP use WebService target. +
+ +
+ + + Gets or sets a value indicating whether to keep connection open whenever possible. + + + + + + Gets or sets a value indicating whether to append newline at the end of log message. + + + + + + Gets or sets the end of line value if a newline is appended at the end of log message . + + + + + + Gets or sets the maximum message size in bytes. + + + + + + Gets or sets the size of the connection cache (number of connections which are kept alive). + + + + + + Gets or sets the maximum current connections. 0 = no maximum. + + + + + + Gets or sets the action that should be taken if the will be more connections than . + + + + + + Gets or sets the maximum queue size. + + + + + + Gets or sets the action that should be taken if the message is larger than + maxMessageSize. + + + + + + Gets or sets the encoding to be used. + + + + + + Get or set the SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Sends the + rendered logging event over the network optionally concatenating it with a newline character. + + The logging event. + + + + Try to remove. + + + + + removed something? + + + + Gets the bytes to be written. + + Log event. + Byte array. + + + + The action to be taken when there are more connections then the max. + + + + + Just allow it. + + + + + Discard the connection item. + + + + + Block until there's more room in the queue. + + + + + Action that should be taken if the message overflows. + + + + + Report an error. + + + + + Split the message into smaller pieces. + + + + + Discard the entire message. + + + + + Represents a parameter to a NLogViewer target. + + + + + Initializes a new instance of the class. + + + + + Gets or sets viewer parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + Sends log messages to the remote instance of NLog Viewer. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include stack contents. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDLC item separator. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets the layout renderer which produces Log4j-compatible XML events. + + + + + Gets or sets the instance of that is used to format log messages. + + + + + + Discards log messages. Used mainly for debugging and benchmarking. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets a value indicating whether to perform layout calculation. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Does nothing. Optionally it calculates the layout text but + discards the results. + + The logging event. + + + + Outputs log messages through the OutputDebugString() Win32 API. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Outputs the rendered logging event through the OutputDebugString() Win32 API. + + The logging event. + + + + Represents logging target. + + + + Are all layouts in this target thread-agnostic, if so we don't precalculate the layouts + + + + The Max StackTraceUsage of all the in this Target + + + + + Gets or sets the name of the target. + + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers + Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + Gets the object which can be used to synchronize asynchronous operations that must rely on the . + + + + + Gets the logging configuration this target is part of. + + + + + Gets a value indicating whether the target has been initialized. + + + + + Can be used if has been enabled. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Closes the target. + + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Calls the on each volatile layout + used by this target. + This method won't prerender if all layouts in this target are thread-agnostic. + + + The log event. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Writes the log to the target. + + Log event to write. + + + + Writes the array of log events. + + The log events. + + + + Writes the array of log events. + + The log events. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Closes the target and releases any unmanaged resources. + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Writes async log event to the log target. + + Async Log event to be written out. + + + + Writes a log event to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Log event to be written out. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + NOTE! Obsolete, instead override WriteAsyncThreadSafe(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target, in a thread safe manner. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Writes an array of logging events to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Merges (copies) the event context properties from any event info object stored in + parameters of the given event info object. + + The event info object to perform the merge to. + + + + Renders the event info in layout. + + The layout. + The event info. + String representing log event. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Should the exception be rethrown? + + + Upgrade to private protected when using C# 7.2 + + + + Marks class as a logging target and assigns a name to it. + + This attribute is not required when registering the target in the API. + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets a value indicating whether to the target is a wrapper target (used to generate the target summary documentation page). + + + + + Gets or sets a value indicating whether to the target is a compound target (used to generate the target summary documentation page). + + + + + Attribute details for + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Gets or sets when an empty value should cause the property to be included + + + + + Gets or sets the type of the property. + + + + + Represents target that supports context capture using MDLC, MDC, NDLC and NDC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets or sets a value indicating whether to include contents of the dictionary + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the + + + + + + Gets the array of custom attributes to be passed into the logevent context + + + + + + Constructor + + + + + + + + Check if logevent has properties (or context properties) + + + True if properties should be included + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Dictionary with any context properties for the logEvent (Null if none found) + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Optional prefilled dictionary + Dictionary with any context properties for the logEvent (Null if none found) + + + + Creates combined dictionary of all configured properties for logEvent + + + Dictionary with all collected properties for logEvent + + + + Creates combined dictionary of all configured properties for logEvent + + + Optional prefilled dictionary + Dictionary with all collected properties for logEvent + + + + Generates a new unique name, when duplicate names are detected + + LogEvent that triggered the duplicate name + Duplicate item name + Item Value + Dictionary of context values + New (unique) value (or null to skip value). If the same value is used then the item will be overwritten + + + + Returns the captured snapshot of for the + + + Dictionary with MDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with MDLC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDLC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with GDC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDC key + MDC value + Snapshot of MDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDLC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDLC key + MDLC value + Snapshot of MDLC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDC value + Snapshot of NDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDLC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDLC value + Snapshot of NDLC value + Include object value in snapshot + + + + Take snapshot of a single object value + + Log event + Key Name (null when NDC / NDLC) + Object Value + Snapshot of value + Include object value in snapshot + + + Internal Layout that allows capture of MDC context + + + Internal Layout that allows capture of NDC context + + + Internal Layout that allows capture of MDLC context + + + Internal Layout that allows capture of NDLC context + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the layout used to format log messages. + + + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the text to be rendered. + + + + + + Gets or sets the footer. + + + + + + Gets or sets the header. + + + + + + Gets or sets the layout with header and footer. + + The layout with header and footer. + + + + Sends log messages through System.Diagnostics.Trace. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Always use independent of + + + + + + Forward to (Instead of ) + + + Trace.Fail can have special side-effects, and give fatal exceptions, message dialogs or Environment.FailFast + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Writes the specified logging event to the facility. + + Redirects the log message depending on and . + When is false: + - writes to + - writes to + - writes to + - writes to + - writes to + - writes to + + The logging event. + + + + Web service protocol. + + + + + Use SOAP 1.1 Protocol. + + + + + Use SOAP 1.2 Protocol. + + + + + Use HTTP POST Protocol. + + + + + Use HTTP GET Protocol. + + + + + Do an HTTP POST of a JSON document. + + + + + Do an HTTP POST of an XML document. + + + + + Web Service Proxy Configuration Type + + + + + Default proxy configuration from app.config (System.Net.WebRequest.DefaultWebProxy) + + + Example of how to configure default proxy using app.config + + <system.net> + <defaultProxy enabled = "true" useDefaultCredentials = "true" > + <proxy usesystemdefault = "True" /> + </defaultProxy> + </system.net> + + + + + + Automatic use of proxy with authentication (cached) + + + + + Disables use of proxy (fast) + + + + + Custom proxy address (cached) + + + + + Calls the specified web service on each log message. + + Documentation on NLog Wiki + + The web service must implement a method that accepts a number of string parameters. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

The example web service that works with this example is shown below

+ +
+
+ + + dictionary that maps a concrete implementation + to a specific -value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target + + + + Gets or sets the web service URL. + + + + + + Gets or sets the Web service method name. Only used with Soap. + + + + + + Gets or sets the Web service namespace. Only used with Soap. + + + + + + Gets or sets the protocol to be used when calling web service. + + + + + + Gets or sets the proxy configuration when calling web service + + + + + + Gets or sets the custom proxy address, include port separated by a colon + + + + + + Should we include the BOM (Byte-order-mark) for UTF? Influences the property. + + This will only work for UTF-8. + + + + + + Gets or sets the encoding. + + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Gets or sets the name of the root XML element, + if POST of XML document chosen. + If so, this property must not be null. + (see and ). + + + + + + Gets or sets the (optional) root namespace of the XML document, + if POST of XML document chosen. + (see and ). + + + + + + Gets the array of parameters to be passed. + + + + + + Indicates whether to pre-authenticate the HttpWebRequest (Requires 'Authorization' in parameters) + + + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Invokes the web service method. + + Parameters to be passed. + The logging event. + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Builds the URL to use when calling the web service for a message, depending on the WebServiceProtocol. + + + + + + + Write from input to output. Fix the UTF-8 bom + + + + + + + + + base class for POST formatters, that + implement former PrepareRequest() method, + that creates the content for + the requested kind of HTTP request + + + + + Win32 file attributes. + + + For more information see https://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/createfile.asp. + + + + + Read-only file. + + + + + Hidden file. + + + + + System file. + + + + + File should be archived. + + + + + Device file. + + + + + Normal file. + + + + + File is temporary (should be kept in cache and not + written to disk if possible). + + + + + Sparse file. + + + + + Reparse point. + + + + + Compress file contents. + + + + + File should not be indexed by the content indexing service. + + + + + Encrypted file. + + + + + The system writes through any intermediate cache and goes directly to disk. + + + + + The system opens a file with no system caching. + + + + + Delete file after it is closed. + + + + + A file is accessed according to POSIX rules. + + + + + Asynchronous request queue. + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Gets the number of requests currently in the queue. + + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + Queue was empty before enqueue + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued (-1 means everything). + The array of log events. + + + + Dequeues into a preallocated array, instead of allocating a new one + + Maximum number of items to be dequeued + Preallocated list + + + + Clears the queue. + + + + + Gets or sets the request limit. + + + + + Gets or sets the action to be taken when there's no more room in + the queue and another request is enqueued. + + + + + Notifies about log event that was dropped when set to + + + + + Notifies when queue size is growing over + + + + + Raise event when queued element was dropped because of queue overflow + + Dropped queue item + + + + Raise event when RequestCount overflow + + current requests count + + + + Provides asynchronous, buffered execution of target writes. + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queueing + messages and processing them in a separate thread. You should wrap targets + that spend a non-trivial amount of time in their Write() method with asynchronous + target to speed up logging. +

+

+ Because asynchronous logging is quite a common scenario, NLog supports a + shorthand notation for wrapping all targets with AsyncWrapper. Just add async="true" to + the <targets/> element in the configuration file. +

+ + + ... your targets go here ... + + ]]> +
+ +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of requests in the queue. + The action to be taken when the queue overflows. + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Gets or sets the time in milliseconds to sleep between batches. (1 or less means trigger on new activity) + + + + + + Raise event when Target cannot store LogEvent. + Event arg contains lost LogEvents + + + + + Raises when event queue grow. + Queue can grow when was set to + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the limit of full s to write before yielding into + Performance is better when writing many small batches, than writing a single large batch + + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + + Gets the queue of lazy writer thread requests. + + + + + Schedules a flush of pending events in the queue (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target by starting the lazy writer timer. + + + + + Shuts down the lazy writer timer. + + + + + Starts the lazy writer thread which periodically writes + queued log messages. + + + + + Attempts to start an instant timer-worker-thread which can write + queued log messages. + + Returns true when scheduled a timer-worker-thread + + + + Stops the lazy writer thread. + + + + + Adds the log event to asynchronous queue to be processed by + the lazy writer thread. + + The log event. + + The is called + to ensure that the log event can be processed in another thread. + + + + + Write to queue without locking + + + + + + The action to be taken when the queue overflows. + + + + + Grow the queue. + + + + + Discard the overflowing item. + + + + + Block until there's more room in the queue. + + + + + Causes a flush on a wrapped target if LogEvent satisfies the . + If condition isn't set, flushes on each write. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Gets or sets the condition expression. Log events who meet this condition will cause + a flush on the wrapped target. + + + + + + Delay the flush until the LogEvent has been confirmed as written + + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + The wrapped target. + Name of the target + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes the target. + + + + + Forwards the call to the .Write() + and calls on it if LogEvent satisfies + the flush condition or condition is null. + + Logging event to be written out. + + + + Schedules a flush operation, that triggers when all pending flush operations are completed (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + The action to take when the buffer overflows. + + + + Gets or sets the number of log events to be buffered. + + + + + + Gets or sets the timeout (in milliseconds) after which the contents of buffer will be flushed + if there's no write in the specified period of time. Use -1 to disable timed flushes. + + + + + + Gets or sets a value indicating whether to use sliding timeout. + + + This value determines how the inactivity period is determined. If sliding timeout is enabled, + the inactivity timer is reset after each write, if it is disabled - inactivity timer will + count from the first event written to the buffer. + + + + + + Gets or sets the action to take if the buffer overflows. + + + Setting to will replace the + oldest event with new events without sending events down to the wrapped target, and + setting to will flush the + entire buffer to the wrapped target. + + + + + + Flushes pending events in the buffer (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target. + + + + + Closes the target by flushing pending events in the buffer (if any). + + + + + Adds the specified log event to the buffer and flushes + the buffer in case the buffer gets full. + + The log event. + + + + The action to be taken when the buffer overflows. + + + + + Flush the content of the buffer. + + + + + Discard the oldest item. + + + + + A base class for targets which wrap other (multiple) targets + and provide various forms of target routing. + + + + + Initializes a new instance of the class. + + The targets. + + + + Gets the collection of targets managed by this compound target. + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Writes logging event to the log target. + + Logging event to be written out. + + + + Flush any pending log messages for all wrapped targets. + + The asynchronous continuation. + + + + Concurrent Asynchronous request queue based on + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Gets the number of requests currently in the queue. + + + Only for debugging purposes + + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + Queue was empty before enqueue + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued (-1 means everything). + The array of log events. + + + + Dequeues into a preallocated array, instead of allocating a new one + + Maximum number of items to be dequeued + Preallocated list + + + + Clears the queue. + + + + + Provides fallback-on-error. + + Documentation on NLog Wiki + +

This example causes the messages to be written to server1, + and if it fails, messages go to server2.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Gets or sets a value indicating whether to return to the first target after any successful write. + + + + + + + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + The method remembers the last-known-successful target + and starts the iteration from it. + If is set, the method + resets the target to the first target + stored in . + + + + + Filtering rule for . + + + + + Initializes a new instance of the FilteringRule class. + + + + + Initializes a new instance of the FilteringRule class. + + Condition to be tested against all events. + Filter to apply to all log events when the first condition matches any of them. + + + + Gets or sets the condition to be tested. + + + + + + Gets or sets the resulting filter to be applied when the condition matches. + + + + + + Filters log entries based on a condition. + + Documentation on NLog Wiki + +

This example causes the messages not contains the string '1' to be ignored.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The condition. + + + + Initializes a new instance of the class. + + The wrapped target. + The condition. + + + + Gets or sets the condition expression. Log events who meet this condition will be forwarded + to the wrapped target. + + + + + + Gets or sets the filter. Log events who evaluates to will be discarded + + + + + + + + + Checks the condition against the passed log event. + If the condition is met, the log event is forwarded to + the wrapped target. + + Log event. + + + + + + + Limits the number of messages written per timespan to the wrapped target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of messages written per interval. + Interval in which the maximum number of messages can be written. + + + + Gets or sets the maximum allowed number of messages written per . + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets or sets the interval in which messages will be written up to the number of messages. + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets the DateTime when the current will be reset. + + + + + + Gets the number of written in the current . + + + + + + Initializes the target and resets the current Interval and . + + + + + Writes log event to the wrapped target if the current is lower than . + If the is already reached, no log event will be written to the wrapped target. + resets when the current is expired. + + Log event to be written out. + + + + Arguments for events. + + + + + + + + Instance of that was dropped by + + + + + Raises by when + queue is full + and set to + By default queue doubles it size. + + + + + Contains items count and new queue size. + + Required queue size + Current queue size + + + + New queue size + + + + + Current requests count + + + + + Filters buffered log entries based on a set of conditions that are evaluated on a group of events. + + Documentation on NLog Wiki + + PostFilteringWrapper must be used with some type of buffering target or wrapper, such as + AsyncTargetWrapper, BufferingWrapper or ASPNetBufferingWrapper. + + +

+ This example works like this. If there are no Warn,Error or Fatal messages in the buffer + only Info messages are written to the file, but if there are any warnings or errors, + the output includes detailed trace (levels >= Debug). You can plug in a different type + of buffering wrapper (such as ASPNetBufferingWrapper) to achieve different + functionality. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Gets or sets the default filter to be applied when no specific rule matches. + + + + + + Gets the collection of filtering rules. The rules are processed top-down + and the first rule that matches determines the filtering condition to + be applied to log events. + + + + + + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Evaluates all filtering rules to find the first one that matches. + The matching rule determines the filtering condition to be applied + to all items in a buffer. If no condition matches, default filter + is applied to the array of log events. + + Array of log events to be post-filtered. + + + + Evaluate all the rules to get the filtering condition + + + + + + + Sends log messages to a randomly selected target. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt + chosen randomly on a per-message basis. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the log event to one of the sub-targets. + The sub-target is randomly chosen. + + The log event. + + + + Repeats each log event the specified number of times. + + Documentation on NLog Wiki + +

This example causes each log message to be repeated 3 times.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The repeat count. + + + + Initializes a new instance of the class. + + The wrapped target. + The repeat count. + + + + Gets or sets the number of times to repeat each log message. + + + + + + Forwards the log message to the by calling the method times. + + The log event. + + + + Retries in case of write error. + + Documentation on NLog Wiki + +

This example causes each write attempt to be repeated 3 times, + sleeping 1 second between attempts if first one fails.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Initializes a new instance of the class. + + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Gets or sets the number of retries that should be attempted on the wrapped target in case of a failure. + + + + + + Gets or sets the time to wait between retries in milliseconds. + + + + + + Special SyncObject to allow closing down Target while busy retrying + + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Writes the specified log event to the wrapped target in a thread-safe manner. + + The log event. + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Distributes log events to targets in a round-robin fashion. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt. + Each odd message is written to file2.txt, each even message goes to file1.txt. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Ensures forwarding happens without holding lock + + + + + + Forwards the write to one of the targets from + the collection. + + The log event. + + The writes are routed in a round-robin fashion. + The first log event goes to the first target, the second + one goes to the second target and so on looping to the + first target when there are no more targets available. + In general request N goes to Targets[N % Targets.Count]. + + + + + Writes log events to all targets. + + Documentation on NLog Wiki + +

This example causes the messages to be written to both file1.txt or file2.txt +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the specified log event to all sub-targets. + + The log event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Base class for targets wrap other (single) targets. + + + + + Gets or sets the target that is wrapped by this target. + + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Builtin IFileCompressor implementation utilizing the .Net4.5 specific + and is used as the default value for on .Net4.5. + So log files created via can be zipped when archived + w/o 3rd party zip library when run on .Net4.5 or higher. + + + + + Implements using the .Net4.5 specific + + + + + Current local time retrieved directly from DateTime.Now. + + + + + Gets current local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Current UTC time retrieved directly from DateTime.UtcNow. + + + + + Gets current UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Fast time source that updates current time only once per tick (15.6 milliseconds). + + + + + Gets raw uncached time from derived time source. + + + + + Gets current time cached for one system tick (15.6 milliseconds). + + + + + Fast local time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Fast UTC time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Defines source of current time. + + + + + Gets current time. + + + + + Gets or sets current global time source used in all log events. + + + Default time source is . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to the same form + as time values originated from this source. + + + + There are situations when NLog have to compare the time originated from TimeSource + to the time originated externally in the system. + To be able to provide meaningful result of such comparisons the system time must be expressed in + the same form as TimeSource time. + + + Examples: + - If the TimeSource provides time values of local time, it should also convert the provided + to the local time. + - If the TimeSource shifts or skews its time values, it should also apply + the same transform to the given . + + + + + + Marks class as a time source and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the time source. + + + diff --git a/packages/NLog.4.7.2/lib/netstandard2.0/NLog.dll b/packages/NLog.4.7.2/lib/netstandard2.0/NLog.dll new file mode 100644 index 0000000000000000000000000000000000000000..484aace18f8ae1e6b62627cfb53cbc54222d8e04 GIT binary patch literal 813568 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%0D5&K3T|NHq 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 z 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

)UGO9q$2I$BW&N}LPsMsq*$C_-DLacCwtottF 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

n(Ss!ps`~r5L^i2+@{PTrociqR~eoFb% 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 z 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 + + + NLog + + + +

+ Indicates that the value of the marked element could be null sometimes, + so the check for null is necessary before its usage. + + + [CanBeNull] object Test() => null; + + void UseTest() { + var p = Test(); + var s = p.ToString(); // Warning: Possible 'System.NullReferenceException' + } + + + + + Indicates that the value of the marked element could never be null. + + + [NotNull] object Foo() { + return null; // Warning: Possible 'null' assignment + } + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can never be null. + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can be null. + + + + + Indicates that the marked method builds string by format pattern and (optional) arguments. + Parameter, which contains format string, should be given in constructor. The format string + should be in -like form. + + + [StringFormatMethod("message")] + void ShowError(string message, params object[] args) { /* do something */ } + + void Foo() { + ShowError("Failed: {0}"); // Warning: Non-existing argument in format string + } + + + + + Specifies which parameter of an annotated method should be treated as format-string + + + + + For a parameter that is expected to be one of the limited set of values. + Specify fields of which type should be used as values for this parameter. + + + + + Indicates that the function argument should be string literal and match one + of the parameters of the caller function. For example, ReSharper annotates + the parameter of . + + + void Foo(string param) { + if (param == null) + throw new ArgumentNullException("par"); // Warning: Cannot resolve symbol + } + + + + + Indicates that the method is contained in a type that implements + System.ComponentModel.INotifyPropertyChanged interface and this method + is used to notify that some property value changed. + + + The method should be non-static and conform to one of the supported signatures: + + NotifyChanged(string) + NotifyChanged(params string[]) + NotifyChanged{T}(Expression{Func{T}}) + NotifyChanged{T,U}(Expression{Func{T,U}}) + SetProperty{T}(ref T, T, string) + + + + public class Foo : INotifyPropertyChanged { + public event PropertyChangedEventHandler PropertyChanged; + + [NotifyPropertyChangedInvocator] + protected virtual void NotifyChanged(string propertyName) { ... } + + string _name; + + public string Name { + get { return _name; } + set { _name = value; NotifyChanged("LastName"); /* Warning */ } + } + } + + Examples of generated notifications: + + NotifyChanged("Property") + NotifyChanged(() => Property) + NotifyChanged((VM x) => x.Property) + SetProperty(ref myField, value, "Property") + + + + + + Describes dependency between method input and output. + + +

Function Definition Table syntax:

+ + FDT ::= FDTRow [;FDTRow]* + FDTRow ::= Input => Output | Output <= Input + Input ::= ParameterName: Value [, Input]* + Output ::= [ParameterName: Value]* {halt|stop|void|nothing|Value} + Value ::= true | false | null | notnull | canbenull + + If method has single input parameter, it's name could be omitted.
+ Using halt (or void/nothing, which is the same) for method output + means that the methods doesn't return normally (throws or terminates the process).
+ Value canbenull is only applicable for output parameters.
+ You can use multiple [ContractAnnotation] for each FDT row, or use single attribute + with rows separated by semicolon. There is no notion of order rows, all rows are checked + for applicability and applied per each program state tracked by R# analysis.
+
+ + + [ContractAnnotation("=> halt")] + public void TerminationMethod() + + + [ContractAnnotation("halt <= condition: false")] + public void Assert(bool condition, string text) // regular assertion method + + + [ContractAnnotation("s:null => true")] + public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty() + + + // A method that returns null if the parameter is null, + // and not null if the parameter is not null + [ContractAnnotation("null => null; notnull => notnull")] + public object Transform(object data) + + + [ContractAnnotation("=> true, result: notnull; => false, result: null")] + public bool TryParse(string s, out Person result) + + +
+ + + Indicates that marked element should be localized or not. + + + [LocalizationRequiredAttribute(true)] + class Foo { + string str = "my string"; // Warning: Localizable string + } + + + + + Indicates that the value of the marked type (or its derivatives) + cannot be compared using '==' or '!=' operators and Equals() + should be used instead. However, using '==' or '!=' for comparison + with null is always permitted. + + + [CannotApplyEqualityOperator] + class NoEquality { } + + class UsesNoEquality { + void Test() { + var ca1 = new NoEquality(); + var ca2 = new NoEquality(); + if (ca1 != null) { // OK + bool condition = ca1 == ca2; // Warning + } + } + } + + + + + When applied to a target attribute, specifies a requirement for any type marked + with the target attribute to implement or inherit specific type or types. + + + [BaseTypeRequired(typeof(IComponent)] // Specify requirement + class ComponentAttribute : Attribute { } + + [Component] // ComponentAttribute requires implementing IComponent interface + class MyComponent : IComponent { } + + + + + Indicates that the marked symbol is used implicitly (e.g. via reflection, in external library), + so this symbol will not be marked as unused (as well as by other usage inspections). + + + + + Should be used on attributes and causes ReSharper to not mark symbols marked with such attributes + as unused (as well as by other usage inspections) + + + + Only entity marked with attribute considered used. + + + Indicates implicit assignment to a member. + + + + Indicates implicit instantiation of a type with fixed constructor signature. + That means any unused constructor parameters won't be reported as such. + + + + Indicates implicit instantiation of a type. + + + + Specify what is considered used implicitly when marked + with or . + + + + Members of entity marked with attribute are considered used. + + + Entity marked with attribute and all its members considered used. + + + + This attribute is intended to mark publicly available API + which should not be removed and so is treated as used. + + + + + Tells code analysis engine if the parameter is completely handled when the invoked method is on stack. + If the parameter is a delegate, indicates that delegate is executed while the method is executed. + If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + + + + + Indicates that a method does not make any observable state changes. + The same as System.Diagnostics.Contracts.PureAttribute. + + + [Pure] int Multiply(int x, int y) => x * y; + + void M() { + Multiply(123, 42); // Waring: Return value of pure method is not used + } + + + + + Indicates that the return value of method invocation must be used. + + + + + Indicates the type member or parameter of some type, that should be used instead of all other ways + to get the value that type. This annotation is useful when you have some "context" value evaluated + and stored somewhere, meaning that all other ways to get this value must be consolidated with existing one. + + + class Foo { + [ProvidesContext] IBarService _barService = ...; + + void ProcessNode(INode node) { + DoSomething(node, node.GetGlobalServices().Bar); + // ^ Warning: use value of '_barService' field + } + } + + + + + Indicates that a parameter is a path to a file or a folder within a web project. + Path can be relative or absolute, starting from web root (~). + + + + + An extension method marked with this attribute is processed by ReSharper code completion + as a 'Source Template'. When extension method is completed over some expression, it's source code + is automatically expanded like a template at call site. + + + Template method body can contain valid source code and/or special comments starting with '$'. + Text inside these comments is added as source code when the template is applied. Template parameters + can be used either as additional method parameters or as identifiers wrapped in two '$' signs. + Use the attribute to specify macros for parameters. + + + In this example, the 'forEach' method is a source template available over all values + of enumerable types, producing ordinary C# 'foreach' statement and placing caret inside block: + + [SourceTemplate] + public static void forEach<T>(this IEnumerable<T> xs) { + foreach (var x in xs) { + //$ $END$ + } + } + + + + + + Allows specifying a macro for a parameter of a source template. + + + You can apply the attribute on the whole method or on any of its additional parameters. The macro expression + is defined in the property. When applied on a method, the target + template parameter is defined in the property. To apply the macro silently + for the parameter, set the property value = -1. + + + Applying the attribute on a source template method: + + [SourceTemplate, Macro(Target = "item", Expression = "suggestVariableName()")] + public static void forEach<T>(this IEnumerable<T> collection) { + foreach (var item in collection) { + //$ $END$ + } + } + + Applying the attribute on a template method parameter: + + [SourceTemplate] + public static void something(this Entity x, [Macro(Expression = "guid()", Editable = -1)] string newguid) { + /*$ var $x$Id = "$newguid$" + x.ToString(); + x.DoSomething($x$Id); */ + } + + + + + + Allows specifying a macro that will be executed for a source template + parameter when the template is expanded. + + + + + Allows specifying which occurrence of the target parameter becomes editable when the template is deployed. + + + If the target parameter is used several times in the template, only one occurrence becomes editable; + other occurrences are changed synchronously. To specify the zero-based index of the editable occurrence, + use values >= 0. To make the parameter non-editable when the template is expanded, use -1. + > + + + + Identifies the target parameter of a source template if the + is applied on a template method. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC action. If applied to a method, the MVC action name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC area. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is + an MVC controller. If applied to a method, the MVC controller name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC Master. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC model type. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is an MVC + partial view. If applied to a method, the MVC partial view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Allows disabling inspections for MVC views within a class or a method. + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC display template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.DisplayExtensions.DisplayForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC editor template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.EditorExtensions.EditorForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC template. + Use this attribute for custom wrappers similar to + System.ComponentModel.DataAnnotations.UIHintAttribute(System.String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component. If applied to a method, the MVC view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Controller.View(Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component name. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component view. If applied to a method, the MVC view component view name is default. + + + + + ASP.NET MVC attribute. When applied to a parameter of an attribute, + indicates that this parameter is an MVC action name. + + + [ActionName("Foo")] + public ActionResult Login(string returnUrl) { + ViewBag.ReturnUrl = Url.Action("Foo"); // OK + return RedirectToAction("Bar"); // Error: Cannot resolve action + } + + + + + Razor attribute. Indicates that a parameter or a method is a Razor section. + Use this attribute for custom wrappers similar to + System.Web.WebPages.WebPageBase.RenderSection(String). + + + + + Indicates how method, constructor invocation or property access + over collection type affects content of the collection. + + + + Method does not use or modify content of the collection. + + + Method only reads content of the collection but does not modify it. + + + Method can change content of the collection but does not add new elements. + + + Method can add new elements to the collection. + + + + Indicates that the marked method is assertion method, i.e. it halts control flow if + one of the conditions is satisfied. To set the condition, mark one of the parameters with + attribute. + + + + + Indicates the condition parameter of the assertion method. The method itself should be + marked by attribute. The mandatory argument of + the attribute is the assertion type. + + + + + Specifies assertion type. If the assertion method argument satisfies the condition, + then the execution continues. Otherwise, execution is assumed to be halted. + + + + Marked parameter should be evaluated to true. + + + Marked parameter should be evaluated to false. + + + Marked parameter should be evaluated to null value. + + + Marked parameter should be evaluated to not null value. + + + + Indicates that the marked method unconditionally terminates control flow execution. + For example, it could unconditionally throw exception. + + + + + Indicates that method is pure LINQ method, with postponed enumeration (like Enumerable.Select, + .Where). This annotation allows inference of [InstantHandle] annotation for parameters + of delegate type by analyzing LINQ method chains. + + + + + Indicates that IEnumerable, passed as parameter, is not enumerated. + + + + + Indicates that parameter is regular expression pattern. + + + + + Prevents the Member Reordering feature from tossing members of the marked class. + + + The attribute must be mentioned in your member reordering patterns + + + + + XAML attribute. Indicates the type that has ItemsSource property and should be treated + as ItemsControl-derived type, to enable inner items DataContext type resolve. + + + + + XAML attribute. Indicates the property of some BindingBase-derived type, that + is used to bind some item of ItemsControl-derived type. This annotation will + enable the DataContext type resolve for XAML bindings for such properties. + + + Property should have the tree ancestor of the ItemsControl type or + marked with the attribute. + + + + + Support implementation of + + + + + + + + + + + + + + + + + Asynchronous continuation delegate - function invoked at the end of asynchronous + processing. + + Exception during asynchronous processing or null if no exception + was thrown. + + + + Helpers for asynchronous operations. + + + + + Iterates over all items in the given collection and runs the specified action + in sequence (each action executes only after the preceding one has completed without an error). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Repeats the specified asynchronous action multiple times and invokes asynchronous continuation at the end. + + The repeat count. + The asynchronous continuation to invoke at the end. + The action to invoke. + + + + Modifies the continuation by pre-pending given action to execute just before it. + + The async continuation. + The action to pre-pend. + Continuation which will execute the given action before forwarding to the actual continuation. + + + + Attaches a timeout to a continuation which will invoke the continuation when the specified + timeout has elapsed. + + The asynchronous continuation. + The timeout. + Wrapped continuation. + + + + Iterates over all items in the given collection and runs the specified action + in parallel (each action executes on a thread from thread pool). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Runs the specified asynchronous action synchronously (blocks until the continuation has + been invoked). + + The action. + + Using this method is not recommended because it will block the calling thread. + + + + + Wraps the continuation with a guard which will only make sure that the continuation function + is invoked only once. + + The asynchronous continuation. + Wrapped asynchronous continuation. + + + + Gets the combined exception from all exceptions in the list. + + The exceptions. + Combined exception or null if no exception was thrown. + + + + Disposes the Timer, and waits for it to leave the Timer-callback-method + + The Timer object to dispose + Timeout to wait (TimeSpan.Zero means dispose without waiting) + Timer disposed within timeout (true/false) + + + + Asynchronous action. + + Continuation to be invoked at the end of action. + + + + Asynchronous action with one argument. + + Type of the argument. + Argument to the action. + Continuation to be invoked at the end of action. + + + + Represents the logging event with asynchronous continuation. + + + + + Initializes a new instance of the struct. + + The log event. + The continuation. + + + + Gets the log event. + + + + + Gets the continuation. + + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + A value of true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + String Conversion Helpers + + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + Output value + Default value + Returns false if the input value could not be parsed + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + The type of the enum + Output value. Null if parse failed + + + + Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. A parameter specifies whether the operation is case-sensitive. The return value indicates whether the conversion succeeded. + + The enumeration type to which to convert value. + The string representation of the enumeration name or underlying value to convert. + true to ignore case; false to consider case. + When this method returns, result contains an object of type TEnum whose value is represented by value if the parse operation succeeds. If the parse operation fails, result contains the default value of the underlying type of TEnum. Note that this value need not be a member of the TEnum enumeration. This parameter is passed uninitialized. + true if the value parameter was converted successfully; otherwise, false. + Wrapper because Enum.TryParse is not present in .net 3.5 + + + + Enum.TryParse implementation for .net 3.5 + + + + Don't uses reflection + + + + Enables to extract extra context details for + + + + + Name of context + + + + + The current LogFactory next to LogManager + + + + + NLog internal logger. + + Writes to file, console or custom text writer (see ) + + + Don't use as that can lead to recursive calls - stackoverflow + + + + + Gets a value indicating whether internal log includes Trace messages. + + + + + Gets a value indicating whether internal log includes Debug messages. + + + + + Gets a value indicating whether internal log includes Info messages. + + + + + Gets a value indicating whether internal log includes Warn messages. + + + + + Gets a value indicating whether internal log includes Error messages. + + + + + Gets a value indicating whether internal log includes Fatal messages. + + + + + Logs the specified message without an at the Trace level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + Log message. + + + + Logs the specified message without an at the Trace level. + will be only called when logging is enabled for level Trace. + + Function that returns the log message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Trace level. + will be only called when logging is enabled for level Trace. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Debug level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Debug level. + + Log message. + + + + Logs the specified message without an at the Debug level. + will be only called when logging is enabled for level Debug. + + Function that returns the log message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Debug level. + will be only called when logging is enabled for level Debug. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Info level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Info level. + + Log message. + + + + Logs the specified message without an at the Info level. + will be only called when logging is enabled for level Info. + + Function that returns the log message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Info level. + will be only called when logging is enabled for level Info. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Warn level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Warn level. + + Log message. + + + + Logs the specified message without an at the Warn level. + will be only called when logging is enabled for level Warn. + + Function that returns the log message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Warn level. + will be only called when logging is enabled for level Warn. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Error level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Error level. + + Log message. + + + + Logs the specified message without an at the Error level. + will be only called when logging is enabled for level Error. + + Function that returns the log message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Error level. + will be only called when logging is enabled for level Error. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Fatal level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Fatal level. + + Log message. + + + + Logs the specified message without an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Function that returns the log message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Exception to be logged. + Function that returns the log message. + + + + Initializes static members of the InternalLogger class. + + + + + Set the config of the InternalLogger with defaults and config. + + + + + Gets or sets the minimal internal log level. + + If set to , then messages of the levels , and will be written. + + + + Gets or sets a value indicating whether internal messages should be written to the console output stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the console error stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the .Trace + + + + + Gets or sets the file path of the internal log file. + + A value of value disables internal logging to a file. + + + + Gets or sets the text writer that will receive internal logs. + + + + + Event written to the internal log. + Please note that the event is not triggered when then event hasn't the minimal log level set by + + + + + Gets or sets a value indicating whether timestamp should be included in internal log output. + + + + + Is there an thrown when writing the message? + + + + + Logs the specified message without an at the specified level. + + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the specified level. + + Log level. + Log message. + + + + Logs the specified message without an at the specified level. + will be only called when logging is enabled for level . + + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + will be only called when logging is enabled for level . + + Exception to be logged. + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Log message. + + + + Write to internallogger. + + optional exception to be logged. + level + message + optional args for + + + + Create log line with timestamp, exception message etc (if configured) + + + + + Determine if logging should be avoided because of exception type. + + The exception to check. + true if logging should be avoided; otherwise, false. + + + + Determine if logging is enabled for given LogLevel + + The for the log event. + true if logging is enabled; otherwise, false. + + + + Determine if logging is enabled. + + true if logging is enabled; otherwise, false. + + + + Write internal messages to the log file defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged only when the property is true, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged when the property is true, otherwise the + method has no effect. + + + + + Write internal messages to the . + + A message to write. + + Works when property set to true. + The is used in Debug and Release configuration. + The works only in Debug configuration and this is reason why is replaced by . + in DEBUG + + + + + Logs the assembly version and file version of the given Assembly. + + The assembly to log. + + + + A message has been written to the internal logger + + + + + The rendered message + + + + + The log level + + + + + The exception. Could be null. + + + + + The type that triggered this internal log event, for example the FileTarget. + This property is not always populated. + + + + + The context name that triggered this internal log event, for example the name of the Target. + This property is not always populated. + + + + + + + + A cyclic buffer of object. + + + + + Initializes a new instance of the class. + + Buffer size. + Whether buffer should grow as it becomes full. + The maximum number of items that the buffer can grow to. + + + + Gets the capacity of the buffer + + + + + Gets the number of items in the buffer + + + + + Adds the specified log event to the buffer. + + Log event. + The number of items in the buffer. + + + + Gets the array of events accumulated in the buffer and clears the buffer as one atomic operation. + + Events in the buffer. + + + + Condition and expression. + + + + + Initializes a new instance of the class. + + Left hand side of the AND expression. + Right hand side of the AND expression. + + + + Gets the left hand side of the AND expression. + + + + + Gets the right hand side of the AND expression. + + + + + Returns a string representation of this expression. + + A concatenated '(Left) and (Right)' string. + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the conjunction operator. + + + + Exception during evaluation of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Base class for representing nodes in condition expression trees. + + + + + Converts condition text to a condition expression tree. + + Condition text to be converted. + Condition expression tree. + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition layout expression (represented by a string literal + with embedded ${}). + + + + + Initializes a new instance of the class. + + The layout. + + + + Gets the layout. + + The layout. + + + + Returns a string representation of this expression. + + String literal in single quotes. + + + + Evaluates the expression by calculating the value + of the layout in the specified evaluation context. + + Evaluation context. + The value of the layout. + + + + Condition level expression (represented by the level keyword). + + + + + Returns a string representation of the expression. + + The 'level' string. + + + + Evaluates to the current log level. + + Evaluation context. Ignored. + The object representing current log level. + + + + Condition literal expression (numeric, LogLevel.XXX, true or false). + + + + + Initializes a new instance of the class. + + Literal value. + + + + Gets the literal value. + + The literal value. + + + + Returns a string representation of the expression. + + The literal value. + + + + Evaluates the expression. + + Evaluation context. + The literal value as passed in the constructor. + + + + Condition logger name expression (represented by the logger keyword). + + + + + Returns a string representation of this expression. + + A logger string. + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + Returns a string representation of this expression. + + The 'message' string. + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Initializes a new instance of the class. + + Condition method name. + + + + Condition method invocation expression (represented by method(p1,p2,p3) syntax). + + + + + Initializes a new instance of the class. + + Name of the condition method. + of the condition method. + Precompiled delegate of the condition method. + The method parameters. + + + + Gets the method info. + + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + A bunch of utility methods (mostly predicates) which can be used in + condition expressions. Partially inspired by XPath 1.0. + + + + + Compares two values for equality. + + The first value. + The second value. + true when two objects are equal, false otherwise. + + + + Compares two strings for equality. + + The first string. + The second string. + Optional. If true, case is ignored; if false (default), case is significant. + true when two strings are equal, false otherwise. + + + + Gets or sets a value indicating whether the second string is a substring of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a substring of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a prefix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a suffix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Returns the length of a string. + + A string whose lengths is to be evaluated. + The length of the string. + + + + Indicates whether the specified regular expression finds a match in the specified input string. + + The string to search for a match. + The regular expression pattern to match. + A string consisting of the desired options for the test. The possible values are those of the separated by commas. + true if the regular expression finds a match; otherwise, false. + + + + + + + + + + + Marks the class as containing condition methods. + + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Gets the expression to be negated. + + The expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition or expression. + + + + + Initializes a new instance of the class. + + Left hand side of the OR expression. + Right hand side of the OR expression. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + Exception during parsing of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Condition parser. Turns a string representation of condition expression + into an expression tree. + + + + + Initializes a new instance of the class. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + Instance of used to resolve references to condition methods and layout renderers. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + + Try stringed keyword to + + + + success? + + + + Parse number + + negative number? minus should be parsed first. + + + + + Condition relational (==, !=, <, <=, + > or >=) expression. + + + + + Initializes a new instance of the class. + + The left expression. + The right expression. + The relational operator. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Gets the relational operator. + + The operator. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Compares the specified values using specified relational operator. + + The first value. + The second value. + The relational operator. + Result of the given relational operator. + + + + Promote values to the type needed for the comparision, e.g. parse a string to int. + + + + + + + Promotes to type + + + + success? + + + + Try to promote both values. First try to promote to , + when failed, try to . + + + + + + Get the order for the type for comparision. + + + index, 0 to max int. Lower is first + + + + Dictionary from type to index. Lower index should be tested first. + + + + + Build the dictionary needed for the order of the types. + + + + + + Get the string representing the current + + + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + Hand-written tokenizer for conditions. + + + + + Initializes a new instance of the class. + + The string reader. + + + + Gets the type of the token. + + The type of the token. + + + + Gets the token value. + + The token value. + + + + Gets the value of a string token. + + The string token value. + + + + Asserts current token type and advances to the next token. + + Expected token type. + If token type doesn't match, an exception is thrown. + + + + Asserts that current token is a keyword and returns its value and advances to the next token. + + Keyword value. + + + + Gets or sets a value indicating whether current keyword is equal to the specified value. + + The keyword. + + A value of true if current keyword is equal to the specified value; otherwise, false. + + + + + Gets or sets a value indicating whether the tokenizer has reached the end of the token stream. + + + A value of true if the tokenizer has reached the end of the token stream; otherwise, false. + + + + + Gets or sets a value indicating whether current token is a number. + + + A value of true if current token is a number; otherwise, false. + + + + + Gets or sets a value indicating whether the specified token is of specified type. + + The token type. + + A value of true if current token is of specified type; otherwise, false. + + + + + Gets the next token and sets and properties. + + + + + Try the comparison tokens (greater, smaller, greater-equals, smaller-equals) + + current char + is match + + + + Try the logical tokens (and, or, not, equals) + + current char + is match + + + + Mapping between characters and token types for punctuations. + + + + + Initializes a new instance of the CharToTokenType struct. + + The character. + Type of the token. + + + + Token types for condition expressions. + + + + + Marks the class or a member as advanced. Advanced classes and members are hidden by + default in generated documentation. + + + + + Initializes a new instance of the class. + + + + + Identifies that the output of layout or layout render does not change for the lifetime of the current appdomain. + + + A layout(renderer) could be converted to a literal when: + - The layout and all layout properties are SimpleLayout or [AppDomainFixedOutput] + + Recommendation: Apply this attribute to a layout or layout-renderer which have the result only changes by properties of type Layout. + + + + + Used to mark configurable parameters which are arrays. + Specifies the mapping between XML elements and .NET types. + + + + + Initializes a new instance of the class. + + The type of the array item. + The XML element name that represents the item. + + + + Gets the .NET type of the array item. + + + + + Gets the XML element name. + + + + + An assembly is trying to load. + + + + + New event args + + + + + + The assembly that is trying to load. + + + + + Constructs a new instance the configuration item (target, layout, layout renderer, etc.) given its type. + + Type of the item. + Created object of the specified type. + + + + Provides registration information for named items (targets, layouts, layout renderers, etc.) managed by NLog. + + Everything of an assembly could be loaded by + + + + + Called before the assembly will be loaded. + + + + + Initializes a new instance of the class. + + The assemblies to scan for named items. + + + + Gets or sets default singleton instance of . + + + This property implements lazy instantiation so that the is not built before + the internal logger is configured. + + + + + Gets or sets the creator delegate used to instantiate configuration objects. + + + By overriding this property, one can enable dependency injection or interception for created objects. + + + + + Gets the factory. + + The target factory. + + + + Gets the factory. + + The filter factory. + + + + gets the factory + + not using due to backwards-compatibility. + + + + + Gets the factory. + + The layout renderer factory. + + + + Gets the factory. + + The layout factory. + + + + Gets the ambient property factory. + + The ambient property factory. + + + + Legacy interface, no longer used by the NLog engine + + + + + Gets or sets the JSON serializer to use with or + + + + + Gets or sets the string serializer to use with + + + + + Gets or sets the custom object-type transformation for use in , or + + + + + Gets or sets the parameter converter to use with , or + + + + + Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) + + + - Null (Auto Detect) : NLog-parser checks for positional parameters, and will then fallback to string.Format-rendering. + - True: Always performs the parsing of and rendering of using the NLog-parser (Allows custom formatting with ) + - False: Always performs parsing and rendering using string.Format (Fastest if not using structured logging) + + + + + Gets the time source factory. + + The time source factory. + + + + Gets the condition method factory. + + The condition method factory. + + + + Gets the condition method factory (precompiled) + + The condition method factory. + + + + Registers named items from the assembly. + + The assembly. + + + + Registers named items from the assembly. + + The assembly. + Item name prefix. + + + + Call Preload for NLogPackageLoader + + + Every package could implement a class "NLogPackageLoader" (namespace not important) with the public static method "Preload" (no arguments) + This method will be called just before registering all items in the assembly. + + + + + + Call the Preload method for . The Preload method must be static. + + + + + + Clears the contents of all factories. + + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Builds the default configuration item factory. + + Default factory. + + + + Registers items in NLog.Extended.dll using late-bound types, so that we don't need a reference to NLog.Extended.dll. + + + + + Attribute used to mark the default parameters for layout renderers. + + + + + Initializes a new instance of the class. + + + + + Dynamic filtering with a positive list of enabled levels + + + + + Dynamic filtering with a minlevel and maxlevel range + + + + + Format of the exception output to the specific target. + + + + + Appends the Message of an Exception to the specified target. + + + + + Appends the type of an Exception to the specified target. + + + + + Appends the short type of an Exception to the specified target. + + + + + Appends the result of calling ToString() on an Exception to the specified target. + + + + + Appends the method name from Exception's stack trace to the specified target. + + + + + Appends the stack trace from an Exception to the specified target. + + + + + Appends the contents of an Exception's Data property to the specified target. + + + + + Destructure the exception (usually into JSON) + + + + + Appends the from the application or the object that caused the error. + + + + + Appends the from the application or the object that caused the error. + + + + + Appends any additional properties that specific type of Exception might have. + + + + + Factory for class-based items. + + The base type of each item. + The type of the attribute used to annotate items. + + + + Scans the assembly. + + The types to scan. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the item based on a type name. + + Name of the item. + Name of the type. + + + + Clears the contents of the factory. + + + + + Registers a single type definition. + + The item name. + The type of the item. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Creates an item instance. + + The name of the item. + Created item. + + + + Factory specialized for s. + + + + + Clear all func layouts + + + + + Register a layout renderer with a callback function. + + Name of the layoutrenderer, without ${}. + the renderer that renders the value. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides means to populate factories of named items (such as targets, layouts, layout renderers, etc.). + + + + + Implemented by objects which support installation and uninstallation. + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Interface for accessing configuration details + + + + + Name of the config section + + + + + Configuration Key/Value Pairs + + + + + Child config sections + + + + + Interface for loading NLog + + + + + Finds and loads the NLog configuration + + LogFactory that owns the NLog configuration + Name of NLog.config file (optional) + NLog configuration (or null if none found) + + + + Notifies when LoggingConfiguration has been successfully applied + + LogFactory that owns the NLog configuration + NLog Config + + + + Get file paths (including filename) for the possible NLog config files. + + Name of NLog.config file (optional) + The file paths to the possible config file + + + + Level enabled flags for each LogLevel ordinal + + + + + Converts the filter into a simple + + + + + Represents a factory of named items (such as targets, layouts, layout renderers, etc.). + + Base type for each item instance. + Item definition type (typically or ). + + + + Registers new item definition. + + Name of the item. + Item definition. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Creates item instance. + + Name of the item. + Newly created item instance. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides context for install/uninstall operations. + + + + + Mapping between log levels and console output colors. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log output. + + + + Gets or sets the installation log level. + + + + + Gets or sets a value indicating whether to ignore failures during installation. + + + + + Whether installation exceptions should be rethrown. If IgnoreFailures is set to true, + this property has no effect (there are no exceptions to rethrow). + + + + + Gets the installation parameters. + + + + + Gets or sets the log output. + + + + + Logs the specified trace message. + + The message. + The arguments. + + + + Logs the specified debug message. + + The message. + The arguments. + + + + Logs the specified informational message. + + The message. + The arguments. + + + + Logs the specified warning message. + + The message. + The arguments. + + + + Logs the specified error message. + + The message. + The arguments. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Creates the log event which can be used to render layouts during installation/uninstallations. + + Log event info object. + + + + Convert object-value into specified type + + + + + Parses the input value and converts into the wanted type + + Input Value + Wanted Type + Format to use when parsing + Culture to use when parsing + Output value with wanted type + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for extension loading + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for enabling NLog + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + LoggingConfiguration being built + + + + + Interface for fluent setup of LogFactory options for logevent serialization + + + + + LogFactory under configuration + + + + + Encapsulates and the logic to match the actual logger name + All subclasses defines immutable objects. + Concrete subclasses defines various matching rules through + + + + + Creates a concrete based on . + + + Rules used to select the concrete implementation returned: + + if is null => returns (never matches) + if doesn't contains any '*' nor '?' => returns (matches only on case sensitive equals) + if == '*' => returns (always matches) + if doesn't contain '?' + + if contains exactly 2 '*' one at the beginning and one at the end (i.e. "*foobar*) => returns + if contains exactly 1 '*' at the beginning (i.e. "*foobar") => returns + if contains exactly 1 '*' at the end (i.e. "foobar*") => returns + + + returns + + + + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + A concrete + + + + Returns the argument passed to + + + + + Checks whether given name matches the logger name pattern. + + String to be matched. + A value of when the name matches, otherwise. + + + + Defines a that never matches. + Used when pattern is null + + + + + Defines a that always matches. + Used when pattern is '*' + + + + + Defines a that matches with a case-sensitive Equals + Used when pattern is a string without wildcards '?' '*' + + + + + Defines a that matches with a case-sensitive StartsWith + Used when pattern is a string like "*foobar" + + + + + Defines a that matches with a case-sensitive EndsWith + Used when pattern is a string like "foobar*" + + + + + Defines a that matches with a case-sensitive Contains + Used when pattern is a string like "*foobar*" + + + + + Defines a that matches with a complex wildcards combinations: + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + used when pattern is a string containing any number of '?' or '*' in any position + i.e. "*Server[*].Connection[?]" + + + + + Keeps logging configuration and provides simple API to modify it. + + This class is thread-safe..ToList() is used for that purpose. + + + + Variables defined in xml or in API. name is case case insensitive. + + + + + Gets the factory that will be configured + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete on NLog 4.1 and it may be removed in a future release. + + + + Gets the variables defined in the configuration. + + + + + Gets a collection of named targets specified in the configuration. + + + A list of named targets. + + + Unnamed targets (such as those wrapped by other targets) are not returned. + + + + + Gets the collection of file names which should be watched for changes by NLog. + + + + + Gets the collection of logging rules. + + + + + Gets or sets the default culture info to use as . + + + Specific culture info or null to use + + + + + Gets all targets. + + + + + Compare objects based on their name. + + This property is use to cache the comparer object. + + + + Defines methods to support the comparison of objects for equality based on their name. + + + + + Registers the specified target object. The name of the target is read from . + + + The target object with a non + + when is + + + + Registers the specified target object under a given name. + + Name of the target. + The target object. + when is + when is + + + + Finds the target with the specified name. + + + The name of the target to be found. + + + Found target or when the target is not found. + + + + + Finds the target with the specified name and specified type. + + + The name of the target to be found. + + Type of the target + + Found target or when the target is not found of not of type + + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for all loglevels. + + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Finds the logging rule with the specified name. + + The name of the logging rule to be found. + Found logging rule or when not found. + + + + Removes the specified named logging rule. + + The name of the logging rule to be removed. + Found one or more logging rule to remove, or when not found. + + + + Called by LogManager when one of the log configuration files changes. + + + A new instance of that represents the updated configuration. + + + + + Removes the specified named target. + + Name of the target. + + + + Installs target-specific objects on current system. + + The installation context. + + Installation typically runs with administrative permissions. + + + + + Uninstalls target-specific objects from current system. + + The installation context. + + Uninstallation typically runs with administrative permissions. + + + + + Closes all targets and releases any unmanaged resources. + + + + + Log to the internal (NLog) logger the information about the and associated with this instance. + + + The information are only recorded in the internal logger if Debug level is enabled, otherwise nothing is + recorded. + + + + + Validates the configuration. + + + + + Copies all variables from provided dictionary into current configuration variables. + + Master variables dictionary + + + + Replace a simple variable with a value. The original value is removed and thus we cannot redo this in a later stage. + + + + + + + Checks whether unused targets exist. If found any, just write an internal log at Warn level. + If initializing not started or failed, then checking process will be canceled + + + + + + + + Arguments for events. + + + + + Initializes a new instance of the class. + + The new configuration. + The old configuration. + + + + Gets the old configuration. + + The old configuration. + + + + Gets the new configuration. + + The new configuration. + + + + Gets the new configuration + + The new configuration. + + + + Gets the old configuration + + The old configuration. + + + + Gets the optional boolean attribute value. + + + Name of the attribute. + Default value to return if the attribute is not found or if there is a parse error + Boolean attribute value or default. + + + + Remove the namespace (before :) + + + x:a, will be a + + + + + + + Enables loading of NLog configuration from a file + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Loads NLog configuration from + + + + + Constructor + + + + + + Loads NLog configuration from provided config section + + + + + + + Builds list with unique keys, using last value of duplicates. High priority keys placed first. + + + + + + + Parse loglevel, but don't throw if exception throwing is disabled + + Name of attribute for logging. + Value of parse. + Used if there is an exception + + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Parse {Rules} xml element + + + Rules are added to this parameter. + + + + Parse {Logger} xml element + + + + + + Parse boolean + + Name of the property for logging. + value to parse + Default value to return if the parse failed + Boolean attribute value or default. + + + + Arguments for . + + + + + Initializes a new instance of the class. + + Whether configuration reload has succeeded. + + + + Initializes a new instance of the class. + + Whether configuration reload has succeeded. + The exception during configuration reload. + + + + Gets a value indicating whether configuration reload has succeeded. + + A value of true if succeeded; otherwise, false. + + + + Gets the exception which occurred during configuration reload. + + The exception. + + + + Enables FileWatcher for the currently loaded NLog Configuration File, + and supports automatic reload on file modification. + + + + + Represents a logging rule. An equivalent of <logger /> configuration element. + + + + + Create an empty . + + + + + Create an empty . + + + + + Create a new with a and which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a new with a which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a (disabled) . You should call or see cref="EnableLoggingForLevels"/> to enable logging. + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Target to be written to when the rule matches. + + + + Rule identifier to allow rule lookup + + + + + Gets a collection of targets that should be written to when this rule matches. + + + + + Gets a collection of child rules to be evaluated when this rule matches. + + + + + Gets a collection of filters to be checked before writing to targets. + + + + + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + + Gets or sets logger name pattern. + + + Logger name pattern used by to check if a logger name matches this rule. + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + + + + Gets the collection of log levels enabled by this rule. + + + + + Default action if none of the filters match + + + + + Enables logging for a particular level. + + Level to be enabled. + + + + Enables logging for a particular levels between (included) and . + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Disables logging for a particular level. + + Level to be disabled. + + + + Disables logging for particular levels between (included) and . + + Minimum log level to be disables. + Maximum log level to de disabled. + + + + Enables logging the levels between (included) and . All the other levels will be disabled. + + >Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Returns a string representation of . Used for debugging. + + + A that represents the current . + + + + + Checks whether te particular log level is enabled for this rule. + + Level to be checked. + A value of when the log level is enabled, otherwise. + + + + Checks whether given name matches the . + + String to be matched. + A value of when the name matches, otherwise. + + + + Default filtering with static level config + + + + + Factory for locating methods. + + + + + Initializes a new instance of the class. + + Helper method to extract relevant methods from type + + + + Scans the assembly for classes marked with expected class + and methods marked with expected and adds them + to the factory. + + The types to scan. + The prefix to use for names. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Scans a type for relevant methods with their symbolic names + + Include types that are marked with this attribute + Include methods that are marked with this attribute + Class Type to scan + Collection of methods with their symbolic names + + + + Clears contents of the factory. + + + + + Registers the definition of a single method. + + The method name. + The method info. + + + + Registers the definition of a single method. + + The method name. + The method info. + The precompiled method delegate. + + + + Tries to retrieve method by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Tries to retrieve method-delegate by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Retrieves method by name. + + Method name. + MethodInfo object. + + + + Retrieves method by name. + + Method name. + Method delegate object. + + + + Tries to get method definition. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Marks the layout or layout renderer depends on mutable objects from the LogEvent + + This can be or + + + + + Attaches a simple name to an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The name of the item. + + + + Gets the name of the item. + + The name of the item. + + + + Indicates NLog should not scan this property during configuration. + + + + + Initializes a new instance of the class. + + + + + Marks the object as configuration item for NLog. + + + + + Initializes a new instance of the class. + + + + + Represents simple XML element with case-insensitive attribute semantics. + + + + + Initializes a new instance of the class. + + The reader to initialize element from. + + + + Prevents a default instance of the class from being created. + + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + Last error occured during configuration read + + + + + Returns children elements with the specified element name. + + Name of the element. + Children elements with the specified element name. + + + + Asserts that the name of the element is among specified element names. + + The allowed names. + + + + Returns all parsing errors from current and all child elements. + + + + + Special attribute we could ignore + + + + + Default implementation of + + + + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Provides simple programmatic configuration API used for trivial logging cases. + + Warning, these methods will overwrite the current config. + + + + + Configures NLog for console logging so that all messages above and including + the level are output to the console. + + + + + Configures NLog for console logging so that all messages above and including + the specified level are output to the console. + + The minimal logging level. + + + + Configures NLog for to log to the specified target so that all messages + above and including the level are output. + + The target to log all messages to. + + + + Configures NLog for to log to the specified target so that all messages + above and including the specified level are output. + + The target to log all messages to. + The minimal logging level. + + + + Configures NLog for file logging so that all messages above and including + the level are written to the specified file. + + Log file name. + + + + Configures NLog for file logging so that all messages above and including + the specified level are written to the specified file. + + Log file name. + The minimal logging level. + + + + Value indicating how stack trace should be captured when processing the log event. + + + + + Stack trace should not be captured. + + + + + Stack trace should be captured without source-level information. + + + + + Stack trace should be captured including source-level information such as line numbers. + + + + + Capture maximum amount of the stack trace information supported on the platform. + + + + + Marks the layout or layout renderer as thread independent - it producing correct results + regardless of the thread it's running on. + + Without this attribute everything is rendered on the main thread. + + + If this attribute is set on a layout, it could be rendered on the another thread. + This could be more efficient as it's skipped when not needed. + + If context like HttpContext.Current is needed, which is only available on the main thread, this attribute should not be applied. + + See the AsyncTargetWrapper and BufferTargetWrapper with the , using + + Apply this attribute when: + - The result can we rendered in another thread. Delaying this could be more efficient. And/Or, + - The result should not be precalculated, for example the target sends some extra context information. + + + + + Marks the layout or layout renderer as thread safe - it producing correct results + regardless of the number of threads it's running on. + + Without this attribute then the target concurrency will be reduced + + + + + A class for configuring NLog through an XML configuration file + (App.config style or App.nlog style). + + Parsing of the XML file is also implemented in this class. + + + - This class is thread-safe..ToList() is used for that purpose. + - Update TemplateXSD.xml for changes outside targets + + + + + Initializes a new instance of the class. + + Configuration file to be read. + + + + Initializes a new instance of the class. + + Configuration file to be read. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + XML reader to read from. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + The XML contents. + Name of the XML file. + The to which to apply any applicable configuration values. + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + NLog LogFactory + + + + Did the Succeeded? true= success, false= error, null = initialize not started yet. + + + + + Gets or sets a value indicating whether all of the configuration files + should be watched for changes and reloaded automatically when changed. + + + + + Gets the collection of file names which should be watched for changes by NLog. + This is the list of configuration files processed. + If the autoReload attribute is not set it returns empty collection. + + + + + Re-reads the original configuration file and returns the new object. + + The new object. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Create XML reader for (xml config) file. + + filepath + reader or null if filename is empty. + + + + Initializes the configuration. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Checks whether any error during XML configuration parsing has occured. + If there are any and ThrowConfigExceptions or ThrowExceptions + setting is enabled - throws NLogConfigurationException, otherwise + just write an internal log at Warn level. + + Root NLog configuration xml element + + + + Add a file with configuration. Check if not already included. + + + + + + + Parse the root + + + path to config file. + The default value for the autoReload option. + + + + Parse {configuration} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parse {NLog} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Include (multiple) files by filemask, e.g. *.nlog + + base directory in case if is relative + relative or absolute fileMask + + + + + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language + described
here. + + + + + Gets or sets the condition expression. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + An abstract filter class. Provides a way to eliminate log messages + based on properties other than logger name and log level. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the action to be taken when filter matches. + + + + + + Gets the result of evaluating filter against given log event. + + The log event. + Filter result. + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Marks class as a layout renderer and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the filter. + + + + Filter result. + + + + + The filter doesn't want to decide whether to log or discard the message. + + + + + The message should be logged. + + + + + The message should not be logged. + + + + + The message should be logged and processing should be finished. + + + + + The message should not be logged and processing should be finished. + + + + + A base class for filters that are based on comparing a value to a layout. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout to be used to filter log messages. + + The layout. + + + + + Matches when the calculated layout contains the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets the substring to be matched. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets a string to compare the layout to. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches the provided filter-method + + + + + Initializes a new instance of the class. + + + + + + + + Matches when the calculated layout does NOT contain the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets the substring to be matched. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is NOT equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a string to compare the layout to. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the result of the calculated layout has been repeated a moment ago + + + + + How long before a filter expires, and logging is accepted again + + + + + + Max length of filter values, will truncate if above limit + + + + + + Applies the configured action to the initial logevent that starts the timeout period. + Used to configure that it should ignore all events until timeout. + + + + + + Max number of unique filter values to expect simultaneously + + + + + + Default number of unique filter values to expect, will automatically increase if needed + + + + + + Insert FilterCount value into when an event is no longer filtered + + + + + + Append FilterCount to the when an event is no longer filtered + + + + + + Reuse internal buffers, and doesn't have to constantly allocate new buffers + + + + + + Default buffer size for the internal buffers + + + + + + Can be used if has been enabled. + + + + + Initializes a new instance of the class. + + + + + Checks whether log event should be logged or not. In case the LogEvent has just been repeated. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Uses object pooling, and prunes stale filter items when the pool runs dry + + + + + Remove stale filter-value from the cache, and fill them into the pool for reuse + + + + + Renders the Log Event into a filter value, that is used for checking if just repeated + + + + + Repeated LogEvent detected. Checks if it should activate filter-action + + + + + Filter Value State (mutable) + + + + + Filter Lookup Key (immutable) + + + + + A global logging class using caller info to find the logger. + + + + + Starts building a log event with the specified . + + The log level. + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Trace level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Debug level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Info level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Warn level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Error level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + Starts building a log event at the Fatal level. + + The full path of the source file that contains the caller. This is the file path at the time of compile. + An instance of the fluent . + + + + A fluent class to build log events for NLog. + + + + + Initializes a new instance of the class. + + The to send the log event. + + + + Initializes a new instance of the class. + + The to send the log event. + The for the log event. + + + + Gets the created by the builder. + + + + + Sets the information of the logging event. + + The exception information of the logging event. + current for chaining calls. + + + + Sets the level of the logging event. + + The level of the logging event. + current for chaining calls. + + + + Sets the logger name of the logging event. + + The logger name of the logging event. + current for chaining calls. + + + + Sets the log message on the logging event. + + The log message for the logging event. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + The fourth object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + An object that supplies culture-specific formatting information. + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets a per-event context property on the logging event. + + The name of the context property. + The value of the context property. + current for chaining calls. + + + + Sets multiple per-event context properties on the logging event. + + The properties to set. + current for chaining calls. + + + + Sets the timestamp of the logging event. + + The timestamp of the logging event. + current for chaining calls. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + current for chaining calls. + + + + Writes the log event to the underlying logger. + + The method or property name of the caller to the method. This is set at by the compiler. + The full path of the source file that contains the caller. This is set at by the compiler. + The line number in the source file at which the method is called. This is set at by the compiler. + + + + Writes the log event to the underlying logger if the condition delegate is true. + + If condition is true, write log event; otherwise ignore event. + The method or property name of the caller to the method. This is set at by the compiler. + The full path of the source file that contains the caller. This is set at by the compiler. + The line number in the source file at which the method is called. This is set at by the compiler. + + + + Writes the log event to the underlying logger if the condition is true. + + If condition is true, write log event; otherwise ignore event. + The method or property name of the caller to the method. This is set at by the compiler. + The full path of the source file that contains the caller. This is set at by the compiler. + The line number in the source file at which the method is called. This is set at by the compiler. + + + + Extension methods for NLog . + + + + + Starts building a log event with the specified . + + The logger to write the log event to. + The log level. + current for chaining calls. + + + + Starts building a log event at the Trace level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Debug level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Info level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Warn level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Error level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Fatal level. + + The logger to write the log event to. + current for chaining calls. + + + + Global Diagnostics Context + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Global Diagnostics Context - a dictionary structure to hold per-application-instance values. + + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The item value, if defined; otherwise null. + + + + Returns all item names + + A collection of the names of all items in the Global Diagnostics Context. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Include context properties + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Interface for serialization of object values into JSON format + + + + + Serialization of an object into JSON format. + + The object to serialize to JSON. + Output destination. + Serialize succeeded (true/false) + + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format.s + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Logger with only generic methods (passing 'LogLevel' to methods) and core properties. + + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Extensions for NLog . + + + + + Writes the diagnostic message and exception at the specified level. + + A logger implementation that will handle the message. + The log level. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Allocates new builder and appends to the provided target builder on dispose + + + + + Access the new builder allocated + + + + + Helpers for . + + + + + Load from url + + file or path, including .dll + basepath, optional + + + + + Load from url + + name without .dll + + + + + Forward declare of system delegate type for use by other classes + + + + + Keeps track of pending operation count, and can notify when pending operation count reaches zero + + + + + Mark operation has started + + + + + Mark operation has completed + + Exception coming from the completed operation [optional] + + + + Registers an AsyncContinuation to be called when all pending operations have completed + + Invoked on completion + AsyncContinuation operation + + + + Clear o + + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Legacy attempt to skip async MoveNext, but caused source file line number to be lost + + + + + Gets the entire stack trace. + + + + + Finds first user stack frame in a stack trace + + The stack trace of the logging method invocation + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + Index of the first user stack frame or 0 if all stack frames are non-user + + + + This is only done for legacy reason, as the correct method-name and line-number should be extracted from the MoveNext-StackFrame + + The stack trace of the logging method invocation + Starting point for skipping async MoveNext-frames + + + + Assembly to skip? + + Find assembly via this frame. + true, we should skip. + + + + Is this the type of the logger? + + get type of this logger in this frame. + Type of the logger. + + + + + Memory optimized filtering + + Passing state too avoid delegate capture and memory-allocations. + + + + Provides untyped IDictionary interface on top of generic IDictionary. + + The type of the key. + The type of the value. + + + + Initializes a new instance of the DictionaryAdapter class. + + The implementation. + + + + Gets an object containing the values in the object. + + + + An object containing the values in the object. + + + + + Gets the number of elements contained in the . + + + + The number of elements contained in the . + + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + + + Gets an object that can be used to synchronize access to the . + + + + An object that can be used to synchronize access to the . + + + + + Gets a value indicating whether the object has a fixed size. + + + true if the object has a fixed size; otherwise, false. + + + + + Gets a value indicating whether the object is read-only. + + + true if the object is read-only; otherwise, false. + + + + + Gets an object containing the keys of the object. + + + + An object containing the keys of the object. + + + + + Gets or sets the with the specified key. + + Dictionary key. + Value corresponding to key or null if not found + + + + Adds an element with the provided key and value to the object. + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + + Removes all elements from the object. + + + + + Determines whether the object contains an element with the specified key. + + The key to locate in the object. + + True if the contains an element with the key; otherwise, false. + + + + + Returns an object for the object. + + + An object for the object. + + + + + Removes the element with the specified key from the object. + + The key of the element to remove. + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Wrapper IDictionaryEnumerator. + + + + + Initializes a new instance of the class. + + The wrapped. + + + + Gets both the key and the value of the current dictionary entry. + + + + A containing both the key and the value of the current dictionary entry. + + + + + Gets the key of the current dictionary entry. + + + + The key of the current element of the enumeration. + + + + + Gets the value of the current dictionary entry. + + + + The value of the current element of the enumeration. + + + + + Gets the current element in the collection. + + + + The current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + + True if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Ensures that IDictionary.GetEnumerator returns DictionaryEntry values + + + + + UTF-8 BOM 239, 187, 191 + + + + + Safe way to get environment variables. + + + + + Helper class for dealing with exceptions. + + + + + Mark this exception as logged to the . + + + + + + + Is this exception logged to the ? + + + trueif the has been logged to the . + + + + Determines whether the exception must be rethrown and logs the error to the if is false. + + Advised to log first the error to the before calling this method. + + The exception to check. + Target context of the exception. + trueif the must be rethrown, false otherwise. + + + + Determines whether the exception must be rethrown immediately, without logging the error to the . + + Only used this method in special cases. + + The exception to check. + trueif the must be rethrown, false otherwise. + + + + Object construction helper. + + + + + Adapter for to + + + + + Initializes a new instance of the class. + + The to wrap. + + + + Creates an AppDomainWrapper for the current + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Interface for fakeable the current . Not fully implemented, please methods/properties as necessary. + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + Abstract calls for the application environment + + + + + Gets current process name (excluding filename extension, if any). + + + + + Abstract calls to FileSystem + + + + Determines whether the specified file exists. + The file to check. + + + Returns the content of the specified file + The file to load. + + + + Base class for optimized file appenders. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Gets the path of the file, including file extension. + + The name of the file. + + + + Gets or sets the creation time for a file associated with the appender. The time returned is in Coordinated + Universal Time [UTC] standard. + + The creation time of the file. + + + + Gets or sets the creation time for a file associated with the appender. Synchronized by + The time format is based on + + + + + Gets the last time the file associated with the appender is opened. The time returned is in Coordinated + Universal Time [UTC] standard. + + The time the file was last opened. + + + + Gets the file creation parameters. + + The file creation parameters. + + + + Writes the specified bytes. + + The bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Creates the file stream. + + If set to true sets the file stream to allow shared writing. + If larger than 0 then it will be used instead of the default BufferSize for the FileStream. + A object which can be used to write to the file. + + + + Base class for optimized file appenders which require the usage of a mutex. + + It is possible to use this class as replacement of BaseFileAppender and the mutex functionality + is not enforced to the implementing subclasses. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Gets the mutually-exclusive lock for archiving files. + + The mutex for archiving. + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Creates a mutex that is sharable by more than one process. + + The prefix to use for the name of the mutex. + A object which is sharable by multiple processes. + + + + Implementation of which caches + file information. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Closes this instance of the appender. + + + + + Flushes this current appender. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Writes the specified bytes to a file. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Factory class which creates objects. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Maintains a collection of file appenders usually associated with file targets. + + + + + An "empty" instance of the class with zero size and empty list of appenders. + + + + + Initializes a new "empty" instance of the class with zero size and empty + list of appenders. + + + + + Initializes a new instance of the class. + + + The size of the list should be positive. No validations are performed during initialization as it is an + internal class. + + Total number of appenders allowed in list. + Factory used to create each appender. + Parameters used for creating a file. + + + + The archive file path pattern that is used to detect when archiving occurs. + + + + + Invalidates appenders for all files that were archived. + + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + Interface that provides parameters for create file function. + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + Gets or sets the log file buffer size in bytes. + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + Gets or sets the file attributes (Windows only). + + + + + Should archive mutex be created? + + + + + Should manual simple detection of file deletion be enabled? + + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + The archive file path pattern that is used to detect when archiving occurs. + + + + + Invalidates appenders for all files that were archived. + + + + + Interface implemented by all factories capable of creating file appenders. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + Instance of which can be used to write to the file. + + + + Provides a multi process-safe atomic file appends while + keeping the files open. + + + On Unix you can get all the appends to be atomic, even when multiple + processes are trying to write to the same file, because setting the file + pointer to the end of the file and appending can be made one operation. + On Win32 we need to maintain some synchronization between processes + (global named mutex is used for this) + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Closes this instance. + + + + + Flushes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Appender used to discard data for the FileTarget. + Used mostly for testing entire stack except the actual writing to disk. + Throws away all data. + + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Multi-process and multi-host file appender which attempts + to get exclusive write access and retries if it's not available. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Optimized single-process file appender which keeps the file open for exclusive write. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + A layout that represents a filePath. + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Cached invalid file names char array to avoid memory allocation every time Path.GetInvalidFileNameChars() is called. + + + + + not null when == false + + + + + non null is fixed, + + + + + is the cache-key, and when newly rendered filename matches the cache-key, + then it reuses the cleaned cache-value . + + + + + is the cache-value that is reused, when the newly rendered filename + matches the cache-key + + + + Initializes a new instance of the class. + + + + Render the raw filename from Layout + + The log event. + StringBuilder to minimize allocations [optional]. + String representation of a layout. + + + + Convert the raw filename to a correct filename + + The filename generated by Layout. + String representation of a correct filename. + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Convert object to string + + value + format for conversion. + + + If is null and isn't a already, then the will get a locked by + + + + + Format a log message + + + + + Format the message and return + + LogEvent with message to be formatted + formatted message + + + + Has the logevent properties? + + LogEvent with message to be formatted + False when logevent has no properties to be extracted + + + + Appends the logevent message to the provided StringBuilder + + LogEvent with message to be formatted + The to append the formatted message. + + + + Get the Raw, unformatted and unstrinyfied, value + + + + + Get the raw value + + + The value + RawValue supported? + + + + Interface implemented by layouts and layout renderers. + + + + + Renders the the value of layout or layout renderer in the context of the specified log event. + + The log event. + String representation of a layout. + + + + Supports mocking of SMTP Client code. + + + + + Specifies how outgoing email messages will be handled. + + + + + Gets or sets the name or IP address of the host used for SMTP transactions. + + + + + Gets or sets the port used for SMTP transactions. + + + + + Gets or sets a value that specifies the amount of time after which a synchronous Send call times out. + + + + + Gets or sets the credentials used to authenticate the sender. + + + + + Sends an e-mail message to an SMTP server for delivery. These methods block while the message is being transmitted. + + + System.Net.Mail.MailMessage + MailMessage + A MailMessage that contains the message to send. + + + + Gets or sets the folder where applications save mail messages to be processed by the local SMTP server. + + + + + Supports rendering as string value with limited or no allocations (preferred) + + + + + Renders the value of layout renderer in the context of the specified log event + + + null if not possible or unknown + + + + Supports object initialization and termination. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Render the event info as parse as short + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as int + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as bool + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Logger configuration. + + + + + Initializes a new instance of the class. + + The targets by level. + Use the old exception log handling of NLog 3.0? + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete before NLog 4.3.11 and it will be removed in NLog 5. + + + + Gets targets for the specified level. + + The level. + Chain of targets with attached filters. + + + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + New formatter + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + The MessageFormatter delegate + + + + + + + + Most-Recently-Used-Cache, that discards less frequently used items on overflow + + + + + Constructor + + Maximum number of items the cache will hold before discarding. + + + + Attempt to insert item into cache. + + Key of the item to be inserted in the cache. + Value of the item to be inserted in the cache. + true when the key does not already exist in the cache, false otherwise. + + + + Lookup existing item in cache. + + Key of the item to be searched in the cache. + Output value of the item found in the cache. + True when the key is found in the cache, false otherwise. + + + + Watches multiple files at the same time and raises an event whenever + a single change is detected in any of those files. + + + + + The types of changes to watch for. + + + + + Occurs when a change is detected in one of the monitored files. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Stops watching all files. + + + + + Stops watching the specified file. + + + + + + Watches the specified files for changes. + + The file names. + + + + Supports mocking of SMTP Client code. + + + Disabled Error CS0618 'SmtpClient' is obsolete: 'SmtpClient and its network of types are poorly designed, + we strongly recommend you use https://github.com/jstedfast/MailKit and https://github.com/jstedfast/MimeKit instead' + + + + + Network sender which uses HTTP or HTTPS POST. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Creates instances of objects for given URLs. + + + + + Creates a new instance of the network sender based on a network URL. + + URL that determines the network sender to be created. + The maximum queue size. + SSL protocols for TCP + KeepAliveTime for TCP + + A newly created network sender. + + + + + Interface for mocking socket calls. + + + + + A base class for all network senders. Supports one-way sending of messages + over various protocols. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Gets the address of the network endpoint. + + + + + Gets the last send time. + + + + + Initializes this network sender. + + + + + Closes the sender and releases any unmanaged resources. + + The continuation. + + + + Flushes any pending messages and invokes a continuation. + + The continuation. + + + + Send the given text over the specified protocol. + + Bytes to be sent. + Offset in buffer. + Number of bytes to send. + The asynchronous continuation. + + + + Closes the sender and releases any unmanaged resources. + + + + + Performs sender-specific initialization. + + + + + Performs sender-specific close operation. + + The continuation. + + + + Performs sender-specific flush. + + The continuation. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Parses the URI into an endpoint address. + + The URI to parse. + The address family. + Parsed endpoint. + + + + Default implementation of . + + + + + + + + A base class for network senders that can block or send out-of-order + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Performs sender-specific flush. + + The continuation. + + + + Socket proxy for mocking Socket code. + + + + + Initializes a new instance of the class. + + The address family. + Type of the socket. + Type of the protocol. + + + + Gets underlying socket instance. + + + + + Closes the wrapped socket. + + + + + Invokes ConnectAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendToAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Sends messages over a TCP network connection. + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + The address family. + + + + Creates the socket with given parameters. + + The host address. + The address family. + Type of the socket. + Type of the protocol. + Instance of which represents the socket. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Facilitates mocking of class. + + + + + Raises the Completed event. + + + + + Sends messages over the network as UDP datagrams. + + + + + Initializes a new instance of the class. + + URL. Must start with udp://. + The address family. + + + + Creates the socket. + + The address family. + Type of the socket. + Type of the protocol. + Implementation of to use. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Sends the specified text as a UDP datagram. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Scans (breadth-first) the object graph following all the edges whose are + instances have attached and returns + all objects implementing a specified interfaces. + + + + + Finds the objects which have attached which are reachable + from any of the given root objects when traversing the object graph over public properties. + + Type of the objects to return. + Also search the properties of the wanted objects. + The root objects. + Ordered list of objects implementing T. + + + ISet is not there in .net35, so using HashSet + + + + Helper for extracting propertyPath + + + + + Object Path to check + + + + + Try get value from , using , and set into + + + + + + + + Converts object into a List of property-names and -values using reflection + + + + + Scans properties for name (Skips string-compare and value-lookup until finding match) + + + + + Scans properties for name (Skips property value lookup until finding match) + + + + + Scans properties for name + + + + + Binder for retrieving value of + + + + + + + + Combine paths + + basepath, not null + optional dir + optional file + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Trims directory separators from the path + + path, could be null + never null + + + + Detects the platform the NLog is running on. + + + + + Gets the current runtime OS. + + + + + Gets a value indicating whether current OS is Win32-based (desktop or mobile). + + + + + Gets a value indicating whether current OS is Unix-based. + + + + + Gets a value indicating whether current runtime is Mono-based + + + + + Gets a value indicating whether current runtime supports use of mutex + + + + + Will creating a mutex succeed runtime? + "Cached" detection + + + + + Will creating a mutex succeed runtime? + + + + + Dictionary that combines the standard with the + MessageTemplate-properties extracted from the . + + The are returned as the first items + in the collection, and in positional order. + + + + + Value of the property + + + + + Is this a property of the message? + + + + + + + Value of the property + Is this a property of the message? + + + + The properties of the logEvent + + + + + The properties extracted from the message + + + + + Injects the list of message-template-parameter into the IDictionary-interface + + Message-template-parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check if the message-template-parameters can be used directly without allocating a dictionary + + Message-template-parameters + Are all parameter names unique (true / false) + + + + Attempt to insert the message-template-parameters into an empty dictionary + + Message-template-parameters + The initially empty dictionary + Message-template-parameters was inserted into dictionary without trouble (true/false) + + + + Attempt to override the existing dictionary values using the message-template-parameters + + Message-template-parameters + The already filled dictionary + List of unique message-template-parameters + + + + + + + + + + + + + + + + + + + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + + + + + + + + + + + + + + + + + Reflection helpers for accessing properties. + + + + + Set value parsed from string. + + object instance to set with property + name of the property on + The value to be parsed. + + + + + Get property info + + object which could have property + property name on + result when success. + success. + + + + Try parse of string to (Generic) list, comma separated. + + + If there is a comma in the value, then (single) quote the value. For single quotes, use the backslash as escape + + + + + Attempt to reuse the HashSet.Comparer from the original HashSet-object (Ex. StringComparer.OrdinalIgnoreCase) + + + + + Try get the property + + + + + Reflection helpers. + + + + + Gets all usable exported types from the given assembly. + + Assembly to scan. + Usable types from the given assembly. + Types which cannot be loaded are skipped. + + + + Is this a static class? + + + + This is a work around, as Type doesn't have this property. + From: https://stackoverflow.com/questions/1175888/determine-if-a-type-is-static + + + + + Optimized delegate for calling MethodInfo + + Object instance, use null for static methods. + Complete list of parameters that matches the method, including optional/default parameters. + + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Controls a single allocated AsyncLogEventInfo-List for reuse (only one active user) + + + + + Controls a single allocated char[]-buffer for reuse (only one active user) + + + + + Controls a single allocated StringBuilder for reuse (only one active user) + + + + + Controls a single allocated object for reuse (only one active user) + + + + Empty handle when is disabled + + + + Creates handle to the reusable char[]-buffer for active usage + + Handle to the reusable item, that can release it again + + + + Access the acquired reusable object + + + + + Controls a single allocated MemoryStream for reuse (only one active user) + + + + + Supported operating systems. + + + If you add anything here, make sure to add the appropriate detection + code to + + + + + Unknown operating system. + + + + + Unix/Linux operating systems. + + + + + Desktop versions of Windows (95,98,ME). + + + + + Windows NT, 2000, 2003 and future versions based on NT technology. + + + + + Macintosh Mac OSX + + + + + Simple character tokenizer. + + + + + Initializes a new instance of the class. + + The text to be tokenized. + + + + Current position in + + + + + Full text to be parsed + + + + + Check current char while not changing the position. + + + + + + Read the current char and change position + + + + + + Get the substring of the + + + + + + + + Implements a single-call guard around given continuation function. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + + + + Continuation function which implements the single-call guard. + + The exception. + + + + HashSet optimized for single item + + + + + + Insert single item on scope start, and remove on scope exit + + Item to insert in scope + Existing hashset to update + Force allocation of real hashset-container + HashSet EqualityComparer + + + + Add item to collection, if it not already exists + + Item to insert + + + + Clear hashset + + + + + Check if hashset contains item + + + Item exists in hashset (true/false) + + + + Remove item from hashset + + + Item removed from hashset (true/false) + + + + Copy items in hashset to array + + Destination array + Array offset + + + + Create hashset enumerator + + Enumerator + + + + Provides helpers to sort log events and associated continuations. + + + + + Key selector delegate. + + The type of the value. + The type of the key. + Value to extract key information from. + Key selected from log event. + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + The key comparer function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Single-Bucket optimized readonly dictionary. Uses normal internally Dictionary if multiple buckets are needed. + + Avoids allocating a new dictionary, when all items are using the same bucket + + The type of the key. + The type of the value. + + + + + + + + + + + + + + + + Allows direct lookup of existing keys. If trying to access non-existing key exception is thrown. + Consider to use instead for better safety. + + Key value for lookup + Mapped value found + + + + Non-Allocating struct-enumerator + + + + + + + + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + + + + Will always throw, as dictionary is readonly + + + + Utilities for dealing with values. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + StackFrame from the calling method + Fully qualified class name + + + + Returns the assembly from the provided StackFrame (If not internal assembly) + + Valid assembly, or null if assembly was internal + + + + Returns the classname from the provided StackFrame (If not from internal assembly) + + + Valid class name, or empty string if assembly was internal + + + + Stream helpers + + + + + Copy to output stream and skip BOM if encoding is UTF8 + + + + + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + .net35 doesn't have a .copyto + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + first bytes to skip (optional) + + + + Helpers for , which is used in e.g. layout renderers. + + + + + Renders the specified log event context item and appends it to the specified . + + append to this + value to be appended + format string. If @, then serialize the value with the Default JsonConverter. + provider, for example culture + + + + Appends int without using culture, and most importantly without garbage + + + value to append + + + + Appends uint without using culture, and most importantly without garbage + + Credits Gavin Pugh - https://www.gavpugh.com/2010/04/01/xnac-avoiding-garbage-when-working-with-stringbuilder/ + + + value to append + + + + Convert DateTime into UTC and format to yyyy-MM-ddTHH:mm:ss.fffffffZ - ISO 6801 date (Round-Trip-Time) + + + + + Clears the provider StringBuilder + + + + + + Copies the contents of the StringBuilder to the MemoryStream using the specified encoding (Without BOM/Preamble) + + StringBuilder source + MemoryStream destination + Encoding used for converter string into byte-stream + Helper char-buffer to minimize memory allocations + + + + Copies the contents of the StringBuilder to the destination StringBuilder + + StringBuilder source + StringBuilder destination + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle character to search for + + Index of the first occurrence (Else -1) + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle characters to search for + + Index of the first occurrence (Else -1) + + + + Compares the contents of two StringBuilders + + + Correct implementation of that also works when is not the same + + True when content is the same + + + + Compares the contents of a StringBuilder and a String + + True when content is the same + + + + Append a number and pad with 0 to 2 digits + + append to this + the number + + + + Append a number and pad with 0 to 4 digits + + append to this + the number + + + + Append a int type (byte, int) as string + + + + + Constructor + + Max number of items + Initial StringBuilder Size + Max StringBuilder Size + + + + Takes StringBuilder from pool + + Allow return to pool + + + + Releases StringBuilder back to pool at its right place + + + + + Keeps track of acquired pool item + + + + + Releases pool item back into pool + + + + + Helpers for . + + + + + IsNullOrWhiteSpace, including for .NET 3.5 + + + + + + + Split a string + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Represents target with a chain of filters which determine + whether logging should happen. + + + + + cached result as calculating is expensive. + + + + + Initializes a new instance of the class. + + The target. + The filter chain. + Default action if none of the filters match. + + + + Gets the target. + + The target. + + + + Gets the filter chain. + + The filter chain. + + + + Default action if none of the filters match. + + + + + Gets or sets the next item in the chain. + + The next item in the chain. + This is for example the 'target2' logger in writeTo='target1,target2' + + + + Gets the stack trace usage. + + A value that determines stack trace handling. + + + + Helper for dealing with thread-local storage. + + + + + Allocates the data slot for storing thread-local information. + + Allocated slot key. + + + + Gets the data for a slot in thread-local storage. + + Type of the data. + The slot to get data for. + Automatically create the object if it doesn't exist. + + Slot data (will create T if null). + + + + + Wraps with a timeout. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + The timeout. + + + + Continuation function which implements the timeout logic. + + The exception. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Transformation on a layout. Pre-calculated if the layout has a fixed value. + + + + + Create TransformedLayout. + + Layout + Transformation method + Optional renderer, otherwise is used + + + + + + + Create TransformedLayout. If is null, then the returns null + + Layout + Transformation method + Optional renderer, otherwise is used + null if is null + + + + + + + + + + URL Encoding helper. + + + + Allow UnreservedMarks instead of ReservedMarks, as specified by chosen RFC + + + Use RFC2396 standard (instead of RFC3986) + + + Should use lowercase when doing HEX escaping of special characters + + + Replace space ' ' with '+' instead of '%20' + + + Skip UTF8 encoding, and prefix special characters with '%u' + + + + Escape unicode string data for use in http-requests + + unicode string-data to be encoded + target for the encoded result + s for how to perform the encoding + + + + Convert the wide-char into utf8-bytes, and then escape + + + + + + + + + Is allowed? + + + + + + + + Is a-z / A-Z / 0-9 + + + + + + + Prevents the Xamarin linker from linking the target. + + + By applying this attribute all of the members of the target will be kept as if they had been referenced by the code. + + + + + Ensures that all members of this type are preserved + + + + + Flags the method as a method to preserve during linking if the container class is pulled in. + + + + + Helper class for XML + + + + + removes any unusual unicode characters that can't be encoded into XML + + + + + Cleans string of any invalid XML chars found + + unclean string + string with only valid XML chars + + + + Pretest, small text and not escape needed + + + + + + + + Converts object value to invariant format, and strips any invalid xml-characters + + Object value + Object value converted to string + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object value converted to string + + + + XML elements must follow these naming rules: + - Element names are case-sensitive + - Element names must start with a letter or underscore + - Element names can contain letters, digits, hyphens, underscores, and periods + - Element names cannot contain spaces + + + + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object TypeCode + Check and remove unusual unicode characters from the result string. + Object value converted to string + + + + Safe version of WriteAttributeString + + + + + + + + + + Safe version of WriteAttributeString + + + + + + + + Safe version of WriteElementSafeString + + + + + + + + + + Safe version of WriteCData + + + + + + + Interface for handling object transformation + + + + + Takes a dangerous (or massive) object and converts into a safe (or reduced) object + + + Null if unknown object, or object cannot be handled + + + + + Provides an interface to execute System.Actions without surfacing any exceptions raised for that action. + + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Logs an exception is logged at Error level if the provided task does not run to completion. + + The task for which to log an error if it does not run to completion. + This method is useful in fire-and-forget situations, where application logic does not depend on completion of task. This method is avoids C# warning CS4014 in such situations. + + + + Returns a task that completes when a specified task to completes. If the task does not run to completion, an exception is logged at Error level. The returned task always runs to completion. + + The task for which to log an error if it does not run to completion. + A task that completes in the state when completes. + + + + Runs async action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Async action to execute. + A task that completes in the state when completes. + + + + Runs the provided async function and returns its result. If the task does not run to completion, an exception is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Async function to run. + A task that represents the completion of the supplied task. If the supplied task ends in the state, the result of the new task will be the result of the supplied task; otherwise, the result of the new task will be the default value of type . + + + + Runs the provided async function and returns its result. If the task does not run to completion, an exception is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Async function to run. + Fallback value to return if the task does not end in the state. + A task that represents the completion of the supplied task. If the supplied task ends in the state, the result of the new task will be the result of the supplied task; otherwise, the result of the new task will be the fallback value. + + + + Render a message template property to a string + + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Log event context data. + + + + + Initializes a new instance of the class. + + + + + Gets or sets string that will be used to separate key/value pairs. + + + + + + Get or set if empty values should be included. + + A value is empty when null or in case of a string, null or empty string. + + + + + + Gets or sets the keys to exclude from the output. If omitted, none are excluded. + + + + + + Also render the caller information attributes? (, + , ). + + See https://msdn.microsoft.com/en-us/library/hh534540.aspx + + + + + + Gets or sets how key/value pairs will be formatted. + + + + + + Renders all log event's properties and appends them to the specified . + + The to append the rendered data to. + Logging event. + + + + The names of caller information attributes. + , , ). + https://msdn.microsoft.com/en-us/library/hh534540.aspx + TODO NLog ver. 5 - Remove these properties + + + + + Designates a property of the class as an ambient property. + + + non-ambient: ${uppercase:${level}} + ambient : ${level:uppercase} + + + + + Initializes a new instance of the class. + + Ambient property name. + + + + Used to render the application domain name. + + + + + Create a new renderer + + + + + Create a new renderer + + + + + Format string. Possible values: "Short", "Long" or custom like {0} {1}. Default "Long" + The first parameter is the , the second the second the + This string is used in + + + + + + + + + + + + + + + Renders the assembly version information for the entry assembly or a named assembly. + + + As this layout renderer uses reflection and version information is unlikely to change during application execution, + it is recommended to use it in conjunction with the . + + + The entry assembly can't be found in some cases e.g. ASP.NET, unit tests, etc. + + + + + Initializes a new instance of the class. + + + + + The (full) name of the assembly. If null, using the entry assembly. + + + + + + Gets or sets the type of assembly version to retrieve. + + + Some version type and platform combinations are not fully supported. + - UWP earlier than .NET Standard 1.5: Value for is always returned unless the parameter is specified. + - Silverlight: Value for is always returned. + + + + + + Gets or sets the custom format of the assembly version output. + + + Supported placeholders are 'major', 'minor', 'build' and 'revision'. + The default .NET template for version numbers is 'major.minor.build.revision'. See + https://docs.microsoft.com/en-gb/dotnet/api/system.version?view=netframework-4.7.2#remarks + for details. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders an assembly version and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets the assembly specified by , or entry assembly otherwise + + Found assembly + + + + Type of assembly version to retrieve. + + + + + Gets the assembly version. + + + + + Gets the file version. + + + + + Gets additional version information. + + + + + The current application domain's base directory. + + + + + cached + + + + + Use base dir of current process. Alternative one can just use ${processdir} + + + + + + Fallback to the base dir of current process, when AppDomain.BaseDirectory is Temp-Path (.NET Core 3 - Single File Publish) + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the base directory. + + + + + + Renders the application base directory and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site source file name. Full callsite + + + + + Gets or sets a value indicating whether to include source file path. + + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + + + + + + The call site (class name, method name and source information). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to render the class name. + + + + + + Gets or sets a value indicating whether to render the include the namespace with . + + + + + + Gets or sets a value indicating whether to render the method name. + + + + + + Gets or sets a value indicating whether the method name will be cleaned up if it is detected as an anonymous delegate. + + + + + + Gets or sets a value indicating whether the method and class names will be cleaned up if it is detected as an async continuation + (everything after an await-statement inside of an async method). + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets a value indicating whether to render the source file name and line number. + + + + + + Gets or sets a value indicating whether to include source file path. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site source line number. Full callsite + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + + + + + + A counter value (increases on each layout rendering). + + + + + Gets or sets the initial value of the counter. + + + + + + Gets or sets the value to be added to the counter after each layout rendering. + + + + + + Gets or sets the name of the sequence. Different named sequences can have individual values. + + + + + + + + + The current working directory of the application. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the current directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the current directory. + + + + + + + + + + + + Current date and time. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the date format. Can be any argument accepted by DateTime.ToString(format). + + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + + + + + + + + + + DB null for a database + + + + + + + + + + + The OS dependent directory separator + + + + + + + + + + + The environment variable. + + + + + Gets or sets the name of the environment variable. + + + + + + Gets or sets the default value to be used when the environment variable is not set. + + + + + + + + + + + + Thread identity information (username). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether username should be included. + + + + + + Gets or sets a value indicating whether domain name should be included. + + + + + + Gets or sets the default value to be used when the User is not set. + + + + + + Gets or sets the default value to be used when the Domain is not set. + + + + + + + + + + + + Log event context data. + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the name of the item. + + + + + + Renders the specified log event context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Log event context data. See . + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + + + + + + + + + + Exception information provided through + a call to one of the Logger.*Exception() methods. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the format of the output. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + + + Gets or sets the format of the output of inner exceptions. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + Gets or sets the separator used to concatenate parts specified in the Format. + + + + + + Gets or sets the separator used to concatenate exception data specified in the Format. + + + + + + Gets or sets the maximum number of inner exceptions to include in the output. + By default inner exceptions are not enabled for compatibility with NLog 1.0. + + + + + + Gets or sets the separator between inner exceptions. + + + + + + Gets or sets whether to render innermost Exception from + + + + + Gets the formats of the output of inner exceptions to be rendered in target. + + + + + + + Gets the formats of the output to be rendered in target. + + + + + + + + + + + + + Appends the Message of an Exception to the specified . + + The to append the rendered data to. + The exception containing the Message to append. + + + + Appends the method name from Exception's stack trace to the specified . + + The to append the rendered data to. + The Exception whose method name should be appended. + + + + Appends the stack trace from an Exception to the specified . + + The to append the rendered data to. + The Exception whose stack trace should be appended. + + + + Appends the result of calling ToString() on an Exception to the specified . + + The to append the rendered data to. + The Exception whose call to ToString() should be appended. + + + + Appends the type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose type should be appended. + + + + Appends the short type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose short type should be appended. + + + + Appends the application source of an Exception to the specified . + + The to append the rendered data to. + The Exception whose source should be appended. + + + + Appends the HResult of an Exception to the specified . + + The to append the rendered data to. + The Exception whose HResult should be appended. + + + + Appends the contents of an Exception's Data property to the specified . + + The to append the rendered data to. + The Exception whose Data property elements should be appended. + + + + Appends all the serialized properties of an Exception into the specified . + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Appends all the additional properties of an Exception like Data key-value-pairs + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Split the string and then compile into list of Rendering formats. + + + + + Renders contents of the specified file. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file. + + + + + + Gets or sets the encoding used in the file. + + The encoding. + + + + + Renders the contents of the specified file and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + Name used in config without ${}. E.g. "test" could be used as "${test}". + + + + + Method that renders the layout. + + + + + Format string for conversion from object to string. + + + + + + + + + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + The information about the garbage collector. + + + + + Gets or sets the property to retrieve. + + + + + + + + + Gets or sets the property of System.GC to retrieve. + + + + + Total memory allocated. + + + + + Total memory allocated (perform full garbage collection first). + + + + + Gets the number of Gen0 collections. + + + + + Gets the number of Gen1 collections. + + + + + Gets the number of Gen2 collections. + + + + + Maximum generation number supported by GC. + + + + + Render a Global Diagnostics Context item. See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + + + + Globally-unique identifier (GUID). + + + + + Gets or sets the GUID format as accepted by Guid.ToString() method. + + + + + + Generate the Guid from the NLog LogEvent (Will be the same for all targets) + + + + + + + + + + + + + + + The host name that the process is running on. + + + + + + + + Gets the host name and falls back to computer name if not available + + + + + Tries the lookup value. + + The lookup function. + Type of the lookup. + + + + + + + + Thread identity information (name and authentication information). + + + + + Gets or sets the separator to be used when concatenating + parts of identity information. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.Name. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.AuthenticationType. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.IsAuthenticated. + + + + + + + + + Retrieve network interfaces + + + + + Retrieve network interfaces + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Gets or sets the name of the parameter. + + + + + + Renders the specified installation parameter and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render environmental information related to logging events. + + + + + Gets the logging configuration this target is part of. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Renders the the value of layout renderer in the context of the specified log event. + + The log event. + String representation of a layout renderer. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Renders the value of layout renderer in the context of the specified log event. + + The log event. + The layout render output is appended to builder + + + + Renders the value of layout renderer in the context of the specified log event into . + + The to append the rendered data to. + Logging event. + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Get the for rendering the messages to a + + LogEvent with culture + Culture in on Layout level + + + + + Get the for rendering the messages to a , needed for date and number formats + + LogEvent with culture + Culture in on Layout level + + + is preferred + + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Marks class as a layout renderer and assigns a name to it. + + This attribute is not required when registering the layout in the API. + + + + Initializes a new instance of the class. + + Name of the layout renderer, without the `${ }` + + + + Format of the ${level} layout renderer output. + + + + + Render the LogLevel standard name. + + + + + Render the first character of the level. + + + + + Render the ordinal (aka number) for the level. + + + + + Render the LogLevel full name, expanding Warn / Info abbreviations + + + + + The log level. + + + + + Gets or sets a value indicating the output format of the level. + + + + + + + + + + + + + + + A string literal. + + + This is used to escape '${' sequence + as ;${literal:text=${}' + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The literal text value. + This is used by the layout compiler. + + + + Gets or sets the literal text. + + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The IP address from the network interface card (NIC) on the local machine + + + Skips loopback-adapters and tunnel-interfaces. Skips devices without any MAC-address + + + + + Get or set whether to prioritize IPv6 or IPv4 (default) + + + + + + + + + + + + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes the layout renderer. + + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets a value indicating whether the XML should use spaces for indentation. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDLC item separator. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the XML logging event and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The logger name. + + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + + + + + + + The date and time in a long, sortable format yyyy-MM-dd HH:mm:ss.ffff. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the date in the long format (yyyy-MM-dd HH:mm:ss.ffff) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The machine name that the process is running on. + + + + + + + + + + + Render a Mapped Diagnostic Context item, See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + Render a Mapped Diagnostic Logical Context item (based on CallContext). + See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + The formatted log message. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to log exception along with message. + + + + + + Gets or sets the string that separates message from the exception. + + + + + + Gets or sets whether it should render the raw message without formatting parameters + + + + + + + + + + + + Render a Nested Diagnostic Context item. + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested diagnostics context output. + + + + + + Renders the specified Nested Diagnostics Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render a Nested Diagnostic Logical Context item (Async scope) + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested logical context output. + + + + + + Renders the specified Nested Logical Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Timing Renderer (Async scope) + + + + + Gets or sets whether to only include the duration of the last scope created + + + + + + Gets or sets whether to just display the scope creation time, and not the duration + + + + + + Gets or sets the TimeSpan format. Can be any argument accepted by TimeSpan.ToString(format). + + + + + + Renders the timing details of the Nested Logical Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Retrieve network interfaces + + + + + Retrieve network interfaces + + + + + A newline literal. + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The directory where NLog.dll is located. + + + + + Initializes static members of the NLogDirLayoutRenderer class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The executable directory from the FileName, + using the current process + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the process directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the process directory. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + The identifier of the current process. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + + + + The information about the running process. + + + + + Gets or sets the property to retrieve. + + + + + + Gets or sets the format-string to use if the property supports it (Ex. DateTime / TimeSpan / Enum) + + + + + + + + + + + + + + + Property of System.Diagnostics.Process to retrieve. + + + + + Base Priority. + + + + + Exit Code. + + + + + Exit Time. + + + + + Process Handle. + + + + + Handle Count. + + + + + Whether process has exited. + + + + + Process ID. + + + + + Machine name. + + + + + Handle of the main window. + + + + + Title of the main window. + + + + + Maximum Working Set. + + + + + Minimum Working Set. + + + + + Non-paged System Memory Size. + + + + + Non-paged System Memory Size (64-bit). + + + + + Paged Memory Size. + + + + + Paged Memory Size (64-bit).. + + + + + Paged System Memory Size. + + + + + Paged System Memory Size (64-bit). + + + + + Peak Paged Memory Size. + + + + + Peak Paged Memory Size (64-bit). + + + + + Peak Virtual Memory Size. + + + + + Peak Virtual Memory Size (64-bit).. + + + + + Peak Working Set Size. + + + + + Peak Working Set Size (64-bit). + + + + + Whether priority boost is enabled. + + + + + Priority Class. + + + + + Private Memory Size. + + + + + Private Memory Size (64-bit). + + + + + Privileged Processor Time. + + + + + Process Name. + + + + + Whether process is responding. + + + + + Session ID. + + + + + Process Start Time. + + + + + Total Processor Time. + + + + + User Processor Time. + + + + + Virtual Memory Size. + + + + + Virtual Memory Size (64-bit). + + + + + Working Set Size. + + + + + Working Set Size (64-bit). + + + + + The name of the current process. + + + + + Gets or sets a value indicating whether to write the full path to the process executable. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Renders the current process name (optionally with a full path). + + The to append the rendered data to. + Logging event. + + + + The process time in format HH:mm:ss.mmm. + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + Write timestamp to builder with format hh:mm:ss:fff + + + + + The sequence ID + + + + + + + + + + + The short date in a sortable format yyyy-MM-dd. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the current short date string (yyyy-MM-dd) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + System special folder path (includes My Documents, My Music, Program Files, Desktop, and more). + + + + + Gets or sets the system special folder to use. + + + Full list of options is available at MSDN. + The most common ones are: +
    +
  • ApplicationData - roaming application data for current user.
  • +
  • CommonApplicationData - application data for all users.
  • +
  • MyDocuments - My Documents
  • +
  • DesktopDirectory - Desktop directory
  • +
  • LocalApplicationData - non roaming application data
  • +
  • Personal - user profile directory
  • +
  • System - System directory
  • +
+
+ +
+ + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Format of the ${stacktrace} layout renderer output. + + + + + Raw format (multiline - as returned by StackFrame.ToString() method). + + + + + Flat format (class and method names displayed in a single line). + + + + + Detailed flat format (method signatures displayed in a single line). + + + + + Stack trace renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the output format of the stack trace. + + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets the stack frame separator string. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A temporary directory. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The identifier of the current thread. + + + + + + + + The name of the current thread. + + + + + + + + The Ticks value of current date and time. + + + + + + + + + + + The time in a 24-hour, sortable format HH:mm:ss.mmmm. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + A renderer that puts into log a System.Diagnostics trace correlation id. + + + + + + + + + + + Render a NLog variable (xml or config) + + + + + Gets or sets the name of the NLog variable. + + + + + + Gets or sets the default value to be used when the variable is not set. + + Not used if Name is null + + + + + Initializes the layout renderer. + + + + + Try get the + + + + + + + Renders the specified variable and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Applies caching to another layout output. + + + The value of the inner layout will be rendered only once and reused subsequently. + + + + + A value indicating when the cache is cleared. + + + + Never clear the cache. + + + Clear the cache whenever the is initialized. + + + Clear the cache whenever the is closed. + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether this is enabled. + + + + + + Gets or sets a value indicating when the cache is cleared. + + + + + + Cachekey. If the cachekey changes, resets the value. For example, the cachekey would be the current day.s + + + + + + Gets or sets a value indicating how many seconds the value should stay cached until it expires + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + + + + Filters characters not allowed in the file names by replacing them with safe character. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to modify the output of this renderer so it can be used as a part of file path + (illegal characters are replaced with '_'). + + + + + + + + + + + + Escapes output of another layout using JSON rules. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply JSON encoding. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + + + + + + + Left part of a text + + + + + Gets or sets the length in characters. + + + + + + Same as -property, so it can be used as ambient property. + + + ${message:truncate=80} + + + + + + + + + + + + Converts the result of another layout output to lower case. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Render the non-raw value of an object. + + For performance and/or full (formatted) control of the output. + + + + Gets or sets a value indicating whether to disable the IRawValue-interface + + A value of true if IRawValue-interface should be ignored; otherwise, false. + + + + + + + + + + + Render a single property of a object + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + Shortcut for + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + Only outputs the inner layout when exception has been defined for log message. + + + + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + ${onhasproperties:, Properties\: ${all-event-properties}} + + + + + + + + + + + Horizontal alignment for padding layout renderers. + + + + + When layout text is too long, align it to the left + (remove characters from the right). + + + + + When layout text is too long, align it to the right + (remove characters from the left). + + + + + Applies padding to another layout output. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of characters to pad the output to. + + + Positive padding values cause left padding, negative values + cause right padding to the desired width. + + + + + + Gets or sets the padding character. + + + + + + Gets or sets a value indicating whether to trim the + rendered text to the absolute value of the padding length. + + + + + + Gets or sets a value indicating whether a value that has + been truncated (when is true) + will be left-aligned (characters removed from the right) + or right-aligned (characters removed from the left). The + default is left alignment. + + RegistryLayoutRenderer + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Replaces a string in the output of another layout with another string. + + + ${replace:searchFor=\\n+:replaceWith=-:regex=true:inner=${message}} + + + + + Gets or sets the text to search for. + + The text search for. + + + + + Gets or sets a value indicating whether regular expressions should be used. + + A value of true if regular expressions should be used otherwise, false. + + + + + Gets or sets the replacement string. + + The replacement string. + + + + + Gets or sets the group name to replace when using regular expressions. + Leave null or empty to replace without using group name. + + The group name. + + + + + Gets or sets a value indicating whether to ignore case. + + A value of true if case should be ignored when searching; otherwise, false. + + + + + Gets or sets a value indicating whether to search for whole words. + + A value of true if whole words should be searched for; otherwise, false. + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Initializes the layout renderer. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + This class was created instead of simply using a lambda expression so that the "ThreadAgnosticAttributeTest" will pass + + + + + A match evaluator for Regular Expression based replacing + + Input string. + Group name in the regex. + Replace value. + Match from regex. + Groups replaced with . + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating the string that should be used for separating lines. + + + + + + + + + + + + Right part of a text + + + + + Gets or sets the length in characters. + + + + + + + + + + + + Decodes text "encrypted" with ROT-13. + + + See https://en.wikipedia.org/wiki/ROT13. + + + + + Gets or sets the layout to be wrapped. + + The layout to be wrapped. + This variable is for backwards compatibility + + + + + Encodes/Decodes ROT-13-encoded string. + + The string to be encoded/decoded. + Encoded/Decoded text. + + + + + + + + + + Encodes/Decodes ROT-13-encoded string. + + + + + Substring the result + + + ${substring:${level}:start=2:length=2} + ${substring:${level}:start=-2:length=2} + ${substring:Inner=${level}:start=2:length=2} + + + + + Initializes a new instance of the class. + + + + + Gets or sets the start index. + + Index + + + + + Gets or sets the length in characters. If null, then the whole string + + Index + + + + + + + + + + + Calculate start position + + 0 or positive number + + + + Calculate needed length + + 0 or positive number + + + + Trims the whitespace from the result of another layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + + + + + + + Converts the result of another layout output to upper case. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + ${level:uppercase} // [AmbientProperty] + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether upper case conversion should be applied. + + A value of true if upper case conversion should be applied otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Encodes the result of another layout output for use with URLs. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether spaces should be translated to '+' or '%20'. + + A value of true if space should be translated to '+'; otherwise, false. + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + + + Gets or sets the layout to be rendered when original layout produced empty result. + + + + + + + + + + + + + + + Only outputs the inner layout when the specified condition has been met. + + + + + Gets or sets the condition that must be met for the layout to be printed. + + + + + + If is not met, print this layout. + + + + + + + + + + + + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the line length for wrapping. + + + Only positive values are allowed + + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + Base class for s which wrapping other s. + + This has the property (which is default) and can be used to wrap. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + + + + + Gets or sets the wrapped layout. + + [DefaultParameter] so Inner: is not required if it's the first + + + + + + + + + Renders the inner message, processes it and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Appends the rendered output from -layout and transforms the added output (when necessary) + + Logging event. + The to append the rendered data to. + Start position for any necessary transformation of . + + + + Transforms the output of another layout. + + Logging event. + Output to be transform. + Transformed text. + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + Base class for s which wrapping other s. + + This expects the transformation to work on a + + + + + + + + Transforms the output of another layout. + + + Output to be transform. + + + + Transforms the output of another layout. + + Output to be transform. + + + + Renders the inner layout contents. + + + for the result + + + + + + + + + + + + + + + + + + Converts the result of another layout output to be XML-compliant. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply XML encoding. + + Ensures always valid XML, but gives a performance hit + + + + + Gets or sets a value indicating whether to transform newlines (\r\n) into ( ) + + + + + + + + + + + + A layout containing one or more nested layouts. + + + + + Initializes a new instance of the class. + + + + + Gets the inner layouts. + + + + + + Initializes the layout. + + + + + Formats the log event relying on inner layouts. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event relying on inner layouts. + + The logging event. + for the result + + + + Closes the layout. + + + + + Generate description of Compound Layout + + Compound Layout String Description + + + + A column in the CSV. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the column. + The layout of the column. + + + + Gets or sets the name of the column. + + + + + + Gets or sets the layout of the column. + + + + + + Gets or sets the override of Quoting mode + + + and are faster than the default + + + + + + Specifies allowed column delimiters. + + + + + Automatically detect from regional settings. + + + + + Comma (ASCII 44). + + + + + Semicolon (ASCII 59). + + + + + Tab character (ASCII 9). + + + + + Pipe character (ASCII 124). + + + + + Space character (ASCII 32). + + + + + Custom string, specified by the CustomDelimiter. + + + + + A specialized layout that renders CSV-formatted events. + + If is set, then the header generation with column names will be disabled. + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + Gets or sets a value indicating whether CVS should include header. + + A value of true if CVS should include header; otherwise, false. + + + + + Gets or sets the column delimiter. + + + + + + Gets or sets the quoting mode. + + + + + + Gets or sets the quote Character. + + + + + + Gets or sets the custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). + + + + + + Initializes the layout. + + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event for write. + + The logging event. + for the result + + + + Get the headers with the column names. + + + + + + Header with column names for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Generate description of CSV Layout + + CSV Layout String Description + + + + Specifies CSV quoting modes. + + + + + Quote all column (Fast) + + + + + Quote nothing (Very fast) + + + + + Quote only whose values contain the quote symbol or the separator (Slow) + + + + + JSON attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with json-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Json encoded. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A specialized layout that renders JSON-formatted events. + + + + + Initializes a new instance of the class. + + + + + Gets the array of attributes' configurations. + + + + + + Gets or sets the option to suppress the extra spaces in the output json + + + + + + Gets or sets the option to render the empty object value {} + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as JSON) + + + + + + List of property names to exclude when is true + + + + + + How far should the JSON serializer follow object references before backing off + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Formats the log event as a JSON document for writing. + + The logging event. + for the result + + + + Formats the log event as a JSON document for writing. + + The log event to be formatted. + A JSON string representation of the log event. + + + + Generate description of JSON Layout + + JSON Layout String Description + + + + Abstract interface that layouts must implement. + + + + + Is this layout initialized? See + + + + + Gets a value indicating whether this layout is thread-agnostic (can be rendered on any thread). + + + Layout is thread-agnostic if it has been marked with [ThreadAgnostic] attribute and all its children are + like that as well. + + Thread-agnostic layouts only use contents of for its output. + + + + + Gets the level of stack trace information required for rendering. + + + + + Gets the logging configuration this target is part of. + + + + + Converts a given text to a . + + Text to be converted. + object represented by the text. + + + + Implicitly converts the specified string to a . + + The layout string. + Instance of .' + + + + Implicitly converts the specified string to a . + + The layout string. + The NLog factories to use when resolving layout renderers. + Instance of . + + + + Implicitly converts the specified string to a . + + The layout string. + Whether should be thrown on parse errors (false = replace unrecognized tokens with a space). + Instance of . + + + + Create a from a lambda method. + + Method that renders the layout. + Tell if method is safe for concurrent threading. + Instance of . + + + + Precalculates the layout for the specified log event and stores the result + in per-log event cache. + + Only if the layout doesn't have [ThreadAgnostic] and doesn't contain layouts with [ThreadAgnostic]. + + The log event. + + Calling this method enables you to store the log event in a buffer + and/or potentially evaluate it in another thread even though the + layout may contain thread-dependent renderer. + + + + + Renders the event info in layout. + + The event info. + String representing log event. + + + + Optimized version of for internal Layouts. Works best + when override of is available. + + The event info. + Appends the string representing log event to target + Should rendering result be cached on LogEventInfo + + + + Valid default implementation of , when having implemented the optimized + + The logging event. + StringBuilder to help minimize allocations [optional]. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Optimized version of for internal Layouts, when + override of is available. + + + + + Try get value + + + rawValue if return result is true + false if we could not determine the rawValue + + + + Marks class as a layout renderer and assigns a format string to it. + + + + + Initializes a new instance of the class. + + Layout name. + + + + Parses layout strings. + + + + + Add to + + + + + + + Options available for + + + + + Default options + + + + + Layout renderer method can handle concurrent threads + + + + + Layout renderer method is agnostic to current thread context. This means it will render the same result indepdent of thread-context. + + + + + A specialized layout that supports header and footer. + + + + + Gets or sets the body layout (can be repeated multiple times). + + + + + + Gets or sets the header layout. + + + + + + Gets or sets the footer layout. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result. + + + + A specialized layout that renders Log4j-compatible XML events. + + + This layout is not meant to be used explicitly. Instead you can use ${log4jxmlevent} layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets the instance that renders log events. + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Represents a string with embedded placeholders that can render contextual information. + + + This layout is not meant to be used explicitly. Instead you can just use a string containing layout + renderers everywhere the layout is required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout string to parse. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + Whether should be thrown on parse errors. + + + + Original text before compile to Layout renderes + + + + + Gets or sets the layout text. + + + + + + Is the message fixed? (no Layout renderers used) + + + + + Get the fixed text. Only set when is true + + + + + Is the message a simple formatted string? (Can skip StringBuilder) + + + + + Gets a collection of objects that make up this layout. + + + + + Gets the level of stack trace information required for rendering. + + + + + Converts a text to a simple layout. + + Text to be converted. + A object. + + + + Escapes the passed text so that it can + be used literally in all places where + layout is normally expected without being + treated as layout. + + The text to be escaped. + The escaped text. + + Escaping is done by replacing all occurrences of + '${' with '${literal:text=${}' + + + + + Evaluates the specified text by expanding all layout renderers. + + The text to be evaluated. + Log event to be used for evaluation. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Evaluates the specified text by expanding all layout renderers + in new context. + + The text to be evaluated. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Returns a that represents the current object. + + + A that represents the current object. + + + + + + + + + + + + + + + + + + + + XML attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with xml-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A XML Element + + + + + + + + + + + Name of the element + + + + + + Value inside the element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + The name of the top XML node + The value of the top XML node + + + + Name of the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Value inside the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Auto indent and create new lines + + + + + + Gets the array of xml 'elements' configurations. + + + + + + Gets the array of 'attributes' configurations for the element + + + + + + Gets or sets whether a ElementValue with empty value should be included in the output + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as XML) + + + + + + List of property names to exclude when is true + + + + + + XML element name to use when rendering properties + + + Support string-format where {0} means property-key-name + + Skips closing element tag when having configured + + + + + + XML attribute name to use when rendering property-key + + When null (or empty) then key-attribute is not included + + + Will replace newlines in attribute-value with + + + + + + XML attribute name to use when rendering property-value + + When null (or empty) then value-attribute is not included and + value is formatted as XML-element-value + + + Skips closing element tag when using attribute for value + + Will replace newlines in attribute-value with + + + + + + XML element name to use for rendering IList-collections items + + + + + + How far should the XML serializer follow object references before backing off + + + + + + Initializes the layout. + + + + + Formats the log event as a XML document for writing. + + The logging event. + for the result + + + + Formats the log event as a XML document for writing. + + The log event to be formatted. + A XML string representation of the log event. + + + + write attribute, only if is not empty + + + + + rendered + + + + Generate description of XML Layout + + XML Layout String Description + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + + + + + + + Name of the root XML element + + + + + + Value inside the root XML element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Represents the logging event. + + + + + Gets the date of the first log event created. + + + + + The formatted log message. + + + + + The log message including any parameter placeholders + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + Exception information. + + + + Gets the unique identifier of log event which is automatically generated + and monotonously increasing. + + + + + Gets or sets the timestamp of the logging event. + + + + + Gets or sets the level of the logging event. + + + + + Gets a value indicating whether stack trace has been set for this event. + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Gets the entire stack trace. + + + + + Gets the callsite class name + + + + + Gets the callsite member function name + + + + + Gets the callsite source file path + + + + + Gets the callsite source file line number + + + + + Gets or sets the exception information. + + + + + Gets or sets the logger name. + + + + + Gets the logger short name. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the log message including any parameter placeholders. + + + + + Gets or sets the parameter values or null if no parameters have been specified. + + + + + Gets or sets the format provider that was provided while logging or + when no formatProvider was specified. + + + + + Gets or sets the message formatter for generating + Uses string.Format(...) when nothing else has been configured. + + + + + Gets the formatted message. + + + + + Checks if any per-event properties (Without allocation) + + + + + Gets the dictionary of per-event context properties. + + + + + Gets the dictionary of per-event context properties. + Internal helper for the PropertiesDictionary type. + + Create the event-properties dictionary, even if no initial template parameters + Provided when having parsed the message template and capture template parameters (else null) + + + + + Gets the named parameters extracted from parsing as MessageTemplate + + + + + Gets the dictionary of per-event context properties. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + The exception. + Instance of . + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates from this by attaching the specified asynchronous continuation. + + The asynchronous continuation. + Instance of with attached continuation. + + + + Returns a string representation of this log event. + + String representation of the log event. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace (Negative means NLog should skip stackframes from System-assemblies). + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Set the + + true = Always, false = Never, null = Auto Detect + + + + Specialized LogFactory that can return instances of custom logger types. + + Use this only when a custom Logger type is defined. + The type of the logger to be returned. Must inherit from . + + + + Gets the logger with type . + + The logger name. + An instance of . + + + + Gets a custom logger with the full name of the current class (so namespace and class name) and type . + + An instance of . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Overwrite possible file paths (including filename) for possible NLog config files. + When this property is null, the default file paths ( are used. + + + + + Occurs when logging changes. + + + + + Occurs when logging gets reloaded. + + + + + Initializes static members of the LogManager class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The config. + + + + Initializes a new instance of the class. + + The config loader + The custom AppEnvironmnet override + + + + Gets the current . + + + + + Gets or sets a value indicating whether exceptions should be thrown. See also . + + A value of true if exception should be thrown; otherwise, false. + By default exceptions are not thrown under any circumstances. + + + + Gets or sets a value indicating whether should be thrown. + + If null then is used. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. After setting this property all + existing loggers will be re-configured, so there is no need to call + manually. + + + + + Gets or sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets the default culture info to use as . + + + Specific culture info or null to use + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting + unmanaged resources. + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Creates a logger that discards all log messages. + + Null logger instance. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets the logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + The logger with type . + Type of the logger + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The type of the logger to create. The type must inherit from + The logger of type . + This is a slow-running method. Make sure you are not calling this method in a + loop. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + Name of the logger. + Type of the logger + The logger reference with type . Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The type of the logger to create. The type must inherit from . + The logger of type . Multiple calls to GetLogger with the + same argument aren't guaranteed to return the same logger reference. + + + + Loops through all loggers previously returned by GetLogger and recalculates their + target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time + will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flushes any pending log messages on all appenders. + + Config containing Targets to Flush + Flush completed notification (success / timeout) + Optional timeout that guarantees that completed notication is called. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Returns if logging is currently enabled. + + A value of if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Raises the event when the configuration is reloaded. + + Event arguments. + + + + Raises the event when the configuration is reloaded. + + Event arguments + + + + Currently this is disposing? + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Logger cache key. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Determines if two objects are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Determines if two objects of the same type are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Logger cache. + + + + + Inserts or updates. + + + + + + + Internal for unit tests + + + + + Enables logging in implementation. + + + + + Initializes a new instance of the class. + + The factory. + + + + Enables logging. + + + + + Logging methods which only are executed when the DEBUG conditional compilation symbol is set. + + Remarks: + The DEBUG conditional compilation symbol is default enabled (only) in a debug build. + + If the DEBUG conditional compilation symbol isn't set in the calling library, the compiler will remove all the invocations to these methods. + This could lead to better performance. + + See: https://msdn.microsoft.com/en-us/library/4xssyw96%28v=vs.90%29.aspx + + + Provides logging interface and utility functions. + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Initializes a new instance of the class. + + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Collection of context properties for the Logger. The logger will append it for all log events + + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Creates new logger that automatically appends the specified property to all log events (without changing current logger) + + Property Name + Property Value + New Logger object that automatically appends specified property + + + + Updates the specified context property for the current logger. The logger will append it for all log events. + + It could be rendered with ${event-properties:YOURNAME} + + With property, all properties could be changed. + + + Will affect all locations/contexts that makes use of the same named logger object. + + Property Name + Property Value + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Logs an exception is logged at Error level if the provided task does not run to completion. + + The task for which to log an error if it does not run to completion. + This method is useful in fire-and-forget situations, where application logic does not depend on completion of task. This method is avoids C# warning CS4014 in such situations. + + + + Returns a task that completes when a specified task to completes. If the task does not run to completion, an exception is logged at Error level. The returned task always runs to completion. + + The task for which to log an error if it does not run to completion. + A task that completes in the state when completes. + + + + Runs async action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Async action to execute. + + + + Runs the provided async function and returns its result. If the task does not run to completion, an exception is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Async function to run. + A task that represents the completion of the supplied task. If the supplied task ends in the state, the result of the new task will be the result of the supplied task; otherwise, the result of the new task will be the default value of type . + + + + Runs the provided async function and returns its result. If the task does not run to completion, an exception is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Async function to run. + Fallback value to return if the task does not end in the state. + A task that represents the completion of the supplied task. If the supplied task ends in the state, the result of the new task will be the result of the supplied task; otherwise, the result of the new task will be the fallback value. + + + + Raises the event when the logger is reconfigured. + + Event arguments + + + + Implementation of logging engine. + + + + + Gets the filter result. + + The filter chain. + The log event. + default result if there are no filters, or none of the filters decides. + The result of the filter. + + + + Defines available log levels. + + + + + Trace log level. + + + + + Debug log level. + + + + + Info log level. + + + + + Warn log level. + + + + + Error log level. + + + + + Fatal log level. + + + + + Off log level. + + + + + Gets all the available log levels (Trace, Debug, Info, Warn, Error, Fatal, Off). + + + + + Gets all the log levels that can be used to log events (Trace, Debug, Info, Warn, Error, Fatal) + i.e LogLevel.Off is excluded. + + + + + Initializes a new instance of . + + The log level name. + The log level ordinal number. + + + + Gets the name of the log level. + + + + + Gets the ordinal of the log level. + + + + + Compares two objects + and returns a value indicating whether + the first one is equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal == level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is not equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal != level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than the second one. + + The first level. + The second level. + The value of level1.Ordinal > level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal >= level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than the second one. + + The first level. + The second level. + The value of level1.Ordinal < level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal <= level2.Ordinal. + + + + Gets the that corresponds to the specified ordinal. + + The ordinal. + The instance. For 0 it returns , 1 gives and so on. + + + + Returns the that corresponds to the supplied . + + The textual representation of the log level. + The enumeration value. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Determines whether the specified instance is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Compares the level to the other object. + + + The object object. + + + A value less than zero when this logger's is + less than the other logger's ordinal, 0 when they are equal and + greater than zero when this ordinal is greater than the + other ordinal. + + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Delegate used to set/get the culture in use. + + This delegate marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the instance used in the . + + Could be used to pass the to other methods + + + + Occurs when logging changes. + + + + + Occurs when logging gets reloaded. + + + + + Gets or sets a value indicating whether NLog should throw exceptions. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether should be thrown. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Gets or sets the global log threshold. Log events below this threshold are not logged. + + + + + Gets or sets the default culture to use. + + This property was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Adds the given assembly which will be skipped + when NLog is trying to find the calling method on stack trace. + + The assembly to skip. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The logger class. This class must inherit from . + The logger of type . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates a logger that discards all log messages. + + Null logger which discards all log messages. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + + + + Gets the specified named custom logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The logger class. This class must inherit from . + The logger of type . Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + The generic way for this method is + + + + Loops through all loggers previously returned by GetLogger. + and recalculates their target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Checks if logging is currently enabled. + + if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Dispose all targets, and shutdown logging. + + + + + Generates a formatted message from the log event + + Log event. + Formatted message + + + + Returns a log message. Used to defer calculation of + the log message until it's actually needed. + + Log message. + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + + + + + Gets the thread-local dictionary + + Must be true for any subsequent dictionary modification operation + + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The to use when converting a value to a . + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Returns all item names + + A set of the names of all items in current thread-MDC. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified exists in current thread MDC. + + + + Removes the specified from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Async version of Mapped Diagnostics Context - a logical context structure that keeps a dictionary + of strings and provides methods to output them in layouts. Allows for maintaining state across + asynchronous tasks and call contexts. + + + Ideally, these changes should be incorporated as a new version of the MappedDiagnosticsContext class in the original + NLog library so that state can be maintained for multiple threads in asynchronous situations. + + + + + Simulate ImmutableDictionary behavior (which is not yet part of all .NET frameworks). + In future the real ImmutableDictionary could be used here to minimize memory usage and copying time. + + Must be true for any subsequent dictionary modification operation + Prepare dictionary for additional inserts + + + + + Gets the current logical context named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current logical context named item, as . + + Item name. + The to use when converting a value to a string. + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current logical context named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Updates the current logical context with multiple items in single operation + + . + >An that can be used to remove the item from the current logical context (null if no items). + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Returns all item names + + A collection of the names of all items in current logical context. + + + + Checks whether the specified exists in current logical context. + + Item name. + A boolean indicating whether the specified exists in current logical context. + + + + Removes the specified from current logical context. + + Item name. + + + + Clears the content of current logical context. + + + + + Clears the content of current logical context. + + Free the full slot. + + + + Mapped Diagnostics Context + + This class marked as obsolete before NLog 2.0 and it may be removed in a future release. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified item exists in current thread MDC. + + + + Removes the specified item from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Mark a parameter of a method for message templating + + + + + Specifies which parameter of an annotated method should be treated as message-template-string + + + + + The name of the parameter that should be as treated as message-template-string + + + + + The type of the captured hole + + + + + Not decided + + + + + normal {x} + + + + + Serialize operator {@x} (aka destructure) + + + + + stringification operator {$x} + + + + + A hole that will be replaced with a value + + + + + Constructor + + + + Parameter name sent to structured loggers. + This is everything between "{" and the first of ",:}". + Including surrounding spaces and names that are numbers. + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + Type + + + + When the template is positional, this is the parsed name of this parameter. + For named templates, the value of Index is undefined. + + + Alignment to render the parameter, by default 0. + This is the parsed value between "," and the first of ":}" + + + + A fixed value + + + + Number of characters from the original template to copy at the current position. + This can be 0 when the template starts with a hole or when there are multiple consecutive holes. + + + Number of characters to skip in the original template at the current position. + 0 is a special value that mean: 1 escaped char, no hole. It can also happen last when the template ends with a literal. + + + + Combines Literal and Hole + + + + Literal + + + Hole + Uninitialized when = 0. + + + + Description of a single parameter extracted from a MessageTemplate + + + + + Parameter Name extracted from + This is everything between "{" and the first of ",:}". + + + + + Parameter Value extracted from the -array + + + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + + Parameter method that should be used to render the parameter + See also + + + + + Returns index for , when + + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + Parameter CaptureType + + + + Parameters extracted from parsing as MessageTemplate + + + + + + + + + + + Gets the parameters at the given index + + + + + Number of parameters + + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Indicates whether the template was parsed successful, and there are no unmatched parameters + + + + + Constructor for parsing the message template with parameters + + including any parameter placeholders + All + + + + Constructor for named parameters that already has been parsed + + + + + Create MessageTemplateParameter from + + + + + A message template + + + + The original template string. + This is the key passed to structured targets. + + + The list of literal parts, useful for string rendering. + It indicates the number of characters from the original string to print, + then there's a hole with how many chars to skip. + + "Hello {firstName} {lastName}!" + ------------------------------------- + ║P |S ║P|S ║P|S║ + ║6 |11 ║1|10 ║1|0║ + ║Hello |{firstName}║ |{lastName}║!║ + + "{x} * 2 = {2x}" + -------------------- + ║P|S ║P |S ║ + ║0|3 ║7 |4 ║ + ║{x}║ * 2 = |{2x}║ + + The tricky part is escaped braces. They are represented by a skip = 0, + which is interpreted as "move one char forward, no hole". + + "Escaped }} is fun." + ---------------------- + ║P |S║P |S║ + ║9 |0║8 |0║ + ║Escaped }|}║ is fun.|║ + + + + This list of holes. It's used both to fill the string rendering + and to send values along the template to structured targets. + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Create a template, which is already parsed + + + + + + + + + Create a template, which is already parsed + + + + + + + + This is for testing only: recreates from the parsed data. + + + + This is for testing only: rebuilds the hole + + Add to this string builder + ref for performance + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Gets the current literal/hole in the template + + + + + Clears the enumerator + + + + + Restarts the enumerator of the template + + + + + Moves to the next literal/hole in the template + + Found new element [true/false] + + + + Parse format after hole name/index. Handle the escaped { and } in the format. Don't read the last } + + + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Error when parsing a template. + + + + + Current index when the error occurred. + + + + + The template we were parsing + + + + + New exception + + The message to be shown. + Current index when the error occurred. + + + + + Render templates + + + + + Render a template to a string. + + The template. + Culture. + Parameters for the holes. + Do not fallback to StringBuilder.Format for positional templates. + The String Builder destination. + Parameters for the holes. + + + + Render a template to a string. + + The template. + The String Builder destination. + Culture. + Parameters for the holes. + Rendered template, never null. + + + + Convert Render or serialize a value, with optionally backwards-compatible with + + + + Singleton + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Format an object to a readable string, or if it's an object, serialize + + The value to convert + + + + + + + + Try serializing a scalar (string, int, NULL) or simple type (IFormattable) + + + + + Serialize Dictionary as JSON like structure, without { and } + + + "FirstOrder"=true, "Previous login"=20-12-2017 14:55:32, "number of tries"=1 + + + formatstring of an item + + + + + + + + + Convert a value to a string with format and append to . + + The value to convert. + Format sting for the value. + Format provider for the value. + Append to this + + + + Nested Diagnostics Context + + This class marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top object off the NDC stack. The object is removed from the stack. + + The top object from the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all objects on the NDC stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Nested Diagnostics Context - a thread-local structure that keeps a stack + of strings and provides methods to output them in layouts + + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object at the top of the NDC stack if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified object on current thread NDC. + + The object to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top message from the NDC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top object off the NDC stack. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Peeks the first object on the NDC stack + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. + + Array of objects on the stack. + + + + Resets the stack to the original count during . + + + + + Initializes a new instance of the class. + + The stack. + The previous count. + + + + Reverts the stack to original item count. + + + + + Async version of - a logical context structure that keeps a stack + Allows for maintaining scope across asynchronous tasks and call contexts. + + + + + Pushes the specified value on current stack + + The value to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified value on current stack + + The value to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDLC stack. + + The top message which is no longer on the stack. + this methods returns a object instead of string, this because of backwards-compatibility + + + + Pops the top message from the NDLC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top message off the current NDLC stack + + The object from the top of the NDLC stack, if defined; otherwise null. + + + + Peeks the top object on the current NDLC stack + + The object from the top of the NDLC stack, if defined; otherwise null. + + + + Peeks the current scope, and returns its start time + + Scope Creation Time + + + + Peeks the first scope, and returns its start time + + Scope Creation Time + + + + Clears current stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Exception thrown during NLog configuration. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The inner exception. + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Exception thrown during log event processing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + TraceListener which routes all messages through NLog. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the log factory to use when outputting messages (null - use LogManager). + + + + + Gets or sets the default log level. + + + + + Gets or sets the log which should be always used regardless of source level. + + + + + Gets or sets a value indicating whether flush calls from trace sources should be ignored. + + + + + Gets a value indicating whether the trace listener is thread safe. + + + true if the trace listener is thread safe; otherwise, false. The default is false. + + + + Gets or sets a value indicating whether to use auto logger name detected from the stack trace. + + + + + When overridden in a derived class, writes the specified message to the listener you create in the derived class. + + A message to write. + + + + When overridden in a derived class, writes a message to the listener you create in the derived class, followed by a line terminator. + + A message to write. + + + + When overridden in a derived class, closes the output stream so it no longer receives tracing or debugging output. + + + + + Emits an error message. + + A message to emit. + + + + Emits an error message and a detailed error message. + + A message to emit. + A detailed message to emit. + + + + Flushes the output (if is not true) buffer with the default timeout of 15 seconds. + + + + + Writes trace information, a data object and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + The trace data to emit. + + + + Writes trace information, an array of data objects and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + An array of objects to emit as data. + + + + Writes trace and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + + + + Writes trace information, a formatted array of objects and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + A format string that contains zero or more format items, which correspond to objects in the array. + An object array containing zero or more objects to format. + + + + Writes trace information, a message, and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + One of the values specifying the type of event that has caused the trace. + A numeric identifier for the event. + A message to write. + + + + Writes trace information, a message, a related activity identity and event information to the listener specific output. + + A object that contains the current process ID, thread ID, and stack trace information. + A name used to identify the output, typically the name of the application that generated the trace event. + A numeric identifier for the event. + A message to write. + A object identifying a related activity. + + + + Gets the custom attributes supported by the trace listener. + + + A string array naming the custom attributes supported by the trace listener, or null if there are no custom attributes. + + + + + Translates the event type to level from . + + Type of the event. + Translated log level. + + + + Process the log event + The log level. + The name of the logger. + The log message. + The log parameters. + The event id. + The event type. + The related activity id. + + + + + It works as a normal but it discards all messages which an application requests + to be logged. + + It effectively implements the "Null Object" pattern for objects. + + + + + Initializes a new instance of . + + The factory class to be used for the creation of this logger. + + + + Extension methods to setup LogFactory options + + + + + Gets the logger with the full name of the current class, so namespace and class name. + + + + + Gets the specified named logger. + + + + + Configures loading of NLog extensions for Targets and LayoutRenderers + + + + + Configures the output of NLog for diagnostics / troubleshooting + + + + + Configures serialization and transformation of LogEvents + + + + + Loads NLog config created by the method + + + + + Loads NLog config provided in + + + + + Loads NLog config from filename if provided, else fallback to scanning for NLog.config + + + + + Loads NLog config from XML in + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Enable/disables autoloading of NLog extensions by scanning and loading available assemblies + + + Enabled by default, and gives a huge performance hit during startup. Recommended to disable this when running in the cloud. + + + + + Registers NLog extensions from the assembly. + + + + + Registers NLog extensions from the assembly type name + + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + MethodInfo extracted by reflection - typeof(MyClass).GetMethod("MyFunc", BindingFlags.Static). + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + Lambda method. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + Lambda method. + + + + Extension methods to setup NLog options + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Overrides the active with a new custom implementation + + + + + Overrides the active with a new custom implementation + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Specifies the way archive numbering is performed. + + + + + Sequence style numbering. The most recent archive has the highest number. + + + + + Rolling style numbering (the most recent is always #0 then #1, ..., #N. + + + + + Date style numbering. Archives will be stamped with the prior period + (Year, Month, Day, Hour, Minute) datetime. + + + + + Date and sequence style numbering. + Archives will be stamped with the prior period (Year, Month, Day) datetime. + The most recent archive has the highest number (in combination with the date). + + + + + Abstract Target with async Task support + + + + + How many milliseconds to delay the actual write operation to optimize for batching + + + + + How many seconds a Task is allowed to run before it is cancelled. + + + + + How many attempts to retry the same Task, before it is aborted + + + + + How many milliseconds to wait before next retry (will double with each retry) + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Task Scheduler used for processing async Tasks + + + + + Constructor + + + + + Initializes the internal queue for pending logevents + + + + + Override this to create the actual logging task + + Example of how to override this method, and call custom async method + + protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) + { + return CustomWriteAsync(logEvent, token); + } + + private async Task CustomWriteAsync(LogEventInfo logEvent, CancellationToken token) + { + await MyLogMethodAsync(logEvent, token).ConfigureAwait(false); + } + + + The log event. + The cancellation token + + + + + Override this to create the actual logging task for handling batch of logevents + + A batch of logevents. + The cancellation token + + + + + Handle cleanup after failed write operation + + Exception from previous failed Task + The cancellation token + Number of retries remaining + Time to sleep before retrying + Should attempt retry + + + + Schedules the LogEventInfo for async writing + + The log event. + + + + Write to queue without locking + + + + + + Schedules notification of when all messages has been written + + + + + + Closes Target by updating CancellationToken + + + + + Releases any managed resources + + + + + + Checks the internal queue for the next to create a new task for + + Used for race-condition validation between task-completion and timeout + Signals whether previousTask completed an almost full BatchSize + + + + Generates recursive task-chain to perform retry of writing logevents with increasing retry-delay + + + + + Creates new task to handle the writing of the input + + LogEvents to write + New Task created [true / false] + + + + Handles that scheduled task has completed (successfully or failed), and starts the next pending task + + Task just completed + AsyncContinuation to notify of success or failure + + + + Timer method, that is fired when pending task fails to complete within timeout + + + + + + Sends log messages to the remote instance of Chainsaw application from log4j. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a name. + + Name of the target. + + + + Color formatting for using ANSI Color Codes + + + + + Not using bold to get light colors, as it has to be cleared + + + + + Not using bold to get light colors, as it has to be cleared (And because it only works for text, and not background) + + + + + Resets both foreground and background color. + + + + + ANSI have 8 color-codes (30-37) by default. The "bright" (or "intense") color-codes (90-97) are extended values not supported by all terminals + + + + + Color formatting for using + and + + + + + Writes log messages to the console with customizable coloring. + + Documentation on NLog Wiki + + + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default.In multithreaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether the error stream (stderr) should be used instead of the output stream (stdout). + + + + + + Gets or sets a value indicating whether to use default row highlighting rules. + + + The default rules are: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConditionForeground ColorBackground Color
level == LogLevel.FatalRedNoChange
level == LogLevel.ErrorYellowNoChange
level == LogLevel.WarnMagentaNoChange
level == LogLevel.InfoWhiteNoChange
level == LogLevel.DebugGrayNoChange
level == LogLevel.TraceDarkGrayNoChange
+
+ +
+ + + The encoding for writing messages to the . + + Has side effect + + + + + Gets or sets a value indicating whether to auto-check if the console is available. + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-check if the console has been redirected to file + - Disables coloring logic when System.Console.IsOutputRedirected = true + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + + Enables output using ANSI Color Codes + + + + + + Gets the row highlighting rules. + + + + + + Gets the word highlighting rules. + + + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified log event to the console highlighting entries + and words based on a set of defined rules. + + Log event. + + + + Colored console output color. + + + Note that this enumeration is defined to be binary compatible with + .NET 2.0 System.ConsoleColor + some additions + + + + + Black Color (#000000). + + + + + Dark blue Color (#000080). + + + + + Dark green Color (#008000). + + + + + Dark Cyan Color (#008080). + + + + + Dark Red Color (#800000). + + + + + Dark Magenta Color (#800080). + + + + + Dark Yellow Color (#808000). + + + + + Gray Color (#C0C0C0). + + + + + Dark Gray Color (#808080). + + + + + Blue Color (#0000FF). + + + + + Green Color (#00FF00). + + + + + Cyan Color (#00FFFF). + + + + + Red Color (#FF0000). + + + + + Magenta Color (#FF00FF). + + + + + Yellow Color (#FFFF00). + + + + + White Color (#FFFFFF). + + + + + Don't change the color. + + + + + The row-highlighting condition. + + + + + Initializes static members of the ConsoleRowHighlightingRule class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The condition. + Color of the foreground. + Color of the background. + + + + Gets the default highlighting rule. Doesn't change the color. + + + + + Gets or sets the condition that must be met in order to set the specified foreground and background color. + + + + + + Gets or sets the foreground color. + + + + + + Gets or sets the background color. + + + + + + Checks whether the specified log event matches the condition (if any). + + + Log event. + + + A value of if the condition is not defined or + if it matches, otherwise. + + + + + Writes log messages to the console. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default. In multi threaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Gets or sets a value indicating whether to send the log messages to the standard error instead of the standard output. + + + + + + The encoding for writing messages to the . + + Has side effect + + + + + Gets or sets a value indicating whether to auto-check if the console is available + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + + Gets or sets whether to enable batch writing using char[]-buffers, instead of using + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified logging event to the Console.Out or + Console.Error depending on the value of the Error flag. + + The logging event. + + Note that the Error option is not supported on .NET Compact Framework. + + + + + + + + Write to output + + + + + Highlighting rule for Win32 colorful console. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The text to be matched.. + Color of the foreground. + Color of the background. + + + + Gets or sets the regular expression to be matched. You must specify either text or regex. + + + + + + Gets or sets the condition that must be met before scanning the row for highlight of words + + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets the text to be matched. You must specify either text or regex. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Gets or sets the foreground color. + + + + + + Gets or sets the background color. + + + + + + Gets the compiled regular expression that matches either Text or Regex property. Only used when is true. + + + + + Information about database command + parameters. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the type of the command. + + The type of the command. + + + + + Gets or sets the connection string to run the command against. If not provided, connection string from the target is used. + + + + + + Gets or sets the command text. + + + + + + Gets or sets a value indicating whether to ignore failures. + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a database named or positional parameter. + + + + + + Information about object-property for the database-connection-object + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name for the object-property + + + + + + Gets or sets the value to assign on the object-property + + + + + + Gets or sets the type of the object-property + + + + + + Gets or sets convert format of the property value + + + + + + Gets or sets the culture used for parsing property string-value for type-conversion + + + + + + Represents a parameter to a Database target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the parameter. + The parameter layout. + + + + Gets or sets the database parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets the database parameter DbType. + + + + + + Gets or sets the database parameter size. + + + + + + Gets or sets the database parameter precision. + + + + + + Gets or sets the database parameter scale. + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets convert format of the database parameter value. + + + + + + Gets or sets the culture used for parsing parameter string-value for type-conversion + + + + + + Writes log messages to the database using an ADO.NET provider. + + + - NETSTANDARD cannot load connectionstrings from .config + + Documentation on NLog Wiki + + + The configuration is dependent on the database type, because + there are different methods of specifying connection string, SQL + command and command parameters. + + MS SQL Server using System.Data.SqlClient: + + Oracle using System.Data.OracleClient: + + Oracle using System.Data.OleDBClient: + + To set up the log target programmatically use code like this (an equivalent of MSSQL configuration): + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets the name of the database provider. + + + + The parameter name should be a provider invariant name as registered in machine.config or app.config. Common values are: + +
    +
  • System.Data.SqlClient - SQL Sever Client
  • +
  • System.Data.SqlServerCe.3.5 - SQL Sever Compact 3.5
  • +
  • System.Data.OracleClient - Oracle Client from Microsoft (deprecated in .NET Framework 4)
  • +
  • Oracle.DataAccess.Client - ODP.NET provider from Oracle
  • +
  • System.Data.SQLite - System.Data.SQLite driver for SQLite
  • +
  • Npgsql - Npgsql driver for PostgreSQL
  • +
  • MySql.Data.MySqlClient - MySQL Connector/Net
  • +
+ (Note that provider invariant names are not supported on .NET Compact Framework). + + Alternatively the parameter value can be be a fully qualified name of the provider + connection type (class implementing ) or one of the following tokens: + +
    +
  • sqlserver, mssql, microsoft or msde - SQL Server Data Provider
  • +
  • oledb - OLEDB Data Provider
  • +
  • odbc - ODBC Data Provider
  • +
+
+ +
+ + + Gets or sets the connection string. When provided, it overrides the values + specified in DBHost, DBUserName, DBPassword, DBDatabase. + + + + + + Gets or sets the connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used. + + + + + + Gets the installation DDL commands. + + + + + + Gets the uninstallation DDL commands. + + + + + + Gets or sets a value indicating whether to keep the + database connection open between the log events. + + + + + + Obsolete - value will be ignored! The logging code always runs outside of transaction. + + Gets or sets a value indicating whether to use database transactions. + Some data providers require this. + + + + This option was removed in NLog 4.0 because the logging code always runs outside of transaction. + This ensures that the log gets written to the database if you rollback the main transaction because of an error and want to log the error. + + + + + Gets or sets the database host name. If the ConnectionString is not provided + this value will be used to construct the "Server=" part of the + connection string. + + + + + + Gets or sets the database user name. If the ConnectionString is not provided + this value will be used to construct the "User ID=" part of the + connection string. + + + + + + Gets or sets the database password. If the ConnectionString is not provided + this value will be used to construct the "Password=" part of the + connection string. + + + + + + Gets or sets the database name. If the ConnectionString is not provided + this value will be used to construct the "Database=" part of the + connection string. + + + + + + Gets or sets the text of the SQL command to be run on each log level. + + + Typically this is a SQL INSERT statement or a stored procedure call. + It should use the database-specific parameters (marked as @parameter + for SQL server or :parameter for Oracle, other data providers + have their own notation) and not the layout renderers, + because the latter is prone to SQL injection attacks. + The layout renderers should be specified as <parameter /> elements instead. + + + + + + Gets or sets the type of the SQL command to be run on each log level. + + + This specifies how the command text is interpreted, as "Text" (default) or as "StoredProcedure". + When using the value StoredProcedure, the commandText-property would + normally be the name of the stored procedure. TableDirect method is not supported in this context. + + + + + + Gets the collection of parameters. Each item contains a mapping + between NLog layout and a database named or positional parameter. + + + + + + Gets the collection of properties. Each item contains a mapping + between NLog layout and a property on the DbConnection instance + + + + + + Gets the collection of properties. Each item contains a mapping + between NLog layout and a property on the DbCommand instance + + + + + + Configures isolated transaction batch writing. If supported by the database, then it will improve insert performance. + + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Set the to use it for opening connections to the database. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the database. It creates + a new database command, prepares parameters for it by calculating + layouts and executes the command. + + The logging event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Write logEvent to database + + + + + Build the connectionstring from the properties. + + + Using at first, and falls back to the properties , + , and + + Event to render the layout inside the properties. + + + + + Escape quotes and semicolons. + See https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms722656(v=vs.85)#setting-values-that-use-reserved-characters + + + + + Create database parameter + + Current command. + Parameter configuration info. + + + + Extract parameter value from the logevent + + Current logevent. + Parameter configuration info. + + + + Create Default Value of Type + + + + + + + A descriptor for an archive created with the DateAndSequence numbering mode. + + + + + The full name of the archive file. + + + + + The parsed date contained in the file name. + + + + + The parsed sequence number contained in the file name. + + + + + Determines whether produces the same string as the current instance's date once formatted with the current instance's date format. + + The date to compare the current object's date to. + True if the formatted dates are equal, otherwise False. + + + + Initializes a new instance of the class. + + + + + Writes log messages to the attached managed debugger. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the attached debugger. + + The logging event. + + + + Mock target - useful for testing. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + Increases the number of messages. + + The logging event. + + + + Default class for serialization of values to JSON format. + + + + + Singleton instance of the serializer. + + + + + Private. Use + + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + Serialized value. + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + serialisation options + Serialized value. + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + The objects in path (Avoid cyclic reference loop). + The current depth (level) of recursion. + Object serialized successfully (true/false). + + + + No quotes needed for this type? + + + + + Checks the object if it is numeric + + TypeCode for the object + Accept fractional types as numeric type. + + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + all options + JSON escaped string + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + Should non-ascii characters be encoded + + JSON escaped string + + + + Check if cleanup should be performed on initialize new file + + Skip cleanup when initializing new file, just after having performed archive operation + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Characters determining the start of the . + + + + + Characters determining the end of the . + + + + + File name which is used as template for matching and replacements. + It is expected to contain a pattern to match. + + + + + The begging position of the + within the . -1 is returned + when no pattern can be found. + + + + + The ending position of the + within the . -1 is returned + when no pattern can be found. + + + + + Replace the pattern with the specified String. + + + + + + + Archives the log-files using a date style numbering. Archives will be stamped with the + prior period (Year, Month, Day, Hour, Minute) datetime. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Archives the log-files using a date and sequence style numbering. Archives will be stamped + with the prior period (Year, Month, Day) datetime. The most recent archive has the highest number (in + combination with the date). + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Parse filename with date and sequence pattern + + + dateformat for archive + + the found pattern. When failed, then default + the found pattern. When failed, then default + + + + + Archives the log-files using the provided base-archive-filename. If the base-archive-filename causes + duplicate archive filenames, then sequence-style is automatically enforced. + + Example: + Base Filename trace.log + Next Filename trace.0.log + + The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Dynamically converts a non-template archiveFilePath into a correct archiveFilePattern. + Before called the original IFileArchiveMode, that has been wrapped by this + + + + + Determines if the file name as contains a numeric pattern i.e. {#} in it. + + Example: + trace{#}.log Contains the numeric pattern. + trace{###}.log Contains the numeric pattern. + trace{#X#}.log Contains the numeric pattern (See remarks). + trace.log Does not contain the pattern. + + Occasionally, this method can identify the existence of the {#} pattern incorrectly. + File name to be checked. + when the pattern is found; otherwise. + + + + Archives the log-files using a rolling style numbering (the most recent is always #0 then + #1, ..., #N. + + When the number of archive files exceed the obsolete archives + are deleted. + + + + + Replaces the numeric pattern i.e. {#} in a file name with the parameter value. + + File name which contains the numeric pattern. + Value which will replace the numeric pattern. + File name with the value of in the position of the numeric pattern. + + + + Archives the log-files using a sequence style numbering. The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Modes of archiving files based on time. + + + + + Don't archive based on time. + + + + + AddToArchive every year. + + + + + AddToArchive every month. + + + + + AddToArchive daily. + + + + + AddToArchive every hour. + + + + + AddToArchive every minute. + + + + + AddToArchive every Sunday. + + + + + AddToArchive every Monday. + + + + + AddToArchive every Tuesday. + + + + + AddToArchive every Wednesday. + + + + + AddToArchive every Thursday. + + + + + AddToArchive every Friday. + + + + + AddToArchive every Saturday. + + + + + Type of filepath + + + + + Detect of relative or absolute + + + + + Relative path + + + + + Absolute path + + Best for performance + + + + Writes log messages to one or more files. + + Documentation on NLog Wiki + + + + Default clean up period of the initialized files. When a file exceeds the clean up period is removed from the list. + + Clean up period is defined in days. + + + + The maximum number of initialized files before clean up procedures are initiated, + to keep the number of initialized files to a minimum. Chose 25 to cater for monthly rolling of log-files. + + + + + This value disables file archiving based on the size. + + + + + Holds the initialized files each given time by the instance. Against each file, the last write time is stored. + + Last write time is store in local time (no UTC). + + + + List of the associated file appenders with the instance. + + + + + The number of initialized files at any one time. + + + + + The maximum number of archive files that should be kept. + + + + + The maximum days of archive files that should be kept. + + + + + The filename as target + + + + + The archive file name as target + + + + + The date of the previous log event. + + + + + The file name of the previous log event. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the name of the file to write to. + + + This FileName string is a layout which may include instances of layout renderers. + This lets you use a single target to write to multiple files. + + + The following value makes NLog write logging events to files based on the log level in the directory where + the application runs. + ${basedir}/${level}.log + All Debug messages will go to Debug.log, all Info messages will go to Info.log and so on. + You can combine as many of the layout renderers as you want to produce an arbitrary log file name. + + + + + + Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. + If set to false, nothing gets written when the filename is wrong. + + + + + + Is the an absolute or relative path? + + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + + Gets or sets a value indicating whether to delete old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + + + + + + Gets or sets a value indicating whether to replace file contents on each write instead of appending log message at the end. + + + + + + Gets or sets a value indicating whether to keep log file open instead of opening and closing it on each logging event. + + + Setting this property to True helps improve performance. + + + + + + Gets or sets the maximum number of log file names that should be stored as existing. + + + The bigger this number is the longer it will take to write each log record. The smaller the number is + the higher the chance that the clean function will be run when no new files have been opened. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + + Gets or sets the file attributes (Windows only). + + + + + + Gets or sets the line ending mode. + + + + + + Gets or sets a value indicating whether to automatically flush the file buffers after each log message. + + + + + + Gets or sets the number of files to be kept open. Setting this to a higher value may improve performance + in a situation where a single File target is writing to many files + (such as splitting by level or by logger). + + + The files are managed on a LRU (least recently used) basis, which flushes + the files that have not been used for the longest period of time should the + cache become full. As a rule of thumb, you shouldn't set this parameter to + a very high value. A number like 10-15 shouldn't be exceeded, because you'd + be keeping a large number of files open which consumes system resources. + + + + + + Gets or sets the maximum number of seconds that files are kept open. If this number is negative the files are + not automatically closed after a period of inactivity. + + + + + + Gets or sets the maximum number of seconds before open files are flushed. If this number is negative or zero + the files are not flushed by timer. + + + + + + Gets or sets the log file buffer size in bytes. + + + + + + Gets or sets the file encoding. + + + + + + Gets or sets whether or not this target should just discard all data that its asked to write. + Mostly used for when testing NLog Stack except final write + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on different network hosts. + + + This effectively prevents files from being kept open. + + + + + + Gets or sets a value indicating whether to write BOM (byte order mark) in created files + + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + The actual delay is a random value between 0 and the value specified + in this parameter. On each failed attempt the delay base is doubled + up to times. + + + Assuming that ConcurrentWriteAttemptDelay is 10 the time to wait will be:

+ a random value between 0 and 10 milliseconds - 1st attempt
+ a random value between 0 and 20 milliseconds - 2nd attempt
+ a random value between 0 and 40 milliseconds - 3rd attempt
+ a random value between 0 and 80 milliseconds - 4th attempt
+ ...

+ and so on. + + + + +

+ Gets or sets a value indicating whether to archive old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + After archiving the old file, the current log file will be empty. + + +
+ + + Gets or sets a value of the file size threshold to archive old log file on startup. + + + This option won't work if is set to false + Default value is 0 which means that the file is archived as soon as archival on + startup is enabled. + + + + + + Gets or sets a value specifying the date format to use when archiving files. + + + This option works only when the "ArchiveNumbering" parameter is set either to Date or DateAndSequence. + + + + + + Gets or sets the size in bytes above which log files will be automatically archived. + + Warning: combining this with isn't supported. We cannot create multiple archive files, if they should have the same name. + Choose: + + + Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. + + + + + + Gets or sets a value indicating whether to automatically archive log files every time the specified time passes. + + + Files are moved to the archive as part of the write operation if the current period of time changes. For example + if the current hour changes from 10 to 11, the first write that will occur + on or after 11:00 will trigger the archiving. +

+ Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. +

+
+ +
+ + + Is the an absolute or relative path? + + + + + + Gets or sets the name of the file to be used for an archive. + + + It may contain a special placeholder {#####} + that will be replaced with a sequence of numbers depending on + the archiving strategy. The number of hash characters used determines + the number of numerical digits to be used for numbering files. + + + + + + Gets or sets the maximum number of archive files that should be kept. + + + + + + Gets or sets the maximum days of archive files that should be kept. + + + + + + Gets or sets the way file archives are numbered. + + + + + + Used to compress log files during archiving. + This may be used to provide your own implementation of a zip file compressor, + on platforms other than .Net4.5. + Defaults to ZipArchiveFileCompressor on .Net4.5 and to null otherwise. + + + + + + Gets or sets a value indicating whether to compress archive files into the zip archive format. + + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + + Gets or sets a value indicating whether file creation calls should be synchronized by a system global mutex. + + + + + + Gets or sets a value indicating whether the footer should be written only when the file is archived. + + + + + + Gets the characters that are appended after each line. + + + + + Refresh the ArchiveFilePatternToWatch option of the . + The log file must be watched for archiving when multiple processes are writing to the same + open file. + + + + + Removes records of initialized files that have not been + accessed in the last two days. + + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Removes records of initialized files that have not been + accessed after the specified date. + + The cleanup threshold. + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Flushes all pending file operations. + + The asynchronous continuation. + + The timeout parameter is ignored, because file APIs don't provide + the needed functionality. + + + + + Returns the suitable appender factory ( ) to be used to generate the file + appenders associated with the instance. + + The type of the file appender factory returned depends on the values of various properties. + + suitable for this instance. + + + + Initializes file logging by creating data structures that + enable efficient multi-file logging. + + + + + Closes the file(s) opened for writing. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Get full filename (=absolute) and cleaned if needed. + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes the specified array of logging events to a file specified in the FileName + parameter. + + An array of objects. + + This function makes use of the fact that the events are batched by sorting + the requests by filename. This optimizes the number of open/close calls + and can help improve performance. + + + + + Returns estimated size for memory stream, based on events count and first event size in bytes. + + Count of events + Bytes count of first event + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Gets the bytes to be written to the file. + + Log event. + Array of bytes that are ready to be written. + + + + Modifies the specified byte array before it gets sent to a file. + + The byte array. + The modified byte array. The function can do the modification in-place. + + + + Gets the bytes to be written to the file. + + The log event to be formatted. + to help format log event. + Optional temporary char-array to help format log event. + Destination for the encoded result. + + + + Formats the log event for write. + + The log event to be formatted. + for the result. + + + + Modifies the specified byte array before it gets sent to a file. + + The LogEvent being written + The byte array. + + + + Archives fileName to archiveFileName. + + File name to be archived. + Name of the archive file. + + + + Gets the correct formatting to be used based on the value of for converting values which will be inserting into file + names during archiving. + + This value will be computed only when a empty value or is passed into + + Date format to used irrespectively of value. + Formatting for dates. + + + + Calculate the DateTime of the requested day of the week. + + The DateTime of the previous log event. + The next occuring day of the week to return a DateTime for. + The DateTime of the next occuring dayOfWeek. + For example: if previousLogEventTimestamp is Thursday 2017-03-02 and dayOfWeek is Sunday, this will return + Sunday 2017-03-05. If dayOfWeek is Thursday, this will return *next* Thursday 2017-03-09. + + + + Invokes the archiving process after determining when and which type of archiving is required. + + File name to be checked and archived. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + + + + Gets the pattern that archive files will match + + Filename of the log file + Log event that the instance is currently processing. + A string with a pattern that will match the archive file names + + + + Archives the file if it should be archived. + + The file name to check for. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + True when archive operation of the file was completed (by this target or a concurrent target) + + + + Closes any active file-appenders that matches the input filenames. + File-appender is requested to invalidate/close its filehandle, but keeping its archive-mutex alive + + + + + Indicates if the automatic archiving process should be executed. + + File name to be written. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the correct filename to archive + + + + + + Gets the file name for archiving, or null if archiving should not occur based on file size. + + File name to be written. + The size in bytes of the next chunk of data to be written in the file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the file name for archiving, or null if archiving should not occur based on date/time. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Truncates the input-time, so comparison of low resolution times (like dates) are not affected by ticks + + High resolution Time + Time Resolution Level + Truncated Low Resolution Time + + + + Evaluates which parts of a file should be written (header, content, footer) based on various properties of + instance and writes them. + + File name to be written. + Raw sequence of to be written into the content part of the file. + File has just been opened. + + + + Initialise a file to be used by the instance. Based on the number of initialized + files and the values of various instance properties clean up and/or archiving processes can be invoked. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file (DateTime.MinValue if just initialized). + + + + Writes the file footer and finalizes the file in instance internal structures. + + File name to close. + Indicates if the file is being finalized for archiving. + + + + Writes the footer information to a file. + + The file path to write to. + + + + Decision logic whether to archive logfile on startup. + and properties. + + File name to be written. + Decision whether to archive or not. + + + + Invokes the archiving and clean up of older archive file based on the values of + and + properties respectively. + + File name to be written. + Log event that the instance is currently processing. + + + + Creates the file specified in and writes the file content in each entirety i.e. + Header, Content and Footer. + + The name of the file to be written. + Sequence of to be written in the content section of the file. + First attempt to write? + This method is used when the content of the log file is re-written on every write. + + + + Writes the header information and byte order mark to a file. + + File appender associated with the file. + + + + The sequence of to be written in a file after applying any formatting and any + transformations required from the . + + The layout used to render output message. + Sequence of to be written. + Usually it is used to render the header and hooter of the files. + + + + Controls the text and color formatting for + + + + + Creates a TextWriter for the console to start building a colored text message + + Active console stream + Optional StringBuilder to optimize performance + TextWriter for the console + + + + Releases the TextWriter for the console after having built a colored text message (Restores console colors) + + Colored TextWriter + Active console stream + Original foreground color for console (If changed) + Original background color for console (If changed) + Flush TextWriter + + + + Changes foreground color for the Colored TextWriter + + Colored TextWriter + New foreground color for the console + Old previous backgroundColor color for the console + Old foreground color for the console + + + + Changes backgroundColor color for the Colored TextWriter + + Colored TextWriter + New backgroundColor color for the console + Old previous backgroundColor color for the console + Old backgroundColor color for the console + + + + Restores console colors back to their original state + + Colored TextWriter + Original foregroundColor color for the console + Original backgroundColor color for the console + + + + Writes multiple characters to console in one operation (faster) + + Colored TextWriter + Output Text + Start Index + End Index + + + + Writes single character to console + + Colored TextWriter + Output Text + + + + Writes whole string and completes with newline + + Colored TextWriter + Output Text + + + + Default row highlight rules for the console printer + + + + + Check if cleanup should be performed on initialize new file + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Create a wildcard file-mask that allows one to find all files belonging to the same archive. + + Base archive file pattern + Wildcard file-mask + + + + Search directory for all existing files that are part of the same archive. + + Base archive file pattern + + + + + Generate the next archive filename for the archive. + + Base archive file pattern + File date of archive + Existing files in the same archive + + + + + Return all files that should be removed from the provided archive. + + Base archive file pattern + Existing files in the same archive + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + + + + may be configured to compress archived files in a custom way + by setting before logging your first event. + + + + + Create archiveFileName by compressing fileName. + + Absolute path to the log file to compress. + Absolute path to the compressed archive file to create. + + + + Interface for serialization of values, maybe even objects to JSON format. + Useful for wrappers for existing serializers. + + + + + Returns a serialization of an object + into JSON format. + + The object to serialize to JSON. + Serialized value (null = Serialize failed). + + + + Options for JSON serialisation + + + + + Add quotes around object keys? + + + + + Format provider for value + + + + + Format string for value + + + + + Should non-ascii characters be encoded + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + Serialize enum as string value + + + + + Should dictionary keys be sanitized. All characters must either be letters, numbers or underscore character (_). + + Any other characters will be converted to underscore character (_) + + + + + How far down the rabbit hole should the Json Serializer go with object-reflection before stopping + + + + Initializes a new instance of the class. + + + + Line ending mode. + + + + + Insert platform-dependent end-of-line sequence after each line. + + + + + Insert CR LF sequence (ASCII 13, ASCII 10) after each line. + + + + + Insert CR character (ASCII 13) after each line. + + + + + Insert LF character (ASCII 10) after each line. + + + + + Insert null terminator (ASCII 0) after each line. + + + + + Do not insert any line ending. + + + + + Gets the name of the LineEndingMode instance. + + + + + Gets the new line characters (value) of the LineEndingMode instance. + + + + + Initializes a new instance of . + + The mode name. + The new line characters to be used. + + + + Returns the that corresponds to the supplied . + + + The textual representation of the line ending mode, such as CRLF, LF, Default etc. + Name is not case sensitive. + + The value, that corresponds to the . + There is no line ending mode with the specified name. + + + + Compares two objects and returns a + value indicating whether the first one is equal to the second one. + + The first level. + The second level. + The value of mode1.NewLineCharacters == mode2.NewLineCharacters. + + + + Compares two objects and returns a + value indicating whether the first one is not equal to the second one. + + The first mode + The second mode + The value of mode1.NewLineCharacters != mode2.NewLineCharacters. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms + and data structures like a hash table. + + + + + Determines whether the specified is + equal to this instance. + + The to compare with + this instance. + + Value of true if the specified + is equal to this instance; otherwise, false. + + + The parameter is null. + + + + Indicates whether the current object is equal to another object of the same type. + true if the current object is equal to the parameter; otherwise, false. + An object to compare with this object. + + + + Provides a type converter to convert objects to and from other representations. + + + + + Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. + + + true if this converter can perform the conversion; otherwise, false. + + An that provides a format context. A that represents the type you want to convert from. + + + + Converts the given object to the type of this converter, using the specified context and culture information. + + + An that represents the converted value. + + An that provides a format context. The to use as the current culture. The to convert. The conversion cannot be performed. + + + + Sends log messages by email using SMTP protocol. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ Mail target works best when used with BufferingWrapper target + which lets you send multiple log messages in single mail +

+

+ To set up the buffered mail target in the configuration file, + use the following syntax: +

+ +

+ To set up the buffered mail target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets sender's email address (e.g. joe@domain.com). + + + + + + Gets or sets recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets a value indicating whether to add new lines between log entries. + + A value of true if new lines should be added; otherwise, false. + + + + + Gets or sets the mail subject. + + + + + + Gets or sets mail message body (repeated for each log message send in one mail). + + Alias for the Layout property. + + + + + Gets or sets encoding to be used for sending e-mail. + + + + + + Gets or sets a value indicating whether to send message as HTML instead of plain text. + + + + + + Gets or sets SMTP Server to be used for sending. + + + + + + Gets or sets SMTP Authentication mode. + + + + + + Gets or sets the username used to connect to SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + + Gets or sets the password used to authenticate against SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + + Gets or sets a value indicating whether SSL (secure sockets layer) should be used when communicating with SMTP server. + + . + + + + Gets or sets the port number that SMTP Server is listening on. + + + + + + Gets or sets a value indicating whether the default Settings from System.Net.MailSettings should be used. + + + + + + Specifies how outgoing email messages will be handled. + + + + + + Gets or sets the folder where applications save mail messages to be processed by the local SMTP server. + + + + + + Gets or sets the priority used for sending mails. + + + + + + Gets or sets a value indicating whether NewLine characters in the body should be replaced with
tags. +
+ Only happens when is set to true. + +
+ + + Gets or sets a value indicating the SMTP client timeout. + + Warning: zero is not infinite waiting + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Renders an array logging events. + + Array of logging events. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Create mail and send with SMTP + + event printed in the body of the event + + + + Create buffer for body + + all events + first event for header + last event for footer + + + + + Set properties of + + last event for username/password + client to set properties on + Configure not at , as the properties could have layout renderers. + + + + Handle if it is a virtual directory. + + + + + + + Create key for grouping. Needed for multiple events in one mail message + + event for rendering layouts + string to group on + + + + Append rendered to + + append to this + event for rendering + append if not null + + + + Create the mail message with the addresses, properties and body. + + + + + Render and add the addresses to + + Addresses appended to this list + layout with addresses, ; separated + event for rendering the + added a address? + + + + Writes log messages to an ArrayList in memory for programmatic retrieval. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the list of logs gathered in the . + + + + + Gets or sets the max number of items to have in memory + + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + A parameter to MethodCall. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout to use for parameter value. + + + + Initializes a new instance of the class. + + Name of the parameter. + The layout. + + + + Initializes a new instance of the class. + + The name of the parameter. + The layout. + The type of the parameter. + + + + Gets or sets the name of the parameter. + + + + + + Gets or sets the type of the parameter. Obsolete alias for + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets the class name. + + + + + + Gets or sets the method name. The method must be public and static. + + Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx + e.g. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Initializes a new instance of the class. + + Name of the target. + Method to call on logevent. + + + + Initializes the target. + + + + + Calls the specified Method. + + Method parameters. + The logging event. + + + + Calls the specified Method. + + Method parameters. + + + + The base class for all targets which call methods (local or remote). + Manages parameters and type coercion. + + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + + + + Prepares an array of parameters to be passed based on the logging event and calls DoInvoke(). + + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Sends log messages over the network. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ To print the results, use any application that's able to receive messages over + TCP or UDP. NetCat is + a simple but very powerful command-line tool that can be used for that. This image + demonstrates the NetCat tool receiving log messages from Network target. +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will be very slow. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+

+ There are two specialized versions of the Network target: Chainsaw + and NLogViewer which write to instances of Chainsaw log4j viewer + or NLogViewer application respectively. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6) (not supported on Windows Phone 7.0)
  • +
  • tcp4://host:port - force TCP/IPv4 (not supported on Windows Phone 7.0)
  • +
  • tcp6://host:port - force TCP/IPv6 (not supported on Windows Phone 7.0)
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6, not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp4://host:port - force UDP/IPv4 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp6://host:port - force UDP/IPv6 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • http://host:port/pageName - HTTP using POST verb
  • +
  • https://host:port/pageName - HTTPS using POST verb
  • +
+ For SOAP-based webservice support over HTTP use WebService target. +
+ +
+ + + Gets or sets a value indicating whether to keep connection open whenever possible. + + + + + + Gets or sets a value indicating whether to append newline at the end of log message. + + + + + + Gets or sets the end of line value if a newline is appended at the end of log message . + + + + + + Gets or sets the maximum message size in bytes. + + + + + + Gets or sets the size of the connection cache (number of connections which are kept alive). + + + + + + Gets or sets the maximum current connections. 0 = no maximum. + + + + + + Gets or sets the action that should be taken if the will be more connections than . + + + + + + Gets or sets the maximum queue size. + + + + + + Gets or sets the action that should be taken if the message is larger than + maxMessageSize. + + + + + + Gets or sets the encoding to be used. + + + + + + Get or set the SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Sends the + rendered logging event over the network optionally concatenating it with a newline character. + + The logging event. + + + + Try to remove. + + + + + removed something? + + + + Gets the bytes to be written. + + Log event. + Byte array. + + + + The action to be taken when there are more connections then the max. + + + + + Just allow it. + + + + + Discard the connection item. + + + + + Block until there's more room in the queue. + + + + + Action that should be taken if the message overflows. + + + + + Report an error. + + + + + Split the message into smaller pieces. + + + + + Discard the entire message. + + + + + Represents a parameter to a NLogViewer target. + + + + + Initializes a new instance of the class. + + + + + Gets or sets viewer parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + Sends log messages to the remote instance of NLog Viewer. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include stack contents. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDLC item separator. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets the layout renderer which produces Log4j-compatible XML events. + + + + + Gets or sets the instance of that is used to format log messages. + + + + + + Discards log messages. Used mainly for debugging and benchmarking. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets a value indicating whether to perform layout calculation. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Does nothing. Optionally it calculates the layout text but + discards the results. + + The logging event. + + + + Outputs log messages through the OutputDebugString() Win32 API. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Outputs the rendered logging event through the OutputDebugString() Win32 API. + + The logging event. + + + + SMTP authentication modes. + + + + + No authentication. + + + + + Basic - username and password. + + + + + NTLM Authentication. + + + + + Represents logging target. + + + + Are all layouts in this target thread-agnostic, if so we don't precalculate the layouts + + + + The Max StackTraceUsage of all the in this Target + + + + + Gets or sets the name of the target. + + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers + Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + Gets the object which can be used to synchronize asynchronous operations that must rely on the . + + + + + Gets the logging configuration this target is part of. + + + + + Gets a value indicating whether the target has been initialized. + + + + + Can be used if has been enabled. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Closes the target. + + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Calls the on each volatile layout + used by this target. + This method won't prerender if all layouts in this target are thread-agnostic. + + + The log event. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Writes the log to the target. + + Log event to write. + + + + Writes the array of log events. + + The log events. + + + + Writes the array of log events. + + The log events. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Closes the target and releases any unmanaged resources. + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Writes async log event to the log target. + + Async Log event to be written out. + + + + Writes a log event to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Log event to be written out. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + NOTE! Obsolete, instead override WriteAsyncThreadSafe(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target, in a thread safe manner. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Writes an array of logging events to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Merges (copies) the event context properties from any event info object stored in + parameters of the given event info object. + + The event info object to perform the merge to. + + + + Renders the event info in layout. + + The layout. + The event info. + String representing log event. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Should the exception be rethrown? + + + Upgrade to private protected when using C# 7.2 + + + + Marks class as a logging target and assigns a name to it. + + This attribute is not required when registering the target in the API. + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets a value indicating whether to the target is a wrapper target (used to generate the target summary documentation page). + + + + + Gets or sets a value indicating whether to the target is a compound target (used to generate the target summary documentation page). + + + + + Attribute details for + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Gets or sets when an empty value should cause the property to be included + + + + + Gets or sets the type of the property. + + + + + Represents target that supports context capture using MDLC, MDC, NDLC and NDC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets or sets a value indicating whether to include contents of the dictionary + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the + + + + + + Gets the array of custom attributes to be passed into the logevent context + + + + + + Constructor + + + + + + + + Check if logevent has properties (or context properties) + + + True if properties should be included + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Dictionary with any context properties for the logEvent (Null if none found) + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Optional prefilled dictionary + Dictionary with any context properties for the logEvent (Null if none found) + + + + Creates combined dictionary of all configured properties for logEvent + + + Dictionary with all collected properties for logEvent + + + + Creates combined dictionary of all configured properties for logEvent + + + Optional prefilled dictionary + Dictionary with all collected properties for logEvent + + + + Generates a new unique name, when duplicate names are detected + + LogEvent that triggered the duplicate name + Duplicate item name + Item Value + Dictionary of context values + New (unique) value (or null to skip value). If the same value is used then the item will be overwritten + + + + Returns the captured snapshot of for the + + + Dictionary with MDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with MDLC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDLC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with GDC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDC key + MDC value + Snapshot of MDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDLC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDLC key + MDLC value + Snapshot of MDLC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDC value + Snapshot of NDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDLC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDLC value + Snapshot of NDLC value + Include object value in snapshot + + + + Take snapshot of a single object value + + Log event + Key Name (null when NDC / NDLC) + Object Value + Snapshot of value + Include object value in snapshot + + + Internal Layout that allows capture of MDC context + + + Internal Layout that allows capture of NDC context + + + Internal Layout that allows capture of MDLC context + + + Internal Layout that allows capture of NDLC context + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the layout used to format log messages. + + + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the text to be rendered. + + + + + + Gets or sets the footer. + + + + + + Gets or sets the header. + + + + + + Gets or sets the layout with header and footer. + + The layout with header and footer. + + + + Sends log messages through System.Diagnostics.Trace. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Always use independent of + + + + + + Forward to (Instead of ) + + + Trace.Fail can have special side-effects, and give fatal exceptions, message dialogs or Environment.FailFast + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Writes the specified logging event to the facility. + + Redirects the log message depending on and . + When is false: + - writes to + - writes to + - writes to + - writes to + - writes to + - writes to + + The logging event. + + + + Web service protocol. + + + + + Use SOAP 1.1 Protocol. + + + + + Use SOAP 1.2 Protocol. + + + + + Use HTTP POST Protocol. + + + + + Use HTTP GET Protocol. + + + + + Do an HTTP POST of a JSON document. + + + + + Do an HTTP POST of an XML document. + + + + + Web Service Proxy Configuration Type + + + + + Default proxy configuration from app.config (System.Net.WebRequest.DefaultWebProxy) + + + Example of how to configure default proxy using app.config + + <system.net> + <defaultProxy enabled = "true" useDefaultCredentials = "true" > + <proxy usesystemdefault = "True" /> + </defaultProxy> + </system.net> + + + + + + Automatic use of proxy with authentication (cached) + + + + + Disables use of proxy (fast) + + + + + Custom proxy address (cached) + + + + + Calls the specified web service on each log message. + + Documentation on NLog Wiki + + The web service must implement a method that accepts a number of string parameters. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

The example web service that works with this example is shown below

+ +
+
+ + + dictionary that maps a concrete implementation + to a specific -value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target + + + + Gets or sets the web service URL. + + + + + + Gets or sets the Web service method name. Only used with Soap. + + + + + + Gets or sets the Web service namespace. Only used with Soap. + + + + + + Gets or sets the protocol to be used when calling web service. + + + + + + Gets or sets the proxy configuration when calling web service + + + + + + Gets or sets the custom proxy address, include port separated by a colon + + + + + + Should we include the BOM (Byte-order-mark) for UTF? Influences the property. + + This will only work for UTF-8. + + + + + + Gets or sets the encoding. + + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Gets or sets the name of the root XML element, + if POST of XML document chosen. + If so, this property must not be null. + (see and ). + + + + + + Gets or sets the (optional) root namespace of the XML document, + if POST of XML document chosen. + (see and ). + + + + + + Gets the array of parameters to be passed. + + + + + + Indicates whether to pre-authenticate the HttpWebRequest (Requires 'Authorization' in parameters) + + + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Invokes the web service method. + + Parameters to be passed. + The logging event. + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Builds the URL to use when calling the web service for a message, depending on the WebServiceProtocol. + + + + + + + Write from input to output. Fix the UTF-8 bom + + + + + + + + + base class for POST formatters, that + implement former PrepareRequest() method, + that creates the content for + the requested kind of HTTP request + + + + + Win32 file attributes. + + + For more information see https://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/createfile.asp. + + + + + Read-only file. + + + + + Hidden file. + + + + + System file. + + + + + File should be archived. + + + + + Device file. + + + + + Normal file. + + + + + File is temporary (should be kept in cache and not + written to disk if possible). + + + + + Sparse file. + + + + + Reparse point. + + + + + Compress file contents. + + + + + File should not be indexed by the content indexing service. + + + + + Encrypted file. + + + + + The system writes through any intermediate cache and goes directly to disk. + + + + + The system opens a file with no system caching. + + + + + Delete file after it is closed. + + + + + A file is accessed according to POSIX rules. + + + + + Asynchronous request queue. + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Gets the number of requests currently in the queue. + + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + Queue was empty before enqueue + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued (-1 means everything). + The array of log events. + + + + Dequeues into a preallocated array, instead of allocating a new one + + Maximum number of items to be dequeued + Preallocated list + + + + Clears the queue. + + + + + Gets or sets the request limit. + + + + + Gets or sets the action to be taken when there's no more room in + the queue and another request is enqueued. + + + + + Notifies about log event that was dropped when set to + + + + + Notifies when queue size is growing over + + + + + Raise event when queued element was dropped because of queue overflow + + Dropped queue item + + + + Raise event when RequestCount overflow + + current requests count + + + + Provides asynchronous, buffered execution of target writes. + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queueing + messages and processing them in a separate thread. You should wrap targets + that spend a non-trivial amount of time in their Write() method with asynchronous + target to speed up logging. +

+

+ Because asynchronous logging is quite a common scenario, NLog supports a + shorthand notation for wrapping all targets with AsyncWrapper. Just add async="true" to + the <targets/> element in the configuration file. +

+ + + ... your targets go here ... + + ]]> +
+ +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of requests in the queue. + The action to be taken when the queue overflows. + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Gets or sets the time in milliseconds to sleep between batches. (1 or less means trigger on new activity) + + + + + + Raise event when Target cannot store LogEvent. + Event arg contains lost LogEvents + + + + + Raises when event queue grow. + Queue can grow when was set to + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the limit of full s to write before yielding into + Performance is better when writing many small batches, than writing a single large batch + + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + + Gets the queue of lazy writer thread requests. + + + + + Schedules a flush of pending events in the queue (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target by starting the lazy writer timer. + + + + + Shuts down the lazy writer timer. + + + + + Starts the lazy writer thread which periodically writes + queued log messages. + + + + + Attempts to start an instant timer-worker-thread which can write + queued log messages. + + Returns true when scheduled a timer-worker-thread + + + + Stops the lazy writer thread. + + + + + Adds the log event to asynchronous queue to be processed by + the lazy writer thread. + + The log event. + + The is called + to ensure that the log event can be processed in another thread. + + + + + Write to queue without locking + + + + + + The action to be taken when the queue overflows. + + + + + Grow the queue. + + + + + Discard the overflowing item. + + + + + Block until there's more room in the queue. + + + + + Causes a flush on a wrapped target if LogEvent satisfies the . + If condition isn't set, flushes on each write. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Gets or sets the condition expression. Log events who meet this condition will cause + a flush on the wrapped target. + + + + + + Delay the flush until the LogEvent has been confirmed as written + + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + The wrapped target. + Name of the target + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes the target. + + + + + Forwards the call to the .Write() + and calls on it if LogEvent satisfies + the flush condition or condition is null. + + Logging event to be written out. + + + + Schedules a flush operation, that triggers when all pending flush operations are completed (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + The action to take when the buffer overflows. + + + + Gets or sets the number of log events to be buffered. + + + + + + Gets or sets the timeout (in milliseconds) after which the contents of buffer will be flushed + if there's no write in the specified period of time. Use -1 to disable timed flushes. + + + + + + Gets or sets a value indicating whether to use sliding timeout. + + + This value determines how the inactivity period is determined. If sliding timeout is enabled, + the inactivity timer is reset after each write, if it is disabled - inactivity timer will + count from the first event written to the buffer. + + + + + + Gets or sets the action to take if the buffer overflows. + + + Setting to will replace the + oldest event with new events without sending events down to the wrapped target, and + setting to will flush the + entire buffer to the wrapped target. + + + + + + Flushes pending events in the buffer (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target. + + + + + Closes the target by flushing pending events in the buffer (if any). + + + + + Adds the specified log event to the buffer and flushes + the buffer in case the buffer gets full. + + The log event. + + + + The action to be taken when the buffer overflows. + + + + + Flush the content of the buffer. + + + + + Discard the oldest item. + + + + + A base class for targets which wrap other (multiple) targets + and provide various forms of target routing. + + + + + Initializes a new instance of the class. + + The targets. + + + + Gets the collection of targets managed by this compound target. + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Writes logging event to the log target. + + Logging event to be written out. + + + + Flush any pending log messages for all wrapped targets. + + The asynchronous continuation. + + + + Concurrent Asynchronous request queue based on + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Gets the number of requests currently in the queue. + + + Only for debugging purposes + + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + Queue was empty before enqueue + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued (-1 means everything). + The array of log events. + + + + Dequeues into a preallocated array, instead of allocating a new one + + Maximum number of items to be dequeued + Preallocated list + + + + Clears the queue. + + + + + Provides fallback-on-error. + + Documentation on NLog Wiki + +

This example causes the messages to be written to server1, + and if it fails, messages go to server2.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Gets or sets a value indicating whether to return to the first target after any successful write. + + + + + + + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + The method remembers the last-known-successful target + and starts the iteration from it. + If is set, the method + resets the target to the first target + stored in . + + + + + Filtering rule for . + + + + + Initializes a new instance of the FilteringRule class. + + + + + Initializes a new instance of the FilteringRule class. + + Condition to be tested against all events. + Filter to apply to all log events when the first condition matches any of them. + + + + Gets or sets the condition to be tested. + + + + + + Gets or sets the resulting filter to be applied when the condition matches. + + + + + + Filters log entries based on a condition. + + Documentation on NLog Wiki + +

This example causes the messages not contains the string '1' to be ignored.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The condition. + + + + Initializes a new instance of the class. + + The wrapped target. + The condition. + + + + Gets or sets the condition expression. Log events who meet this condition will be forwarded + to the wrapped target. + + + + + + Gets or sets the filter. Log events who evaluates to will be discarded + + + + + + + + + Checks the condition against the passed log event. + If the condition is met, the log event is forwarded to + the wrapped target. + + Log event. + + + + + + + Limits the number of messages written per timespan to the wrapped target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of messages written per interval. + Interval in which the maximum number of messages can be written. + + + + Gets or sets the maximum allowed number of messages written per . + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets or sets the interval in which messages will be written up to the number of messages. + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets the DateTime when the current will be reset. + + + + + + Gets the number of written in the current . + + + + + + Initializes the target and resets the current Interval and . + + + + + Writes log event to the wrapped target if the current is lower than . + If the is already reached, no log event will be written to the wrapped target. + resets when the current is expired. + + Log event to be written out. + + + + Arguments for events. + + + + + + + + Instance of that was dropped by + + + + + Raises by when + queue is full + and set to + By default queue doubles it size. + + + + + Contains items count and new queue size. + + Required queue size + Current queue size + + + + New queue size + + + + + Current requests count + + + + + Filters buffered log entries based on a set of conditions that are evaluated on a group of events. + + Documentation on NLog Wiki + + PostFilteringWrapper must be used with some type of buffering target or wrapper, such as + AsyncTargetWrapper, BufferingWrapper or ASPNetBufferingWrapper. + + +

+ This example works like this. If there are no Warn,Error or Fatal messages in the buffer + only Info messages are written to the file, but if there are any warnings or errors, + the output includes detailed trace (levels >= Debug). You can plug in a different type + of buffering wrapper (such as ASPNetBufferingWrapper) to achieve different + functionality. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Gets or sets the default filter to be applied when no specific rule matches. + + + + + + Gets the collection of filtering rules. The rules are processed top-down + and the first rule that matches determines the filtering condition to + be applied to log events. + + + + + + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Evaluates all filtering rules to find the first one that matches. + The matching rule determines the filtering condition to be applied + to all items in a buffer. If no condition matches, default filter + is applied to the array of log events. + + Array of log events to be post-filtered. + + + + Evaluate all the rules to get the filtering condition + + + + + + + Sends log messages to a randomly selected target. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt + chosen randomly on a per-message basis. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the log event to one of the sub-targets. + The sub-target is randomly chosen. + + The log event. + + + + Repeats each log event the specified number of times. + + Documentation on NLog Wiki + +

This example causes each log message to be repeated 3 times.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The repeat count. + + + + Initializes a new instance of the class. + + The wrapped target. + The repeat count. + + + + Gets or sets the number of times to repeat each log message. + + + + + + Forwards the log message to the by calling the method times. + + The log event. + + + + Retries in case of write error. + + Documentation on NLog Wiki + +

This example causes each write attempt to be repeated 3 times, + sleeping 1 second between attempts if first one fails.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Initializes a new instance of the class. + + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Gets or sets the number of retries that should be attempted on the wrapped target in case of a failure. + + + + + + Gets or sets the time to wait between retries in milliseconds. + + + + + + Special SyncObject to allow closing down Target while busy retrying + + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Writes the specified log event to the wrapped target in a thread-safe manner. + + The log event. + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Distributes log events to targets in a round-robin fashion. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt. + Each odd message is written to file2.txt, each even message goes to file1.txt. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Ensures forwarding happens without holding lock + + + + + + Forwards the write to one of the targets from + the collection. + + The log event. + + The writes are routed in a round-robin fashion. + The first log event goes to the first target, the second + one goes to the second target and so on looping to the + first target when there are no more targets available. + In general request N goes to Targets[N % Targets.Count]. + + + + + Writes log events to all targets. + + Documentation on NLog Wiki + +

This example causes the messages to be written to both file1.txt or file2.txt +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the specified log event to all sub-targets. + + The log event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Base class for targets wrap other (single) targets. + + + + + Gets or sets the target that is wrapped by this target. + + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Builtin IFileCompressor implementation utilizing the .Net4.5 specific + and is used as the default value for on .Net4.5. + So log files created via can be zipped when archived + w/o 3rd party zip library when run on .Net4.5 or higher. + + + + + Implements using the .Net4.5 specific + + + + + Current local time retrieved directly from DateTime.Now. + + + + + Gets current local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Current UTC time retrieved directly from DateTime.UtcNow. + + + + + Gets current UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Fast time source that updates current time only once per tick (15.6 milliseconds). + + + + + Gets raw uncached time from derived time source. + + + + + Gets current time cached for one system tick (15.6 milliseconds). + + + + + Fast local time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Fast UTC time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Defines source of current time. + + + + + Gets current time. + + + + + Gets or sets current global time source used in all log events. + + + Default time source is . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to the same form + as time values originated from this source. + + + + There are situations when NLog have to compare the time originated from TimeSource + to the time originated externally in the system. + To be able to provide meaningful result of such comparisons the system time must be expressed in + the same form as TimeSource time. + + + Examples: + - If the TimeSource provides time values of local time, it should also convert the provided + to the local time. + - If the TimeSource shifts or skews its time values, it should also apply + the same transform to the given . + + + + + + Marks class as a time source and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the time source. + + + diff --git a/packages/NLog.4.7.2/lib/sl4/NLog.dll b/packages/NLog.4.7.2/lib/sl4/NLog.dll new file mode 100644 index 0000000000000000000000000000000000000000..ed41de8e108c27cba4fe48422cfec77f21969f57 GIT binary patch literal 672768 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°0K8b4;CB zLslN9&=J5)S*M>`b$xaA{HuGzwX%6SL39(cnMNp~Q(oZO9r7ocE5HAzuZ&I2!IcLp zr05eAmo7o>lpAXtzDL8#2%om<2j~%Fauu%KH`8ZpFm|g&e|1iw=W5=3?+JMkDIfh1 zRJ&fkb7jWD$$Z38Wl`yWFG=4Vw+5N(Pw1KBB(8^@ASg$tA}G_S%2`u_a@nAzKDXO8 zq;F!cvK()&`R3IBqDhoCpF}q3?riFvV}=feGo=|Sv~2|slW4CdxiL&&<`N5;8Eer! z6`gPFLv3~LtWb|xGYQrmnW-yV%yTw~GEocMB|wvdC`7;imn0S;P` z5As*P$6gfSSuqD%f2KWPFfm!-?gZgw@Z&thYLp*--y>k9Y&ZNPc6p|ZnA47V-&{$S$g9mGE zuqRxh(JXW9WBAs3{2m_9h3Eedcdp!<*f|uv;qBd>E6U?5NVBeXqa{Xy=oT1cjcY#+ zHsC5PTm~!SevV%HR{T1CaT{N^SKNW!F4);H=9U&M?!^DNatpjmNMl@SbcSH1=wFPn z>iO^&8r?PTAb!!0?&PBfie6dhxp7AC<13N@TPZpKv-@+e!rEhYuEbFuOce*aZ&Uc} zJeEZ3K3vSoA-S>8ZCl-Urw+bfu01^C_3MShG z8z8!yu(ww4V1TNkZlzWuc1$ z;p+QLf?y6fSgmv2#&*#ZTB+{7s#$kyZPXhyr`}0mNYX@Fw!8KPls7 zWQB_`9wG-}TiJ>p##ukEdN?mf;2POtoQJyQ8XoU;j=78Ga&3=FDTqF)c$#H~7visS zovu*JJX~dx3(8GtfAlGULG)>U>+jc`z1w?`^k<=y^yol$yBlw=-WP>omo2 zX48!N+$_i?9esw#)#K+UdmVRE_gT(yv9u;wyw=tP9k%4Nivi|kNky8ka6zgKRNQhQ zZNBPVKH8HOB#1r>!qV5Uc@#vS!#RdxN-t@l?aw#yX)B^s?Q5LC=Jq@te&kFBlfLNl z#7M%9BlXRNO^qkzR~nxr1+0Eq#|p1NG<82<9dQ=DUXi^Ie=OG*to#O3)Y1Oh8+&Xq zdbEFL7e`7l{n5z4AF31{r`_wa1&&2URttN=t04sVC)2=JIdE+n_(}(6K`SOQie1`z z0lVF{(41f;jbhj6j9OnW^ds!!i!-|dmP2(uu*mBqJkwVjcJs$zd@y*N6@5o*Ll=i) zsp#kVj#Muzh@wLt6+=@$z=g6>YAKXD` z6q6n&`D!+H1YCqSDVoNSId3m`$JB*!vY8EkolLiXiJJS(Z^+4cYHqCx2Z%uA`}nY^ zMgMg_t|<#su1%|WeT!Ycyi^T|CH7uR?7vN`dwN>A|C|;*>QMMTCDTduR(bD#v0No7 zaV?B;LvO6*8)Nx)`RR=}FB0_F$%H5tTlr)2%G>on$kL@6G#^E}m{oq056ew450gV3 z^M{O4r`wO-+3Sn@3!U5AYJVr^iTDz*yTtOY?uyNzd53)T|G!T9e{*c`TPoV}KAt9TxRR$QX=ite;8?&6pEwweRLinMspWy*7=|HqIOLCP7 zbNkVRJaGU@k*{FxVa?C5yJK@EuMFFo9f#!T0d@L~1B=@G`#-Y6BE}#$*t#2{3*iSS z9BzUWFT5=elVd^id|<_xHO{uuCFJaaXO`AW;R6I#d;R>7bNcSiX-6j?ew5J3H}(7O zhH8Vl8%t!a+tYXuTFHc;3!FYk-ezQvfOglpjNf?IBBZuz*3#CgV@($!>%H+QyK1qF zg<@BHxUg3ixhg;Xop_@6Cbur?d#B;Yl%0P35_q#?wzD1+J&X7!k+l3G2+GzY^0 z^dxVGh20?CZn&LeH{7ma{gmyw@I&mrBzK`sJR7%T2a%?=W2SdO_(@WZ{tw~SciE_D zIPPs?=ZvZiMQEuc;!U(?qu!Q#xO%4X$uXp1YmwN0`FxE);MkB^gCx0 zgT^HUcZVCOFp1hyqg3T{Ci=Y9d(UsF1Ia}{ga>s99Dpl^Tfo;OrY;JKeniL^cI&Pk zIKZ2Cl07ZLI49>F3opbN3>r6!89RcwUmS0ecqochLY|{g%DgNN<><$R$o_;qISZ~~ zlEu_nNf*M0!LWl0b8tuos-u7AyG;6;+Vd#A*e<4V4{j5;+wBe-4*@7y*8AdJBN+J- zeQz<}pR4u2$DyoO^yeE-D&}|iaTiSVxFf}Optv@t@qGe%+@aZ??(k#qQ{62dFO=C2 z#9kuDuF)q1-=3bXRAvme@+y<^n&sATn z&M|s)C%+4IS$CO9y~&;#j(7Q|-QI@U`LmG;_7toyajF!F)^>8G$F^C2<9{Kav(udn zJP#nV?EUvQw!c1w7G`QsknNpfL}SiD)Gd0Vm*HS@-(@wn$o^&4B0FB!FdZn8JStN; z-Vc9|jx`$4j+<{y;C1uC*O3fklF#Uq3qQw4J>G9n1e<%C1Hf++fH{tDTqa84BZ?J% zmS1=G!qX1q-VwXw+tdy28GT++9o8lS*8EPvjIC(cbT@6Fnpkvis$w;vrRlIs8^!3D z?~Rim?lWbbA^IAr7ALpuD>Uwe7rW9Za{@xJLi5YutdfEz?Q5~XF^sKSOiLix2^~zLwj65-LmT7NsR$Jt$SX%HcD_ZvR!G7PkIOhBXSVOQy`_aq-Lg10Yo;~@I=R)e?wb@J^H1<%=iGvG*tNH8<=0)z_YpID z<|~ak6`h{&64Yxj*W3ULt5npI2?Em`aUbNiT=H6fCd=8!=8omfnw|3@m5?PEyBMMm zcy2|1wd}KiTIeyX6}{0<5nlY5F>9gEXm3^Yc7ooXY7a_B=SoNWT6NxvRf_0Y&}s8> z2bWhI%?vHjH(jZibocw6N!-1No9A>HDHY7^xAYLu(Oi(enSxc91$^rm$nS$qo)T=vDC-t@aW!> zQ>NTO6c6jq%&+iUD*p9nuAqgBrB^WN@ivmvgq~7xE6nnyisJO%I6K$Vn_r=Kh4duh zt;T0UZ{qtgJ)Q-Q3EO3hb9;K$pE=llZ24FR9_+sH*3RvUPxq*Gu~!Y9ZNv8PybnC{ z+R$kKN;Ous-X3eT`U-Tj@vDNi6lH5WJA$u1ybrG9#+M z6&A2AYnB(w@D#2qv2Vy>@0G=N5qE@2eL>?{=}SjS>n_)uGB=P-Cvfz=0AfroQY7~F zN>hN6?%Y(k+v9T*vJ(i+N6A?x^@Nfl4KG?2hm7H4X@|*O9v5edvuGnT7BR*)1+m=b z!yHHzQN>_cT}HJM2mglPK7tEX zzi_Gz3tX`D@2{kFpwbGvJIRdnImP06ue4yOc)}<(2l$N(aHM~;c;zhK{LP|mnMK=r zvuJa(Xd}Iw#T%Z2SKKV#JcpOBY;ZYj>`3`XJCL(_++2(dy2!kFmWqJ)0l{eg9tB`1 z+9Nrji@vvCDno@At2~dE#zAZr>C;4t3$d{rsxUS{7Z)3 zZX3~?ozkO;?-QeZ`}J+4Bkq}a>3e4B(;W^uq}B#h)%rGb&;|WF0hj}Tmy0pXab9Cj zQuo6xL?)bXzk~eREn)HaZV~eF86!9>*Bkkvu$&u{lW?};l=(^KMy><1x_%Au4?;)7 z-=fImev7VfOE7c$=N(~NVNf9q^S_w?G5)JB(>~Mhh@nwO#~ozce#UKslMb3cHCC?D zcoq4~t-CaBK{%N1-V|Xe=*)*59>pqJI*a0)%#%p=oyGcq^w___NRy0NUhf!Q&dL zPRIF+a1c6LU# zoX&(Kf4d?${m%iQ`SZ(|SI(6R_pm}H2d0f`W6OkVKY2|TRfjW8(O=<9wgU^;;=90& zQ$Gq07X}SB|3=tor_iFmn?Eg`*q;_d>`&z#`%}Tj{#1goKb2POPbFi1#%=!~+2#xU z$PQ+fHl6>8rziTCe#UUhT%itw?39J@HM|MNcW7Kr zNMM612aBCHURfyt+Uz;za zM%8&v80Q64?hSSrJ3C-|yt^>6v_pn1h;Rcr4!0wmxHUdHyHE)0&Q%y$FmYgE!CF|{ zY0oviltJOz{+^N2_*UG)VI{_MmzaLV6vADIHdbjILJkV+o>IN-3|kxRO+mGm;CpIU zRM&!$-4~tWJ2GsxL9Lh{S-xm1f27|f*SHNLj$MaUuH;Ad5JGQ^ASIlN;LnePq^lOh zNE51iPf5s8DaNQ$=xJ28j)SE4F_qZ%1S!*==r0)AX3;*IAe(Tnnlp{;$Y4zO14+)r z-PocfQ^|}ekF#Rb4=1QGPPx+fC?Kbt!N}_Akyk77>^SnzH;(+9OyoT_nSs7IvKoNt z8A!tZxyKa2Xn*A6$mB3|d#fwn=Ic$`k#J;2^J%u?Za05y+YF^wST<@H1%d{_AFrHcXkZ8x`1Wx+mt>BWOzfp z#C9N`GM}3{z`H_|#aSG(TOcyj37eIAk{)w4g+$XFG z@PrErsF1@>iE+)Neol$vLPm>o7JZSL-PhRWrlbJ0EVKUfm``}^XH1nG7^l?$- z+K~SRNcN&fg`r3Dm*iG!i+wSdAa;1 zrfb~PS%~`hw)^?XH`#41wrAjMT#jP7ppcO_SF{PC&aG~uITXEwyi{~cF@|47W1+nT zu0k}E-~Q@C3TF`4j3#CP#nF75&Hv(PZ<~$w;)Xn1>BS}&6cn3p=J?7`xC~-Mph^|% zUuJ`m3q^0sZZNt%y$ikNpK<$(>i=XP^>XF)H^_xGY4=JByyo&l?H%~|F!$R;X5qdh z5xtb3d`mbH^_HdJmJoRj`GG*oRPr?MWs7SSD~8eQ85OLYO`}lLEyT@rCh#j#fom`3 zE%0!-`rv3wv5q~IbCuOsMstBx+)}k$kq+-AxBY%JOu&q4*c+iEGJnr3OlvnKUV+9E z5YJdoUwnJhIpO+*KQlY)J ziS89qH*}J+K7l2Z$I5D%n6Kx~^tUS}R zm%+rD(YE+y3zCnv!^M^K(e`}HvW96_sB|nYR#o>Hl*y~F`PXm3LnrVBA$=AxQw)!A zetj73lqxq)!(sk96-Q&GvKyOf_<1D!2X|n(?HBzw>XQ$Tf>wn){zWr-4^12kzKQcB zb^*&l$cU<1?+tPn9>i{LN%Ulkqw%8VR_?wf-gva7n_LhtA8WGFGbW(B)-T>?8}J6U z@_N|k?>Z}vs24FEVeMbD5@R-@Iqy{HGb9`An5nY~d=zTN>S_1QI#-uNzKz*9-AU+A zQyQx_B8u8GA+ZH*rDAy~_f7VXCCSgtI)(osvmnZ3T-BqK@e|{W8+1xU-y(K0ZkS};FgKHN!y)5_^Pe(q z$Yk7*|ND#!y_0drf6VI?{)g76@@Fz`-c(giiZgD|DG_~(*vYtIl5xY_OvVj|j2q5> z%D5quaYO#^GcNQ_#vT7LuT%IRTBDXOlX3H=8Gmh@af42Y=v%~2#toB<8|G#*Za8Gz zaQ;)q4VjD^@_(Okp?5Ow_>Xzb^1n}08-r_W^w=T2aK7?0t5bG$bScz*%%$)aerhOoxjO(+HZ?E8}s;xD^@S2_6cwnu4hu6^QYIv~LzQb$k zvDd!CYZk^{`_i9jEVu(-7A*$XD4`-}%Kh+duzfCx%eiac8SBOIzIB}*i->)scpeMW^ccFGzcP-bw zUT4~Sx=S~%dnWwSpC>7zs$4L@POpS0gkiO8q|=Gk@$AdB%D!b_^JVVjhylag zhB?o#7aG^GXUElirxTHr8}UhbL$(X^6zooNqzm^6sgyRP=59o4_{B&a9MonQn=~>l zxUF!c)32e)+G=JDe3n%oJCZ!!@0-V-z9wk7X#i#=QUS)TV^*j-<@C<*eG;yW8*62| zNWDJOE=#ZXhPM$S92@7leJCyx9kdt>K`l;KWsRzS=7e58WctKQSiU`~Jvr35P_}c% zE`7VLcPBR&(K~tD?&jQy4cjqFOFUo*xQS$9`nu#iKDo!5hMNb@@&>nav|j15L=~8+ z5q&A_=FCFnl`e-s2QyIF7wnkmVZ@R;&#sXAFXWrSE;mz9$ z7I@5q`q<^6cisx}fKjkzqL$0|P3}C|m#Ge35Z=Vwe-Vr%A1 zuTS)~yD(>=b4ym5e;liHg7C9WTJ~~}ZBO@2&PbDUFYq`SX#u{s?9C88)jzs-yTfD} zjn0(A)sOEY6nj$m#puqjI=al?7P}^}wQKx+N&H-};+2wspy279Bkj~Fy7BcPqn#ehrzfJ7VMrzJ`rMw&F=$HHY z1`C$E+BegW8w28m91`XNL7%&T1kyHa^7Le zEPvc1iaB_<^^~2Mi~76WDl7|WcGqZ%V+3pc-C-4Sb{&Q5?rWmH`NZo<;#wDH3e4-H zJi@Y)9V~yeSeqEgaJ{GyTjO%3NZi*jP+SNbwsAUuJ-zC;B?`j0=xPrIJ1G0}A5XUp z$M^9cXQ$Ndu#PYGJ3F`Iq5t?cX~;bP@wusIz<<1+cx*L>mDHV-2wyX;+uRqkV1?5* zeIKT^F0?lVZ)OSR=!E|$4&NsUH^+3k9sH+b{CyLAbByWO^iLIpXeq2ht_*Ojn60COZ!J1h;y zNxUY(Ge;+UejI*$5^j!8_<}h6ge2S?o$&4A@Dr18b9BPT;_#D_aC3CRcZ|bdn}nNV z<9yU(ypt0=b8L*aFvdG2!86Ckc#C7aQxiOMBzXUSeLMNyFHZloBz<#q!ViqYPfx3II&*qV9EzE&_u1o;t*jzfD z{G1dMIxmT54hX#|0hpr`;bcYVcu$Yxzd1oSM~C0D2#4RZW3=-VG;@&5ssvz;4&5k@ z&`QG1(Ft!VypxQ)B(pM(wK|Dq4w7jn0CQ|kEYso6Mu7g(h)_A$ zZ!YEA79>7nM8RtriJhQJ0BT=W-)ILr4BNZ}39Y?U0hFNdFuh7#ZhdDFc{+(aHLm~_ z1H$%|V6(k>g+96VdVN~v*^plkitR^6*K&cB=4yd=E%9G#GPxYoDRTh>!!>e9(9kl+geAef!jlMXR_ye)$|SaUhlY*-Iz3yg66KWCpeir1hsn5cnng>!k}+C zH*Q(nh<(U6?~K*`mV{+2PRV!*jbrQ%`%`WQ@>`N?%w;k^TJCLg!c^W89vcA{ZMNQ_ zDDA8G^;=i-8|@*oX>pzx)aHguO$65vx~RV~?-s18;!W4_=5aw?>t{vNz@;^o8PaCs8RUH$JJM@J&VR2sr zzdWzv_f(kB;nt$wP$h`iy){c<%W!x5R#GFwx9JnKZ|76_rr*+++fvA?T~k_P5-N-! z+E*O-EybEb@U@wV$9Q&{q&bq>LuM$C zN*;63{p>u~ws+sg5$H&|K-0PdRzj!Wm!V1AJG7nOx)WeN!Vt2kBjMWFb#bkZxtoFv zM=$dgCm!=#cM+k+L{;Ams&C|n!kKD24)$B`C)jU&fZu3!K2y?eE_fXIJk8pbyG4fM zaa^eDx8$+2UFvICa?TZQyw!RbFeaYor@zXTglqOgwDAEsi!$*mp26^2A0+k=1`4$7 zor-gozxqSK!*{S3%#&WN4-3gPAmh!4RX^?llByi08JR{jQBRZc(eSLlptdwwnfQ(W&3niJ_;%+}ZOC2KFEPb40*4)dFy-*;@ZODHz z={H8#DkR#Ls~22~8)Y+IJDBag?4(V%h0^7VSUWn6IuKx|)cOn*TMzRS3#zebsTO|> z{0YD&aKH5k&KUYhL8%$ljK8#VmQ-B)nQ(f>49WeG+HxvCXXiWVyxc@tYs`D!#_5MF zFC@u{*Qp5@n~GjPFeWIR#y!&rDOFo=h><=8QhZL;&aXAG6)rl(&GMyav}6(hhqA

Pj^t2R3XocC|^v9GTL7EXN)($tP1j3g3}7Z;o(y_Xs<)W zXT;yr^qmM~!xDsN8PIQiNs*4^+RpJHz^29gZ38ka{j#Ij`bzx$s=l1CY?}jw|49Jm z0PwX0V2%ktd=$>2KVqAsBh>N)(Vyfa=$i`qdmJQB5dA~G1You6vp$DFquo+$~O#{m)m z?ja1fvNc*SV7@3jCAW{J_QXfeJDBBacPQc3hB~kkFbTT0y@LhOx%jw{N#q&N{)|ql z#{N@2dKMRJK|cm=_Vi|3_}|m#_9BsFW9_{EB7r-d92mL8!WUPuOn^D53pP~}+>5jl zplxKHBS{>YKk?>h%203Z3asglUjehIvl+9?pG{)j=_){>VpYbzV zYzwXqvh|HbTg-7>(Y6&kICYp^?0#9?5AIa{u^-V%X>qBUZPLM{&@k8ze&8wDJ%A`<-_{J%i ztYpu4rt;7g0YhB&H9f%$XxCOs$gVBvNe{Jcd$NVt zwr%6#&Zg`dPzuuO=7EfsM&lZD5Sed3E>XL&TLaxX3*AD61r1+HI2~xT0pgAGq3lQh z!WkV3jeO(s4&Y!A6OsQNor|Uaf|OHXy0D~&qw9LYLu4r`UB% zWeV~mQFZmqfnx}#9g3AF{bp0u^9gwN7kD|(Yc}M6QhuImgk@^8wGr1-qU~=f$FgI* zk^H{S#$$>)WfUer#QP*g9$0B{CV}T#1Ie!?q7ly%aotKwgx1&QATGJsn=-(e(W?k{ zv1nSXPAc)|%q56_ty*--F&e!KnUIzeW3Xy{Q&cqN-lq6$P**^ zzC?s-*7BWZtq>h5r7N#U6;BARVfg~%nUD3qcuGn_GQ|4CJI8qYA-r*0v2l2~IOGa!Jk+%x^9j48OU|iU6mDgHVMMQ{FsEkc zCxG1;ee$Jbr0348V2xa7&XdhZO3tOkWxo)bmZ#a?PWyE7blh>?OS5^pKd3WGe?}ai zVI0cYTGA!CuVO)jdxHVQbDi<#u+;OXKvLb(>~y@jwctO`!lkU&QuZmL>R-WQtP>FwB0_ix$=29jmuK~UBwRYHbXLfl2F2R)#v71Cf(NnKspp5d`H2V-Zx$587i_kZ zArKxRCG}VTN(pFI8&80OM&Di87fKd2_f(r3sdkQq)Xl<4hevrnuRPh|yCF zShViT;r333r%mH8?lK113r=Lmumzsjs!@GE zORN_tm!0I}OtBPm?8qrGIu}>w3-0dx{+_eLE8r>IooI!g6)3h*yb9UWcW9gp#TX*~ z?5?tniDRB%kwkamhS=l8W@2!H|0B8Fr0is`@;cgx$lBQ*xe*A=jM0??1ksTw=#=}= zSN~ap)1nZIY}-4ua6d9Kqw#eZ?+yQHO8ytHdflYEG5Z5LIFbjR*l_fFrEQaSj22@L zH-|L`laPNT0CNCfpyDvh!I6pz)p*W0?-bPJNN(L#AANutME;W1)^JBK{GjoULn-`7 z_XLGiL1Gf~33^u=WX|w>ie^Pv2P+=8?d?cHa~xo8BECNpbI1^X$TcR2d~25Z-aMKxyn zlqGCpU7!poVA0}z0KIA3v?nQqZmKUKhR*~X-Cs7=W+8Q9l6r(Jq@y)-c2+-Cp z#ny)WayV@6O~RvV6%ui$7sWplXKDGzAm?Hk6$f5^v!JE+EKsT!xM05}pQ(=JWC18^ z$B*1hpe{4OG|1vOniD&qHR3iysNFArxvi|2*0?+=A=fX;l@LjDy65Ylp5eK?{L(ZN zrD+T);-||kMGyPP?GWuy=(@)uGHPbS6`l&*nrk^H=Vzp3e z?iuUn79h377Akyo2#;dt}SLat6lcA7KZY$>e1sjveYx0$e>gqmACJ)rSPgFKT$SP;~HB#Zb9 zA;CuJM3xewTZBIrWCwQ_hr3v~jg-Pt2VJHQHp>dc#KXKT`GT-t5*cq^ESC3Bcv51> ze2vzMCQ4UmlXva$5>guIQjl$f@7;}lzf$Y1tM`F`jRlw90L*XghrhL#e!j{9_bDqr zY0&Dg5M+_YrbqBw`w}<00XC)wMb`l2akZZ4S{yTaqU+@61rMDH@2T_BWM^3?j=MLs z;*oe_OR$~yy7g|{nXZ(#Pf$Ls9o2sKxz>&f7JZQEFP&`2er<7`MB=xmz~3)8cOA@Y zo@gYX(Pef2#b_|3d@;O~rnX~Fg6z7Z;9ce`mNYk+Qb4h1VeC0TGJCC9;FP|Z2nW&0 zc-smPoogs-M@MPDG8}4BWc1ey_b^So723>B48&y%41}?VF})YXbRb$W><%7dIRp)Gi1%C303sY z7v1n~GFPmQQ8~Ja*k_arEvzfZo>A`06`WA|C$|Nw2dw%N?jHB+$*WtIP3iX}^TLA1 zF7*J(Fh;cuXFC`>31#;*6E3-G+@n9I5;d;HGd(Z`aq?{jBuq~yS(mPqlv}UF=@5tP zF5PqK)#o*H!lSAvW9!7>RL|4l9w^^hm0$S^kr^%77_htsyER6`{X}m*Mcn2+{M;^# zwbHlB&1j*@5v{a@bM0f~%VF|C9IKFA`#AaGSzjHNa(U$pgSX1cRA@my z4N;hC^CRSI?W@F^`0>4M;HL#Y!Ah(hRWSw`+aROT!X7LTPg85O=5+loEj7>J%OxXc z%9~X9X zB%7gQCIWHPKOo|WTOEt#V@)9)u8|GDKwQeg=sCq@CT9s+tcaYpC2uBj62BjQQR<<| zsFen16b<0wgr65RuG}kao~KN*+y8e-o#va8)VQ!y%3?w&ZSY}&5OJxHG>An@1}3Vtt9Rm=}Jc$JX&t@s|3aBUKx1o6mxmgUoC-{ z{&qzHV-rk*TS^T3S{FYyN}F1)6CY-;%$kl~)|f7uQY0lOd}DOOoKG;+QLX%}ih{OM z-*vP!zRltu5tPu+#G(4G+n2VX6WSTPo~AO*wNK{*rIx(Wd{y#dIho+I!i) z>CbN|q6`KVF^INP%$Ukd+;tiiBRLCCP-=b}R-!i|XVcD1Px$ztz$rQ@aWC>9n=BZB0-XWSCXr; zNgfcC&Wctb8hwwIh|meOo#?y$(f^zewOotiGR4}k`v%cz_{MzaYp(*K(p?LY(;IiB z^6h}p1IuyFei;!@IDgm% zB`uoq<{G?fFA%KLTdtKiS+_Wlob{NUkifQ&SsvfnR+I(sSHF?u!qb)EZRiW+YjGN= z*uGGq<+hM)$xRMhvQj`&p{eKc8k2Cxvq!ne2UY_1jK1rCqLg61qo#QCZCU0z83F0i&$^kh4(Z*(W=(|m}odf7`9M*CdC z&MD`;j5upIj)U>?Msc<;+r)Xa)S-1Lv@}}K6!LayY9-uY+aRV(o1uNjrfF-YxhdM3 zGTyGhO2`$uRW+gTtno43c9wVAOXW9+Ftgr>dG1m-S*K#ivK~YS(;n2=CrgBsgevh$ zvzy;lS16|KujReJVOV;h)pucW&v1?m0`q>w z|FaC7pTuKLqERWe-w9fYc|866deLoN#qWl$_Vx1E3UK>fa&l0GPx}VBOYIx^EcrR) zI58qfO8`3{#yuBCVz1vS;g-nT;Ji?y%@ol(?TaY(I@>;_y@XezJx=>8_yis&&4!a$ z!s3!MEI~z%+K8mIaE~|??hLBAReK%bwC2j6wdR&l3ok`$6s@n^zhu5hWk_?#0d6~_ zHw1+fYn$NoS#m`VC8`Zw5F#P5x8%_de9_hgb#tQS5M4&g%IKY`P&P&U5=Z1(VlFy% zlSHyC?i}>g>l^2M%NNTz>osF9LO4?<5LTJ8?Wm9QxWcx}pZ5$lu;Dah`cTmFlNIeI zvh7r$wx~y|_)aF$Feejc7_MN-S3IRvJOr-5o1!ae2F9jmmQLH1P^XyZPR*=!+A9B~ zPNH+>rLMbu(2LT#;r5wScc$$#nZDRQQ%JqkKIkJuajFPg!^i_#W3zG<(695 z0C$|28YH|MfF=-aa{zcx0x$=Fn-YLIlKQVGSE(tS@K@^_-mm6}RmRk_&YGSi`06a~ z#~f};xa)W^d7fMIOlaF$nAT(7VzRgk1~zH?^?m|4$iweY_!1`TlgpcXku9!@YJUV^ zf1#&+58pydzv-na8~_quVnIsGRFu#f6-16o=F|+pp6|?v9EwuEzF|+$_#4Nld{0{HXvFkeE zfT^}>$NMb_!^Gs9B%IMmB5cByejKjEUHEu&f0A5#KY+B+mkkBiyL=27#s7dlx%Pwl zbhkgAMNEh@iF+8h+a&N?pTOOECS%HNh}>yd5UofeU!RREYBx^@+>r&OWBBkS$lARc8UyLCyFQaM z8K(kfbbT_PYRL8t-=T1Vqlj2P+a(3P&B7j+o3&C(ICnx8%JSTg{u5niAFWo z8~{F-0L%g4^9jHl0KSj_%mLtw3BVj~9Q+p2<`!+vDzv{uFiP=dK3fECMR35!r6sNQ zR}?p>?H5?@sMVBfRfC*&4x^V))XZ!;-P9umk&zPiS-e2M{c|@9xeYVb;d-u7b=tPQM|K z1BDN1RFs88@09jtA&XeM>LkV}DJdtNqr4bd>C7kRAnaVZzB*Taw#vMOB1bsZew73> ziX3u}R8y@CS!H4w=pb!1oD zye^j9+C&0HklSjlVz|*9;JCn;KQt76lH(qgq8Mz8!N-)^a3i>z@Lk#oRj*qs!$jdZChz9#}Ifq?#h8uH*d_2e;X*i$EmfbrJFB4Vs4= zJ1Hsx3Chkm?8Q?1nakeZNot&{P-^k35iYfhH_fQb+~Vi(h8stTz>|$8A3r=8#c8|= zXQR!JJvh;Li@XnTn8A53#q0L+-ywlqjhHMk1`iU$0*?W3^QF*fKOx~AY{%F9mOMdp zy%Y^4xCFyRu0)sl;!RpTInIIXq?>{5HiNW`lTxLupM=h|Bi!0^z7W0S9JSsid>3id z&c$&94!aG#SUn;it%N0v-Ts&O1-oe1rGu$dv6d_KPwwZpzTFACQA7l;`>pSE!0%4L zrFeDju53S9uCP-@zcy3-aLId3)Aehb2Wihue~tl{TiG>(YVfNlR)2rd2cPWmR3v{;=aw@i|p zn@Q3(I@`Z9TKaWtpX;|ANI7w3UOy3T9B^7z<|cF{!9-k+F=gMyna0a-66cC+oK$YL zgX63_Va-dh=})GmpjnS-JH)LLL_MsOvZ8{kpXM`#wj36zPSMLzECx-aI8iREcL*Fz8{^=M9 zvkY|mgWWDqTgMDcp6ZV{%xvmkceNr(-INq1=_QG3*U*e!&d2sP_WB@=zD|2NiX*)V z$yu?CxNDy3^$}Gs4GZm^DlLuZuSQ+czg0B+=cIB~et8VsiOsA_UM!40U7DYndz#nA zj|V~bvb4Usxu+V7X>(7jh-QO(53FkPqk7%e5AI*et+KXJ`h#F(nxfwW&o)JW#BWRE zHU@r>^e?ycg-2WWCq8}o{mHgEMDGCpvFUe9Lq@9LYW@$X`RzZ8c1ypuELDF!Iw_x% z`-Sw7?LP>m+*VXubuk(a=}-zMvUk-NC-DTz^x0N?9Wq-^C1bOC(a%WMyzr~Bxz_M# zWM~VOsFSU7KTWpAk;(Rym4O*Kv0?ZD1^Tw%N_E~@o+KD65^2kGBC`PW(!Z8HN=)o|g(t?-X1 ziy6JUeNO?su7Z2mZ>Y`+Ysqa2XbIG*MFDl(>`eLL_ zUp@;rs*5VCwtjHGAh)E4`(JWPXt;SHC)buFOsBp=OvVylczp( z`!@g7i#ecDFD!RGt)FUmvbS2GEr=maQ$Te`f3^JKK7??3LT~j*krl>}gj1x}(-{qi zxG#uxY?PHX7k9%P<}34fe(eGz8$E!S+cQOlKFX4K9R~9FqX!AG?lihYh}Q288sZBM zk#0|ZS0}C8Gj6twxtToBA90v5o^`r(dy*%$!f3gqEaVa=VnUR>t1sV@%%|6v#Ry9O zNqspjk(%XrLrK|lHk0brOcs`mYLey5YEmP~u;WgFmYbxSDKD97X5LP_d{tVeuAWH; zr`0n{*y`DnVFB$0HDu<@)C9s&Tm$S%} zxYmMR!&iS?HO75SM2IbHxz7oYnTysj#50d_=#bKTUG4xW4n0(%8}fGov1Ly8UeaB7 zQwB*#b1UtWs;*g@^I$4Xb1OWoOmKuqu6$`{m=Z#o-h4bH@-y~dZHK^^#;w}8MQBh#=2y;pDD!`_W(R~28 zJ4V;I84~V%Twa?ycN5~`*||Em-s$F?Wv^6sbIzm;b=MqrfA+^3FHu_`viKjiUjy8O zvm@Qf(rDvvYA1OHY3fb-?u;|-R_K-JHq!IN+#cbcw{q`T?E$&5j5w@4+#U|LGuwe3 zO_CDviVIq!s%YN-%bv@PH=KW7VWZ5Jk9wUTKlWruP$a;tL+!Nk|XQRO3Pwa=Gr~>idLdW=b!J5N++=~kZJQeVaVuQ35?cd|8DKJmF05s zrgkZ2S_3&{NOvZfC}@e5&Cz<_m_u2AX4PMR=7wA)&V#xm4sW z63C=AZX!5W#^})>=y6&1=NCS%L&h?E*_{xlYhB(J)8XqBsuj}gRc+(Vd#Pe;Pv<9N z7<8Y!#MjtDYr-y{g4%dJmoG1JqxJg%Fg|MxQ=7S@m@=eqv~0l0as@}cqaEw{LQsAo4mjTv>`##GXI zE4`%ip5Tf)yiUk;qoGV9sjsw`IV-0z=we%rJOtt;cr%ui&5;ZPIZiB_NqJ=+Sa~Pg z>mL`Rs~_UmnKW_F%00@kHYM8+EA8VFte`D4a%Euj)3^5u-B}dDYBhGd_)a<3G7ThY zHa{V{+(XAl%t-7VUk8I4@<~wKKI)N?ybZw+z$U4g~ts2CcL?QP%>R^VX49fWH=l{Hk@twyP@BESpo|I$f%kJd3{lviA z4oiiZCk5Uuuj%r(JL=rVndh9|6vn-eMk;@WO7aTRz< z!*Ou&1qtkh|8cIOS0N1-x;MtU&b2H}jbPP)6I8*&YJ_oR9I=8%IG zy+g}Mj8pzM(V;v30H<4tmos8X4tVFGLyo_9-;wA6mny`vKN0?1d3-$O^wHyzGTP;z zN$C52N-Z^Myzdi98XtN*;ovIhIi9aVa~ubsemHS$^JwDwO6vM5JUhJG?{jenJpV6_ z(*bYjWnISeEbmFuoWcBiz&m-CgB87>#4;H0xEkN`G2n6V%v{%ZB{g8c`*JMPlJ`qC zqSsM_^4?uB_XFOKsTJaR*t?r2h)$u+81`DoPp*>p=tZpX5o5r+GfpG#{R(WC%Qt@~ z;l7mS{0wTh(~UQ$a@p~!q-3`Lri(kv`^7cf{f)lN^17}~T-WiEhl5=;)a70JghID@ zFbVw^nkZPw+vQou)z;pVP-#&shP}Sa*=w=-(Z0@cu(dabbY19qq@mEQy)9DM(Q%An z@2)s>*n1~&g*WW&Nj_YRuf}QQyj%K5}uw z{m-9rC0O-eLka3{z&jgyuC-W)B>x}A-aEdE;tLy}ZI^@)NFbpLgc2e>^diy;0RjY) zyXgf%Kv0SpIwq7*RRTy8X(ECM(xgb2-fQT+NfDH)2*U3n$1@dn1OC@rP6 zH9v}BF%V!~7F^U5;6Gu8Gow-nne?UtTuvH~4^lXq*Mx|E-571^4AH@t=!* zY3CR(xx8$!{13k%6=}7y7(SLS+ItJ_p#NNKXOL)HVfIkYfWquC>O2N9rZC%taYbXi zF#8d)NpK}Yt^XEaKOnf?!>s?t9~b|*ST#gK5sPbX7ws+1uAygW_F$%*5L`LOY&>Mo z-+KX!(UG!?g~Oik)gHT7x51Ob_hap7_BqxLiayD#$sy6dF4h>{6?uOvXZ7IU%Pek` z9b*p`w75^<1Ce87PmAkl_tp>KM1)JUQ}f7nxY$=Rp1RmvJBEF1*Wi}jjx;$+^0Hxw zr=pd;We>X8JGMP984p}+MQ^JvuA5c_8G&99H64DzO1%p!VjcX?uHOah%Y@#`RaWgg z&$PIyE3KLGGa|Z(wq;P7`0rP&QQ|*_IW7Kcgfhf`PossEvg|L+t$ZOgXEtFAC;q#O zng*di%Ci1@#D4|Z)Ore!)CF0p{oh#ozs)j^7i0(UAH_Ns-V70~%+JCwLq+VofmE?q zNs^u{%yjg*h~8WA!9wAK!}fp8a6m6s=ibsU1=)7kr&Xh}+7;t~{wk{x@;?^~uxET< zL?2=AG4>?FlVLlomOsZVqxQO3B1Sc(2D9m18Qc07{kIK%q5oV=xnz0mu3VFgvmS`v zG#ARUBs|3R(^>j&5n>|Q%g>(48JeGsKWD|Jagxi+@XI57Ytlr0pKHs1XqLpjlT@iun+w1<4YnGn(E$hES_AcX)jJA1M zZTN+vl#9h+?$dZF&e~vZi8ZubvbBb;x8uwE|5|Zlk(_14S7m!K`6QxBsk8rL6qe-un2_7E21!xq3m&j`WL zRZmg25RBgok&Bp8oT+#thbhgO8|gXBByM>r+Ab^`xGEvbE8s6;$j&mJ>lx;h#r(*b zWq;@BtU#^(7=1;^va^yiJJDyvyoZ?llrsLHn#7-)!Kb`|x%9+N9h!(Sg zTmD?Ov?+8}3(L0W!`T|njB_xXIn&j_?B`5H2XmB{^*#>e52fLH6qZkN=1D>hldWc; zhQ%E^=eUkrGE-PPc9An)4(1Babx1PN(7DcA@i+WKWvw&Xv%B2SZxMNCmRE46q&>UG z?QFxD6fyafNMhizZ>tNY3YZ5f^>V-+kt-Ts^;I>DUAB3i#l$c#jdG<+J5`hf=Es?b z(oP7NKn>l_)R$JSBvukSxau*j`h3V5bEdf4Vg?d}vZmVg84P9t?Cg@QVC+YBSX&6D zEoM2jf|!$>Is8u!bBfn_3O;*HI?>QM%`Fc{eHDSLZ_&5nAPC9UfTXS${HaT z&N~hWojS^8mcp5{HglaA*cpR$Qq=jjWai1TUbDNb2QR&-UBmlqBxkbivL3L}ygsL- zPBdPY$>ch9up=kS>x`Fd4KHg2qLwJ@72CjbeIuC=LSS_c+t!xv&$W z=*l0w71yvDk)1kVo^xi<=N99`89&xb*6<&k$UN6+j2)YaNP!i$sZvHMWu${yo-UYZ z7Nk@#$QxVl31+fVL8)Vq4?lv(C|4aNREg(0G1%1+Gg+x4nVWX521;+9Ym%L-sq(o& z{WS*tMY)P9Ex=G&t>7_YVw9H3Sk7GOEp(z;Yh^NL-q@DgC{sC8#V$Quna7#R*o~5% z5iCMk!I_IT(?R)}GymFlIw@;7Q^PL3i?V|=fwtu+WjAM<+f1}_kTbD%t{CMsXZqSq zta6^W^e4NevC1{>=LzuhQjCCT7N_8;9*pPLqXjcXNmB3(37AocTBI{YNmlSY0hkYL zCPl$R0${$!zDL;kK+#?4VA8Or2&S8Yo2Ov9F0pjFDFryQ$+pu?DdM6&orv{X%};&W zT`A%6Laqsp9dHK&fk&c@*%mZkLK%oPXIn==LR?3<-;TsTC+vUYtB@bb?yL0&qMyHh$zvvqQYvZi5a#QTy zh^eD2QQqM?f3_95nyM>_flh#}vq7oJb#{DZ+1V_aPBK>wb(_*G57k+1C+tMC14=j8 z@na_u>!_@C#z|#-9vYde(5Iq4CzT1jtbSp`MY`?Zfw`5i)1R=OqA-yb@JL}MdM3UJeS=UJ=9RnthAY) zYCX>Q+I8-wHs;LVHq%>e&6(0R^NHG#GyQBk{nZ%GxE)L!XTG*`4Ny}#v&YsMpmyiX zT)Pzm)sK1G>Cr#o=g-vsT<5N>Gn5$kXT`gge@3W7xXwqu{QYT&eTHVQ+R#?qNu373K&Xlxs%~nrxrjcZZYu~6BcSocYgY)~hu*v%oHWqgtOcL+#Qxt4%qxLt0MPwyJG8 zbJfnZU5(01^XpN%@Xr=?hZ@6~ost=@?Nn2Ft_(ZZPPJ!V+By7;D}~W(>G`@{YQMY` z`Mbc+#9;TX4&=;U^svQz#&dbCv2yKI2j`{OGU=I>Yo9uVGvDpDm;>raZb!w{pRjXW zoy~Qg23R`B)j8a9pB|Rw6Y6rFtCL;&N%d#WgxEDarLN-4-P@L(Q|el7IoZ}Zt#05t zr?KjZ(od_KIP;I4>$JL+=UN_~qqB|cn!o~Fe-Q44UL3AW{zYIPqP8*OmyDQc){VO(d9ZQ0P;ah-;CE<;P@%=6a5 z@|P^1)}J#M=9mGTh7Z0 z#(9+RMg?s<&y`~53ekS!xq8^W6Qb?rxi)UIa)oGnxy~4S{8ZJBa-Hx%OQ*Vaf{%n& zcDrh6_qa}=J)7!ikGP#Hww(srGhUz5Hq%6V?L(1P`vUtU?1sZxGc8{}>eDZ;GFG}I z&TjP$r|19by7FbK9X)gxk3znP}(~&6f_#Q>A5Gv1%o` zPQ0xXu2tna(Nbrz-d3xTkH-A8L{U~W>!da0xklJEjMSR)TnoT-LVcoHl-8Cr#jXiv zqaLTF@LXr44l#KB8kVbkXyr=Qdh%ABE3I%lI33s0Ia68c5Ho=@{ZMBrii1-jh6l+%i5y%(C~6Lm@9VaJ+<%i(XQzV=3w5uROde0Ph2PSzQug1?afCq>H@|F z>0qy>9TR@W3TrXvIrA0Hwk_rgxBMGs${0NO6OCNg^3mvBhP6O2Y1%Wca|HL8@|T5W zBTajik5;snSW}3JWtt%hIMc#r#%rZH^GueN&zPuH;5Ez~56|HG zGn~!T8gu5x^c?1W&NM`s*%|O&5##fo6g>fAXy-Z9ro1?Yk zc3ifdrCL8<>eEcrQ0Oex`g6u@Gt0F>+;Tkj*rZcO`B@vmbtYjhi(H!}^OG#=4BM(@ z`Yu3khvB4xbQs&FP4uOaP#J5S#eBh;qxExirtn-%FXiY=y+I34k0dwN@zPin35Q?9;te_hbJa;B&BJXUbJuvHo#f0Pw&f>U zHfJW-%v0?GXFhQ-mw78XP7s#Y8BeuqTqnw*bDewRsjBcgN3)mOU7oA`RFNwj%wIfL zm|eq{+GEa)vTOLS_JX%`+)U9fHfA!dh`yeMMwp0Q`eOep40%D?BCA}fn@jZ~E z(}puw{BoG~1?c=R?-{{lBUdMGXS{8vif$HIfGF`N<}z8vTb6n}bZ{blL*$AElL*UL zPcfTFX9TOG?bVp{4qIkN|| zK;&wz-{Z^^J6D+gkTc6|oiP0oXG&t`id=2<$DH{Lvs*B2^_O56``b_94DMU$a3Giz ze~anN89!FpwromflHH0J-9Ros*2A_Oqq{g0H`yvHM$f~UfUhkkR`=n|HQQscdOpr< zvhBp_ew<;p594%y&RoH~5Uohmi*jbbG>b{nOK_%=%_QrkIODRJ6g`MD^KB+oFVC4y zHq%wF$e9qkFFw%mv?N*@XM3ZYUX3$D?HYF1YjS3q-8&!Zbvg6I_SlDdJJ2$_!of7+%t8nA9%rgLEH~!NMC=@d$3E2G=S+e_rwM0@*k1im zZ_1eu9ZWOMyl?ku551LOZ2$Ds+i+&LovWuF4hC-pj})cXQF`g^xlT{J-#?K|AKT6+ zI-dGOt{aFpROdQMU%eC0WnkSAtr#eoRC^8%)FZjh8HY}1&K$KZ57fJGria~M1NA7* zJaE{F=FDyfR%$c+H7#ptRiCB!)@9kV8^)${Lu}8v4eGq4= z*=3E?2XiLC!3^QdP1|E5^`T%GD_@c#F~#|j`Y=Bql=Uy}0@GhM8>zxW1sj zXf{qy=S&GaQz4k~`dB|L$dBozEM|f}4!5`Qptm*o6KPC z?pw?peF4{r#C=uzi)M56MVzUW$6~(K7jvesa1V6m=}S0M-mc+%eJQuR%g@TSK>v|5 zn{oCW^mmr|?y}p_=w{6Qm>gzZ&*!I{@`ubcgU8!&6 zI@JteC>nREw{m8v?bUVqHqIm!vUJw#J2>;DZF!Ua8)shG{k2Wsm8+~B`X1h{{cVLi zYN&hkLw=*tu0|P_ucP`y&J342CB2U6k2y2lW{&GG zxaA;eImGL@{+ct9lJW97p)3A0R!d6DAzr6--Jj}%TMhir%PU*Y zy?jnD$eDK)s}+~@K+ZI=b#CZIa@o117t6)`uD`=`C3{(R?&)PXlQW_o>18>SGwS}* z%X0?r#q+;t_Dm1b9$93A2uylNkCb@J9 z8DZRqHP#EA_gSFP)`MvaCc=a145m{qJAp`bCyoDv6AOHP~6gqHGcO04$1U9w)jgh z*7C7hI8fkdmSC*or4N-F#B9h_!$e~fx12UlC}p!0V=JGzy)!I3U5#zL?K58s=C#*{ z#(vJE$OcR;~|?qq)lJX`J(?{(9sVI=)Ij<2q+H_RL{!=jw}o#y!sTvg2xh z<3TRV1B{2cn1RM$xtKKLDfjc>%9alY8!vL{3^o4YI-zo2WV7MMD}NQe)8c{Eu93!n zygmW;T*mV^1@Z6-t13P3tBf-86r?^)kxVulW%zKW%2i

$_35py$XOZc@N$nxPjBaG+DS%o(mZ8$T?UcWXO;k*@p z;+ly5&a0b^c3dYXK5sT63epNvDo*G`v#mx)u9IR%7MO`;N%EDUdy3LuKh*Zk;J7-?oxyrci zai);H7p>rWz?qzpP|@{}GdX+OcU^yS<`>&eCD-GEG}&qwwrW_}^^`Nii|1y)v<0184N9jyD4;hO&-T6t=6n zKTD~murBTV*+0=F>#~?JcuzKOE#`wevGL%?w-B;R5Tav6g_Y@sPq1U+mhUd)tssRZ z<6hk#ml*p1av0C2uykB`^#Fe3t*`-*c`AwgJ(`kzgP+$r$PEe3wv2*seKAt zS%Jz6VqH;>SxEm9ZU44i5UYuLeh)me9G)kJ-HcO=tp$D>F7h3Q+zkA2Wr5ouo$S^5 zkz_44WdviV@KoH@8+cY3dU#fY?SrhhkFn#Bk6oLa0R){2X0|41ypccIsbkB3ke#{C=0rs7`sWBBW|?2k^ISJ*4~ zk;cKo!PJlbtVKt>j@{1Xs*6>&PDOY6{shL}wsWWVUm|3;F+wimyuylu{|Eh&|2p2s zYLDM(Y$^O(iH}RX0oPFAZ!p<%#%U1iSP8y{Pd=4?`n--9N2{ueag`tAlsYH>6KNEfl z_7VNoHAG1B6P%GZ`%D^8lWGohbRCbDf_~0ylV-$QD=#&5N;XI$_!{)6b z{Tz70w=w@}L2r$e+uI6$G3Gm^7pf~{$uLo$MWg1t?0 zzE8sZqw#rX6JvcbUiM3AjaRR+xIYBG=u76o{}50Sn*J+7OOQ&yAAnb#CI zk0QNgO@+%sF~XkJZmYeOQ4jLZF04oAWIHcIo~$P7y&QG>9k^O)fxS|N9NJaL4M?Yc znSWHQZ?ll^G4!o+;`lrWVs4E0UDfgI1N=hk+QN5f-6+TIU1976^owm`>=or}F6`E< zBBW)G z4E6~m(rOG$qYvh7RY+?* zO-8$D{658au1P$`3*mC8Kh0ySzi+`m&$SZc^fBfcjn~mAkLr6JvKRD15jQ@G$nn=IlotVi(YPZ?2dD9E4j z%n`-Mi|`xebF~-sIE(Q{^&vSKGUOMr?w*qE{0;lK5$MZrdE5wM%@Oaj;KvBmCl=%F z4fxoK{%q+yF~0wl_EusXehs}Rn;DxAyYHaBRPTmThH-xeu~C(&KScc~eH_YN91+U= z#)x{9Z7$ZcV2*>>pOvZph&w#a=SUInbMT&zh2Eaqv|d`g=pSnxUIstaTf-R1=tV+) ziL2aY5y8xt@1ug*f4rPv{vHeQYdT@?33;L+Nf-0w^>eW^*tZc+@3O3hq_8Tnv9x`+k;jgYwZjPz`bNAkt^Tug7h@ zQ1%z{oq@mJa)~?enPQ%>Rl?uL4hva{?}HG_@BzyUn6KM;eS=tM%oEyYe2wxRX#UJQ zfw8NwC-zH`>0P*;$aH_6KQevIMo}NJ?{cS~Jwe!=K4%%pF6qZG-f5mTK|fJ{wnckL z_LMRW^PI+EC5e|{eZPtE5mi&m?NCCFL&_1ulj0{R(=X@l#{le?)xjkTXvY!4CyGxYJuCAsz>_eq$S>_Nk4TDj zL18Q4cf!H&D@hHq9`waN1=nk9DIRHTnvA=H%ZqjGw#=7^b&c{3ky5O4k?B!#Ty0$` z`dO@RIqjl-O%t^171m9X?_nKnf^x0(tUCNe`-O_w-%n^C#45rs^xkhKIPz0#w2kDw z2Y5aR{AtJz9fDZNSj1;sr(H%or1bE%jCDb}*gs*fTaW51{FT@tGJV`Y(!>7xGa=~% z#)Oyk6Zu#3bW0yks$kus_AbY`>k7N%-#(DS?*HAN{kR>4ZA09k{9n}-_LHQ%SVLgT z@8UWpXTCL%^K6c^qa!|2`wAj1k!&ty=Wm3aPg@E(3iYG%TB3ibU#)R77jY&H?Z3<8 z81~`P-upW!Urs;KcZSl?KlG&slGQOD(%|Q=FNOUZ=pVAbSISA%1-}}Y>P7oTO8=pX zkhIEq6B;)1vL7u9F{aH^PYc1+aagO3dfsR7bbsvq3+~u6Fjc0kGFWP~A z#oVXz^JCnO2VV*8rR&Pp7qA{9CT5@?DSnQ+gYSkTUErL3yr(^dt(NObV_Zj0?GVb& zU_LH}Tyd9Dm$=TYBGx;jukf31u&6&> z_fmVU{m-gUQST1$=MLnzt~$d@v9N8>yDtm`Wz(QonFUB$a)2ZR0|8)d=JV0 zZNFtV4SuKoN#=3sf9EyrS1CRB{HAsCB+9M#SjhYsH-xKUUY(Tn=916TQ1)#);$hxU z_Gv7&FO)6%N63m2kLNguh5mte6_Gz$#vf}wzANMB6TUtw?1uDn?)Y{<=A-i_iYuQ< ze{aD#`z6?=>m%Cde<8=M7&rgxpHHRz^|D`Ip&jIhL2?{7meLvz8#{<}%N~u(>nJY> zcJ4U(?T1x_-RY115|Y01LAVBMx~G|vXj67p^rF>b5+V$SAO7{m3`bCi3wvS@$) z>bU*}uHQwB>nHUEAAt++@X5+mFsId*NaTAHiXh6(;IUMJ?ST_Jrg>KdJryza{9>lm_JuL>$Mm5 zb6@vtejxaPnD-PPRwK^Pe!V5~6Yhn0M}B)Q*HK^T->E$AhO+vb=(-a7-|G03Wyc`) z7T24lI|j2q#^4DX)Mw!{${)n0wubM4f5-eHd->3BRNn`vZ!O4Lm?z{1xAaG8=^tN| zTL^Yr?_=zBg&=kp=Zf_^)?zzKGS;|bWco%vPD0sc#OX5;IM+a5^L5@$=SkN362xlM zrtySx1?Z8V3(5I9^AjpJh+W!%Z|tL-8yHvr;9O<*8SLvjit`ncL#t!Y)iI~NUva+$ zu{1Z?3t}Ilf8*PU`n3U$iWk=vC9n?CeslCnoTs6k*16*B?s&Ta`1Ed^2elCAh67tf zroYCuP$J3^?eS+NuutsT(VuNVeKzB~DH7*~G@fU8E360d`{kj1J+1{0;j1OUzadVO z?ERdjbgcsMl7MXCkit23Y|0+Xs0QV~6_F@094*UihE<{>~^d z-cBH$uo&k$n}&Tu$GkyoKvnGBss=OK*ERRenSXSy*%k9|KkSn%6e45=?jP(YxC~-1 zFs?45AO6o$S+rAx}UymE)l42Y4e9m_CrZ7~}K}=Gisi*_hAw;jin! zf1+PHT%>yVvq5OjGo*|4+$tYuebq3As>65KPmvV$RoLuXbY2_8_VV}{#CA8u84dFL z?7_F7It9u7aAbOk0BUb!x=YG1DQj>U%I5QVgz+L}S1H?b8N>pxuF-fOhwCenE3wYd z`AaC`M}baa92e+>-$6(d{-pCd^6#IR-`08MDb%wld>w#m-ID)`bFB;I#CSN${SSXg zDbDMHSUL1VDYT<{2(C|%k8l;pKIrdI@ZuaG$Ufiyy$tOG6m}5%Jd$NA3z?4k*X>l7 zeSv*VBjm5p8($ZIe1rK(=M6m-QIC2&e-OKg^T$?57w6%1`So-=U||Q>2PmKHjK(@b z<7Wr-JK6TFax7_;m%AM7L*PI1(?Y}_lCg+?(XhKz#zp&jx0%B4H?6=q65V$y(U|UU z1u+dgotwP5fp6HNAFT5d>pWV|RMh+boNldiIs3ngt%Tn$qP^t51z680F1(BNoUkJ0Ug?Lc zSjWge;@lH^W}eSF=M2K6VeDg!hgO(>Lr@P_ZE^nGPv-B8{yL0#b}b(9x=s*VhIl&> z`ok*V3=gt)S)4^d{*3GGA0ZE-4nITcD02(sZS2!`LXN_9#ZlO&bNq{t|6u+NY~jzM z7vp*vxG%=tUC1U_7wA0u1jgAzviFp+C*UhU{tayLkJb|(#I|D{veH>(PCu1I-1dod zr_(oZNtTkb@iKuo!SBS=H*HBCM*JX2=T0OqCkm<7#=TD9r&vFHB5`hnCo0;(4`<}{ zZcDV=FB0dcnBR1N^_MWwAJ+X%+Se9G`iw}NbJWGU&ilPQ%Wfpr*Vd>HjRW#$Iq0p1 z{c0#@IObqoND-H@ujcD4=6P$ZyU;VRFBsh+lx5#%tQ~ML#wnd+zrpyXc-;^7={~J> zT|O87i-z8bn|K2fcE6}0$`$94L2M7V8^o5NzSj_63-Ne`>m)u8>N2{|8I62x!twn^ z$i&mQ{{s2D8{-Eu9s9OHuy5^8cS!rGxDNgj>H83`XCU1=Kl_%(jpIHhtzVCEf8Y%K zPVzYF@EGG@|5@DcK)yPki27!&z&CDyrz1Ymy1oSK1MR=Ia9NAZn@8t*wb*Z1H|ZSH zI@idqE6)4=>m%&kLcFJVybkwuR-t}x(2n(xDcGAP!+(3xPn%IrUHFsicb0Mhmq9EH z<9G-3E&qC^<2(oRbWfx|+jtG$ye|L$^ZTm_=)6iav91Jhck8> z<(#~T_a{-GGPN;ZAfKW=&hr9)_~I(;l$6p9eZurDO_D8Rgv^W;atPK%;+Jg^c#f3M zP6>Qf$~TroeMmoht4x=&UQ1zz&g&?>k;Dz61&%x~qzn5GO7APn-Sw{Evt)fXpAdN1 zZXr9${B+)T741*xD9*XlFwUczg|e1a=(^pXJ?uq(@MmY&)BN*iyZJovXEj>VJoIN< zn$x`VXU$OFE%e7I%p2n8HXs?qHdPbjK|CK3B%g~2VsY>@?bil}igasV!ODqzNw|+l z@s{onJVbxQKNIn{hmyJ%lV*t-7v|0|b8iF~=G6*nyTHT?gdW8P4F_z(4*izSO>4Ayg! zg}KDu1o~>{oOX^WN!Xn}Ov)dm{FzIfi}Cn`b4=;)7JNS8d=c}O`oXFPo!3!2%S!#8 z^#rDVB0iS$wUj45_@;g5TFRp$_&O-$#1i=UKV*@j_~J99S`7PK$UMbG`tgE{mFb*w zU*p(NG2Xg<$XJEWK`fX*FH)Dift}FKg&CTOaqnUsuujzN>|#Uteh*(_uYoU~;=V_r z<~XxQx&pgRk^b^H?Gs(>1v0h*CcZ6XbNG+;m1MUg>|W+}1&#t<033_*Cu|n&^QuVx z!2QzIj3t53XhGu|U(3Hl_upM?E!NQwVK>ns`$4b5T3X+OSb^J!pO79H>Ee3G#jX^> z-Us=w;G88B@-ZZ}qjg=JrK4TvgR##5KeV(cx9@3+%P#gA+Dr8ieh~Hl8ug#2lb;H+ zR)vIYs0zPPIdfn~$G&eqWVd8oS3r_qRzmibcs}CwTHx$J!N>0R%s&)yiOQwt02+66 zF-!kJaZw+#x3ROR&sNkY&4uec$m_mB{)~DNPAiP_zs^{{+KTJ%lt{#P_+=R6Rq)n* z0qb0?QdKc7eK4PC+|m5I1^rDp7rh64y8m#o6Yj^MzO{r|MWo&fxJNG}RG;a8z&@fl_D8+(p?Tjlt) z@`pP7ShkBOw_=yV^r|24uM+u43cd>XC#X-TwATpoC(H}-yVZZMp9yT)r~YjUJuBUk zd7cYBN^ga9OMfZ)YZ}JcBWcIr^~3s!aYpyg4q{(NeirxPuy4jbn&RF}E=4`tqMm+U zm`7c3&YUUIZ@!Pd0LCRS*RSX!#zk2!aX$*{Ahjb&N~%{9^lxLo_W|m6jZ0jo22g%c z&d1Up|F3d#=g(cP)7}8so0kXcrR;}v;3V|J*e*fr750tvbJt)Gi?IYeGhSZIpZ5{JtT_Fv9A{S#;hYU0F{C)rI11P4!T1hE%OLja zTb$oS3439%Hw++o7bM9KB=PH6koX0JLG+whFq@41?u?4TENll|j|a04wo{y_ z#V+EyASnvx3$XhE%Bh5X7v1ls=R#zTlfc)`2~`?&$?w zoa@(RE6_g!QT`;@9U|*H67|}K`i_Py4L^__s@JaSu$LhA*>ny`&!sMZEzU7Z^K}K! zal+1*sE_#n!Ah4N^9 zX3>RN7mNcJ(wuRI;*%9;mYk<^br)O6CC(Eiz9R9&4m5sU{8<{lZ@D1!qqxNL!0;>W zdwhxr`3L-30@q-FLz4c|Vj`Y>g>}d~8vDXZc+L}YHP)+V&^v^FOl+OA|Dt(x5Bsm| zAB6k_{X+OObV)u!StP>{Ywls4dHJcBpR}G7i57k<32DurO9k*O5!T!7@E^rb1@n*O z`B7p$>K%zQChSLOUIihag=rlRiWdG1h9AempHa<%`F9LR?!8XyVKDoK+YM&@e-?JF zbs}w>SpUgxWm&HpkXCx-M4E@fejV5^jQH0Oe%aVe_|G~Q@I`2#bG2|OcVVAR=lpF@ zehHL+YBse$n6>BgPS|S?do-U0MHXf*)O#P|FP(c(9HMg%>d&mcLPi{>{bOAoeWj}>+*|5QUd?Tczb(!S_@$XAH3wQ%p`|5eWpNT+hUKpw=nkB5vw z`LASuc9(WPlJ-7@JO%q1?qK%bV~PjCtmkmL-p-kKhcU0aV!Y%%i1h{1nvc_$hP$!k{y$Wv4ReMwVH0C{D-dCHiE6y^i<5U1+AV9unUG#O1oo8%= z+lMWaSd{0();aKIw=WAotFXUdqWl8v9S2^Hk0ex)Sd?FowUPK4qRUQqAqL0u{GvXE zST~79eFE4HiA8+^S;?}bpT#<%y$9TZtdGP^flmUDm-x~+JT2fZ!t`=nzi1YGyTOf6 z!2kC8)-Of=&B0;7eh!?)(-AVH{sNw!gO}yONh^L2!%9C3jNcNlu#pF+PrthnV))-) z-;1cnb@q;pzb)^H3s>;O&vT_`=$8X$aZ2a;Fp3d^- z&IPxZr|TwnmW_Q(6w3cZdVm??flHfJJa8bZ?tw$h8Xh>@yQT-OZr1j|4NOc~{wK<7 zW;XD^5oTi#Y?@6yaCftnjl-6cKf*omb9Y-0{Knnh#;=Z&KO$^Q`E?UZF#p?Y5cV-6 zJ#c^-<$+6^F&;P&&nk#Nkw3)5lFR=D4);#-z}3wZ58S}~zymikyL;dW6H5#K6ZTBA zj|c8<_O~&;rS!=CnFoIE#?s0E_8OG_#y!}^M~;y{hS-?Wb#s^p_Ay6z-~cn-1D7_( zc;G;WNy-02c_HR_4;=12(F0dECwt%q=2srLnVIE*Bh0TouxZZnz}?MnZ5(it{ISpj zKX)(kz;E1(ZM>cP<9i!Ze%<`R1N)fEJaB;dlLszsVoS>Z_8OEw5Wjoj#3AN74;=2j z-UC-RH+tX(=4KDv%-rgMBg~y1*fe*0;O^!D8`IktkK70f{BN&8__-UC!hzqokK4E* z{tfp&VPn$Q%~KxO$ISM?0p>XmT-v?be0pBrjNfn^aB|dNe2!w^LgNK@BALPy6NYE8<^M0k${u*0iA{_{f0v-TjW&;m=(!^1m!`@}Hxd*;w z;ueh~eYF|pfghSUnsubVG&^`;Ee4lXj&%PRY$F}`ofupyIB?aN6s0&{f@d(Qf1{Z0 zN^Oa0eGiN2rNl~1>rq%tA7!M(6raOl`YPW^Oz|ZwW`MF^Vw#^}F`p?9C8qHi7Bko` ze-!pBH-m=RxH+!EBV&ep;Fy>Z9=LnVNE;9N2B$tT=}N)!)SzizA%EklA!e*njN>e? zmcW_7K^%+yF3$6nCuj#FRN`T2*pDK8i^N$MsJ?R*7v>Sw z|L0h|Re|(k5+{C2^J%V9L*m6)$_a-_+;)Y)@e*fCdwnIYicsFSoQt0grD}P+< zI)$Ffws4QwP0A{cGug9!c#1G~yRwPny^NkhneW=6Jd^2*F`hn;-J#H1cW5t5!_qn~ z_BW+I$D`Tcxwy)X-K#8>_zU2fvHO*P%A}vgu6Dyy60rxB2#Fv3h|_fcLrMb2qnWEK zjn~7k0|A#7-$yfRWCxpYg7dQd?lJlybPLi9Myz*A-}d4B_~+vY6v6FE_R- zCt|aea}xLB_>AIH!)foVQp$lZ#-3HGay*)scO&+k(wpNMUdnd-LSpO%C0*jez)yhJ zay-rJc|$xs7<*BD8||`TLThhl=`-0miTUDZUa1 z1LupotOQEj6gUvLl*Ffls6VeL!4f|L#y7Z?>Q;WV_d2_()RVX#upcm9xaa;Fy9ZAl z$6ZtM)f9Lp@Wt3`$~lQ|Mp3-Hu3VG&Z{UN#A+?15%hPzOslpBAJ&vcbPce=+xNj)q zIliN$ji&K(LzyY`*_YTFR*1Wy%y;0*z*{69g8r@_cT?F7Z1q3kTMqntiJMA5?VR++ zNUsBIjh|L=x0DtR+%E3667RsBO-65_gq~4s5V{ zN?iwzkGrqXQ{PlRr%W|E$IO8TY4Bzb@%#u>++U8yWXl*&=Zd z;Hh!Xl)3eUy@TK5u0!14%3_JP0OKrP`AOmxGCf~?p`UMwNbe@`8_b96&>z6@Zslv> z?_h5{#~ExQ{QYCxKgu8c5_~lK9(ZTme@a3lvX{X+p#Nr3`#H{JwXikKj?>ipGM(@h;DU`Qey-)h1*(21iaaO} zFI6rq!M~@t>*FN*%4rHU%Q4Snpj!`E&aCI|No$0_0%n9m32X1CgQdc@~g!z@a$$?FCs=D8SyPGrB zYzN-VzEQ6@uq%G9de?z{GPumcC-7i#ILK=LQ0myiEZ zZREgJ;#a7x9Jpru&uS+JZWzBtjdS3p@$1y?4t&M6LGA0nZQ?hnLmjwN{1$bL1H0q5 zsb4v8Qv6PJwgY#I-=!{g;6Cwt)s+rBAb!8P$$^K)A5wQYaC-a^^{4|+j6bfPbKt4* zC)Gb3cust_`j+E6-r_v_teU?S`Rk6iIL|(-z9X?X&pxYGkyxB(pH&-4EY7pfs%<3} z=hlgaiC^w* z&Fjz03-`XM7IR?Tysd^hu#fq>8t%XW=6&@82d-{DQYSlb1M{(Z-GQ5#PgVc0obn>f zzttuVY?}Y7Lmarf`Bq&mu{h7xwEYhJ+^uU@9r%sgrFpjz_QiR29<7kXl)tp;tyOm5 zK>V&za|aGFeYIEz4)-pg^><+1^w%ahu#Z_tTj;<6W?^l!16MbTYquP@f%%TsAY9as z>eI|Dt@U!?2(z3v(}7JhSUcgs-Ob9HcUzI4&O08tt7~N(__@1=R?mUoxNB;u5{vWf zT3T;MdTFzcHrjy$S$%De1BaLmwABtA?%hZ`;J~`sSiA1PK4uf`r2_|;&9y@9a_U>% zY^}ZLzzxiBEz5zMneDWl4jf^2)c$l})9kFh+dju$chl5TB^Kw|@!DVqe(p}tzH;C< z?j&uK#Ns?VS=;4EFKwo37acf|b<>_WaERGm6Sqk2C{$j!cMmNnLez(_ZuZg|IIxe| zTZ?qy0P_>Aw*yx<2WZnBxPkeZcF%#EnS-=q9dhhPn8UO%2R6--T80C6H%DumBo^n{ z4<9ff^yo;^t`Au;7IZGNHEa^OHVMQiK8A!e4A>cHXN)3hND zteanJSq|)D&eWDUaDX{Sqo+I&KNTvkx;an#!+{%^3$)pU>+?Qz{&iiWw{K|u6X)GGv^O$60q5Tf;%{hqq9|RQPc4bRsa5Crjv~&(Z)%-H zI*UxeTPE?hw8Ikr2RtYKj`oP-EEbQa3O2;w)%0jyo7&na;Fo3reTxHYF$MMe4(uOOL@#XS)aRX;5_$&*t{M}hkKs6j z)jq@6{`g?MOpMSM=h+qYP7WLs6QcKX;O;T+>WeuZ&DJc!Q%dob_01e-us*o;am%cx zpLXDrW~lCkb6dLJqxAFfb@ciUJkPAJ_i^A~%|`lC2i{{g(Jwmijrf-Oa|eD9-&zmA zK9sI+**?7879XyE&v6DDwE^eZ@on`39Pd^xV7$5#+Ub`$wyrnZ>wj@PjTIh`w+a&4 z>!;(%UKXpEjq{m=PI}V>fmd(C)2Rtj`V@&<;_1eE2{F2!Na-`YcHq`g+k|-CN8)6O z3v!&n=ToQncs+#UOfNBC67?D!PxD%X`bH%r>h&bPzFy$>rGAe!bRM3lx8`_;*GKVq zN*ekfNSwxTvOZeknOpF*Q9`P|S>j*U5&l4bA@LHP-d(SjBhr}xnN2+Z!FywrqV z`e}*7m*VTF2_NbEl1bk>f9u))}qYzFv`{*T8DE}QL z`xL&K)A(b(9mm&|!pPr*eWG`e_`R8U+738g;vuMSJJwh4DzVQ6d#wItTnzP3W&`xm5{LCf{n@AbWQiXX!&`T3pgvpTbp`SJzw9%8iNq(1;OShJrmvN_ z4C?ba8>H`$_$cg+WrOu25=X&5lh_bFTjJmmG>V4m|5^GdZw?!-=S^k!yROVcc?;MG zy@hpW$^6@$%z@&-G}D>HKy8a94@x{B}S>y53h}Iv-t> zH$xvLF`bW&NXXE~OHAjZqY_5x(0pqjz}1zpOTo)M<*qW)vroS=c8G`e+bOaGiN1a>i;* zUQ}Q&I!}#C7_XO?n9fsI1BXgX=cyYKCg`0d_QU+$3Y-M&h5Hk99=a-FZFPV>3np9 zdx{<{F`aKdN|>T|b>Qa-S$aPQew#2&A1N`NU*<{tTAwH}onLNnf344un9e5`<^5V; zBr%;IQu<1ct?~11;F!oi3|1n9M52MA1^dip6p6+2bSw3bB^J-qt<;A}ES{(PS)VAe zc%E*RK8s_^pR4rWWV(3XZFnb^4trc)-iN82Y z`Wy9NiQ~BbM!l-UqWq0|ZHe>XeqsB>jd~-AKPr#=-N4NSmgR5MJ4!6d->ADe&SGJ! z@$@wGKalxFeKzTR95^NMSACkqqJEq8ZydNs;%1%38I1=~-!1wjiQ{oUzFFcHUGE{% zMg6zvg(VjC-=dds;E$o-O=8iWt@=2Qt^VDrPvh9SU$#~M#(@Lzj?7{Q4l%dsYaQ6f z+@bGs;BfC<`Vj}ld&+vY0|x?Mao`Yhul~@1!@c+G|2Xi1_=EcUSa+;=HZbv!-U*oe zL-A;M;$b~W;vz*9Ha797K0xB`NS~2-T+ftv^?t^FNIa>}m6*=^HzuCe{d);}gbyU1 z(aT62@DaZ5ns`nRm3YWTyyc#FQEw-4Z;Y4wiI?>>iK7rtpCw+^$2c%cx~?yl_$xe` zk~it5zT1HVlWyzhBrg6Ze#JKFuKte$2PWOu^PwKpUP>>U^iY4#fomuIrFWCKm5J-` zq^J5ij}up_-}(!YAi-ohTGf0*>2-b>=$*ng!ZF=K$lTahm#Ni~K^JRNdU zl5UKVchd?9hl3C0#Cc^NY#{*>dq#(areyukXEl+Rc%@zuX^e>W+=aa`g@ zyRoHB@-w_}9YyUWd_Jk5(UIf5UfF5%yhfnm7MML7g!`*WfkraN*7z-K^zhIxY<%LO zU)UJrp7nAkb>nqw@%+Nlj`pxhtE@*8a4(mEREl zDQ>jq=~n$q7*QNs^B=#9#IY5BOBlTz7~g_0rZ_O3wl?Mq>~-lS-7kE{_(9@3z<$8= zwQ`Ez&k?t-vr@)JiTyCI@%tynPKh`EMCqlC0}}5A#&69UCnY|4jnc~)7bLy`><4^P zVA&r*hWZIFk7L~5G6Fc>jko&ger;J}u*AzHULf(@(ss6;|!LG^6>?R{ys&qBzdBoV$#k4ZgWO_KR6KiU%jgd0l4Q${yqsEJLb{_h}lEaKG z0`vYFmE6Yg8c6lA=1Y5{hyw?*_C^TDR)0nq6C@V>8DZ>~SoBwf(eE>-y$(i}0|&AW z#sY!8K7B^@?Px6J80R;@2J2|7mgz6B-}WYE_}(LY|U?&Ob7#%_+qc*ry(jb|Ls z@cI+i)svGu8?QLF{M*?GK-|Lhx*V^ajgL6KqtN>RQ=vbc<4i_)W^xx}EaDJdFN*gC zqK#P`i}d-)rm>OZ46eT{InKy8nDjGP^MiQ4F*(_2Iz-^Hc>eBiayR2^jyD)}QLV5rbPi2c!vv!it?xFQ;c&GcSZh3 zzEh0*4qQ7W%kcVKpPOR6c;jmr}MgX{eEDKm_x61!1;RLU&F zE1mLBV}z4ZzA-+|5V#j`kCgdFh6DFaS!gWgIE&3VkM%HRv9Xck3^oYQmkm!@VjLbt z`Loy!wCAgo<;E?JGuSfJZ+`Mm#$=3h^2fKg5w%l(Hg0fijqg>)UmT0^@NLQ}!)q+* zTk&_bQAA)q9~Y;rF)B$+^YKUEmKTKj0P;zmreFeEijDCvhmS!G1NOIKJck2=Y4H zY$V8ZjoaUBbm#cGcT{;w-(q|$(uirvR^k;reUDLD;@>ut{k=vliH`yM0l&xb9q(&+ z-le9t&uA&rUjrL#pAjL`yLP7Z{YJD*9|df%{YHw!2l;q9U}Q>shmWTN#&n54Ux-t; zd;a?}WwcpjfGM~xJT`(ZvVPB~@_l6VZCpT~?WiT}+@?LThJ zmN>r;wg0%WUgG*8lzzh4CUHApgPkxgN_=MtW51`IG;T`#3iu%~n?UuS;T88Uo}W!Q zW#p0gW8i;*3vit2wS5Qm-)WEb!f^&08;dW%r(QJf3hb3xp6Ykecq{QD9zQM`MY`BOTr%{p2#;oAh@ZZRmyLcLi}gN#>J?+S z1FOkbjg&0X&tP+Y#aDY$uNkkW3j8O=TX5=4qx>|1PdCNa6jN^-2RYuYy!e3Z-!;xj z{1)T1LFzrD^K{bRt^9)Zt!e6gBU<9(upgHCz!)U)RpgIK{nHr7aRzI^(;piPWqMxV zgw*H8VwpY$^SgWM-^Oc+yYyo0itCjz>uXWJ{XY`^&*(Hm;05yuzcs4N6u2Vv-;_~Y zJ0vcO`UW!9HF=gu-?@yQm(yH#C2l+h=d-E0>-B7rzR!eLQ}eh6&k;CnFxJo1yspXL z5T3#EBR+ha>f_qTaRz%f4{wX7`nuZB75XuV59?C>U4MNm@kzvo)WWWk&?EnMLj8`U z7Iht#_$1`{)OTDlXa}XQzKZdbTG~~6fxwqAUmvAbaP^Ql|8lB-CD&Yue}nutwX&-` z`jPU#g}&0YnrooM`B8tbuA#1`h})DtD-q|3UF*0?en&Wqb;mxfY}b0O_Yk)!T}3?- zYc_D*lK9ao!i`)zz8C3zFdlIQ;Od5X&g=UTo-gm(*!5cCVQ62&u1#ILe-P;tfrD6c zSIMOUCqL)=br+q>)A&`-Q-8H`9hd39!=94b+I1KGMD{B*!B+#jws9RszY|`C_}-#x zJJ($Jf$$NGzqVc5yJ(#xe8#|6lvsp|)=9#Tf!$p@xCo&qeCt)9`HIg52yFC5{Sv$8 z;GL_az;*)ljP*) z$g{w1a8okApAaCmCgb}F0a7ROyD_)ehy_c*WCP;u2FH+nF7xmZDVgjCc7s#Ni$(lHrK#kd zBL1NgU+s{$Z)f1ur&c~;(j4+_urCXf7NY5SBwX4_;rRPpxU`Raw+6qyaOtox{+{Pz z;nFEDUx4u2!a0opUN(Phq_pN+et!JDZpqjv=`fl9UbkdyjC5Pr8LxK@n$9^DX31fS8e(XomaxYtBCQA8UE;DM9)Clg&XYFyS)J8ayEn5exCyn(;3Bn%s zDWBgwHeJexf9Lg^0q17{A4`MQb9-1coZk+ZB2~`kE^z(u3am~M@QJjHob-^fhTt{A z9yYBJtZEFtNA3Z~A2EEIboe{Ie;U)Ey?iBLy3}+dx0Am!r8m3`^KYa zho;}R=SZ)UaX!c#sTX<6co_eX=Suy_1>p8CzCzRW&zBZ^*$?(u z?d7onxzavir+>9j>b#k!M<%PaAL{Rbg;Jz&0b3LdzaIxIk_xps!gWW zMSQ8gStm_LD{n*nk~ez2^aXhscm?=t^0J?JeUdNnc?tY_w}9b!U0O}9IG%@pCv7Cx z0mGNFrJZDazTF`0BjfY!2I&a-9P~F@`D~OU$$8)yA9*(?gy(j2YfFXWd7xW@4$ZK3eZn#<+DYqPOcC3Wm}{M zLr|}w1ww|{Q=vh{^VZZLtuYl=lNoX zRAD=huTvg&N;}C|9(GD?cJc5`wg%GYM8GbouW*42`{O@IQ+M-l4@*A}t5F3MNNdSW zp}o5kP$(THcfJVy#ejWMg#z3@3@ioims*f#LjIb8KT2#5h7TLe*o%QbNo$0i@^nzz zfu{Q8ptP5a^~pi$Fd6HEL((ZS)(3~ABJ#Um@$z$6x<(EG!~1s9Jv80#Mrux4&Et1UszUw@ z?8i?qpv7)DJu(y(NtGPYduM3ZMKtW1RxeN@Iiz70i#b zQWzQY2XeqC;tqF_xGd^(Uc$OrBA)=$IeT0g`M{5g0#*n9M(scc6k}r zOOOsfxBVrlSU63&HWpS33@nmv2z!*L;9lVS!X+y9|1L{Ug)?YA<7G+Ohv_*hjmQ6r zWRX{c-QY^X=}J@&SWTD}OEt;EAYW<@FP0h#dz5kDv%`v|7Q#hpA&j?tFyvRM2W>y2 zF+cvVQZ|OWMlIyq|0-Q2mxc4ecXg!O!p{4GB@%;n2gZn7`FYTeIL;3|JM5;EehAIqhl4ksrDlh@o%i2vNdw6E`_vzjzp#hR zgZRQX9HiVMxIMOCe@F|-I9~FH^bHxuD{f0`ynKG_pHkVQxc|k`yuG_4`IGtf)|k6e zsF%x(x+i6MZEuaaFU|9EnNbgKQV-#DHW>PU8AJY(Zj--*^y(M* zP?~m(Zx7GEvl$y2_*gn7oWtTDKzA|lsdU%NVS)ch64Vq)%7r^-K)dw|>QgU6Av{&&lh$XNfo<>_Q?IN$#Tc`msT*bQDL zT&OOE@|7G|PF^GIQLw*PPCi4%{$4rxim+2&%F8dF-%hs#qrz9 ze068Oe=&rY32G;QNPd4V-@b$Vo3N9fo#lUp3so%don`p~-@j1B^4M8+3p?AtE?35I zD!;GG^~t#X>+<`;8H#>k9C(d=$Ao#uEcJJum1Y=kjs%%z+=Hx$@skVhFq77&r5H} z&B*JA^8Q6nxea+2*pKy;Un3W8f>lO?-jw^0e*xD34j;g&%|D1 zmE^=a@D=)?QF8WWzP*QqHH5o1C`eu|>^vWY$lJ)+-iFGDY5P-nhEcs&!J^M#;ErN-;=$nT2drL!S$zKkIr zIh2Bpad$ft$V<+9g#{5;Btt~|aU%bmyx!WnX$ zu=6}NMV{bgD|m|hiI*z||4-&$^L6sKdhjQ5h2Mph{R{Z>?{v8u`6SqvO_%GFE5iK2 zRz9D}FOl1T;m0VsEg92$h8#@pBGP-NoI~y-(l=8sB##vSTz)|Au^(2E4a$;zZeV=) z(r$l(Um&j)~9Z>)jG|#lwB$VzcEu@(6Gdc#W`!wVn^}qXf^Ed;EdhFR0D8 zpCjj?#r&-EW9P`1$QMWR{_kA5-fh0U2g(n8)sKBCm;DpH9OAo$&6D%VIpCLqzmj*} z!SHcgVD;SK`SLOHLP+0^!3*T8!WqibpWyeB;6?InvVH*OUxJ^IyRYQ&&y(xi<;R2d zsK9P;3vv(f`|4u3J$a<~eRZ+i6;0)NiQLD_R`3#exR)yiFOw65o$jx{Yz&;Q zfADg7C57X7#|pXsJsuw?f4-3;g+1&=h(CObUOqs+-JFldu9WZ4_Ek89Ew&dLI0zO?UQ54t-x;Zc;Nzu_tSnkos8G}qul%Pv*W> z=P~&h8Sl?y@?|nV-@f4E@^vyl-$C$QVds82A-DLOU!U`P$_d%u%VkELlxGTOvVbnI zeogQx`3G`kxbH3opOMcCJNa=|F7dJzd{$PUJWIcd!RO`rUcMT9K^~4)`iT0tNFGZb zA?o8IIf86`2VY|ezAVR+tAgiLy)1u7b~lDEy{T8^8RXBq@%!hBJWJT4d;|7nSL9q_ z=lY9f<*E1e7t2$GJ*+bvAHG2%=aR#qeS+~DdABfLZ^n>cWW~jg z=j{KNT+Yj_L;jNMdU;6jWBFaQG859bmCqA-7&#a0%bv)A!p`xZ%1gcWhY}>O_j0F@ zf8;_hj|wiMNM%HP6uAdKzOQ1DD}sHQuTqJ;5dPoFM^b8%x558?nWQul#`>nrC|Sw% z^7*lfQcTADP?erO-q)`wgS?y@tSNzB_5>TsG-0PcGnLt7Jf5Z8^x7Uugz~qSbAxR~ zFZ=9#p5Pah3c^l$l~ZPU*&0(`$@OxXQ5BRD=;!hBF>NnnJwyDI7hqfh@=rMc?QQ>% zO3I7m3*d^um6STdPW@k5=^*U1PnDHk!o{NhlQHB)WstD*JYGfd7cNn8enu4~&?_9) zCs(Ek7rJo1MpflDZtvQ)me1Fyp)`_t{0dz-U!$f{LE%nkQ!`-xM@TJYv~VVS0^^Wl zLuxA*g$rD@AUrapuJV}7j~5?OPl27`ufTWnF&O^}X+SRY#rYqN6gP}}@blsPkETj{ zVGpYq2J0J!ysSJFcJ80n3jaceQ~qnS)=Ev`LWc2uMQJZw!0>!+l~WXs=WDODg8TB> z{vDNW!i5ae<29w1u(N*`WhI5<{@s+BFi(}|=K_EDZ^#=;fcflrxgmX&bm2_)S{?ZP zFXSC1!Q$Zs4AWSJGeLPE?9`7Fm4Cbp-+E9iKTKcD?^LCN zu#?|uN*;yd@jq5ZSLEB{@h*f+Ri=3PTF7)|7Fu}~%6}1?p%jpDJb8w4fGo|1_8P*E zk#RoJ4CNd-V*-SS%utHSRr|wwkzoGSI~e~E{h>0UGZYW?waFI&`Ypxt+Aa1Yh`X0ukAbbqDayMQd&r+hvZ?EU^pQR)TrzvNkJaMO@#rYcz znWY@@a{bUbN?CZXn%@uq!1irI=P83=o+vl};!n@eTqTNJZ7j^!4_&Bygr@dzv63a6 zq44y9*$B#){#7hl2ECX9w}) zuTu62XR^)_P``w(Qc|ivOHV(xS}7DRQTh8*|9Q|Zx>&x_i2P(Dd}TK@UpYWN(uN;@gW_Kg zx4#47t3x*^>B3I^y-CRz&S4(-y=+71CS`bizI}#L1my+hA1GtVpF(+>FKt%B(IS7h zg>F{Tg>zWDi%_eEZdKYhodD@qOcKabztW$<;Ju-}yCn z)EHq{KOOoxi^5(~lZ8FXZ175ODu%PcP~U6_Yp%9xf%|WX=l6dLwFCJ_upeuob|?Q1 z>0M~FRNo^14Nfy#s)NW+br;(a)=Kp!n+Cj{4h|xxK|gCpSZg(kJOjK3oJ4Nkz{L)P zwNWRMUj_dHo{ARnJsb9lTHxi9u(s+Ew5YG(JG|=Y|G4NszUE~=*#3@}FG%gwCtePz z`l>2HI|J!0jvrICqv{qeWLVx_Q)`j2yme8V3m33s@ce!|tgG4<_gCU!zGlOKu4-pt zkMc420ffIv;YIKA_N$xPkHY@|yTL;-T%6y{x~tQ?{4}hGTHs}$@Sf@uFKgkw)i$l3 z#lL)bUo}Fw#5Lm$-oErxQ^;MReVAOepE||M)2hC!&LaP`jfW3Xmw0(v)%Vm5WK54? zY9U(1`oUlQg~D4I$CW_ek?pj?Mkk)f`^Y)`;i+62dE>-SU&`+;bg2I0@W0>t2w04(yBpf1~~=N zV`w+^V7KHu6^CF!d)g)}P_(Dcb)q93SR`tG{}A zPStSrE*b072$exUfcJm6x3CD+LaSK6N2=AxSieW9O~?=G^Y}!o?a3~YUNLG<^7th@ zJXRe<{#ZCp9gB8heLPN$^>Vjr@#-Yn9^0QpbvhZ_pCt85a(o7?_ux)emkDRE70{l- z?`!IJ!p`$`vbxR7eh^;hYL$z4AM8)__RI9;#$IBDOXOcRI zjOmrCP9tM_dDH?jmcPmB6Ec>+G__@0JRX*xbhR%T%TKyG0WIyu1axmdwjP z%=l5i_wp9-RWhdc6!ngmyH%U&v}e?x_@vZW{-&$V+VS{#*iGnPNYy@5-y$CeSE-h% z4kdpM<#7x9T%ASU59Lp)mZdHrCxNR}%TZU7C9(Z1^>^~?aDPbEW~=wf&A?TveW|kc zc>eX!e}LbE)YpZJ)b}g!{=--5o8-$-UlvvUO6^D9E&2~%sY8UF_W3Jyl$T-twHoT> z3)0u>I4_4(%~e12a!l2QYKE{=f9I(=WK6H6YMwCG-!;OQsVlwqhi|T``Cj$|Z}aj6 zX}P-B%OO?2QIB{zrs^v7tgv(b)#~qLJpVfNkuaXWUif;|^(s$4=la*H70?R*v`-TV zuO{qK0>H0;8wnS%NxjAMgPJP*Lz%bE^Y_{E)lVoK-;dj%W|Q%Kw~guna=h4ovsw+F zWBB+8&fnXt_7-;HvsoSJ<$eL1)i5;8uic`?k#T<47Igv{=eulGCzEmh%2st6c`4M- zUBkDj>&WZDZ-RHCslDH>R_-X$N4Z`RzCaniU9BbTQ67MYfg4kJ+FAa5y+dtD{v7NE zcOd`vC(LIE->G&Z-v>v4-y&mtcBuo&7@u9LKY8tG-hbMy29kGx{n&0bid^Lm5C1_; zB)0+ku^-e_VJE)|)UZzcdYt?!P~(LQ80J@@no7p}+N<6WhVi>T@HOY~{p!ls`2HTY z0Itsyeo*bw8C?PThf~52sq2KD{5+~&6n66SsCwPY{Q{1v_r07MeoU;d9XVeTbzTb6L z%_8IbU1!w=WSk#(PF+sM`GM!ud|{7L^8w612|ur1Bew+Sg71+x!|#eq!!M{cx`^~s z4uDsJ8wxw=bx|FTRysrat_#1Yj-~D225$pLQ20`Ko-bmT)OhmuU^n<8X8r0jod|-b3rdAeq%J)_E7#ZuAtLk-O zr@UWP?@>6G@9S!(Zv1#o`M;s|685ly0A8QnRNM3r`NLxUUF=-=AL?rIlt5no@2CgJ z-+l$}TZP|MyFkB}j|Y_0f#<>S$Lc0w4_gM|e}_L+YxLyd&i&!i-V#nz6lkA|m`fW- zt_p_l$7=rMU88w;87+`}7!31ewJ7p?FdhfZ9;Y7@ygf4r=gA?(Z_FRRTE zPFHZgx34yf!g0R0ua+yEqtt?avm7C5tI*tUv}(d7u67ss`_<*N*}^~gVEa;D%M(sx zFFk7+B?E&tUin<4jNNOizJVS_GM5+J?)6_4?ZtI`3a3^pq&(U`mc?&i^5o6__0RX zRbf~!60R#YqOo@DZ64oDF(LLl?>GnQvxqiY`*+dbL;bouqOF!ko(uDY)<(3~5(Z-ULzvg|LqtdIA-U7n z@b&VD&RUy67+$3Yd@m-VtG0|B1?h1oqKDROFoy4d{@kO8H?*1Lk0IPQvZuCCID_V^ zzNxJsV|(zXww{dhQG01y$T%OhmsUW=`K-OQ17w`f+FLs=?9>l^v@2vRUvFu5aeL}7 zyshyskU#5By{$EQPgueCP2Sd8k@5YMx3$;F{C&|Dfp2SX3p?|>-_eGXvA%sr3ngQH z+fPd*V}09COC#g_@BZ3MGS2_*uYE0?q2T=PceQWGIKTT{Z8LeoFj!EW#| zVW&PFs9g|t(r2)Cm5k~0p7s~+Pw6vMD?8*_`uMS-S_Lm#k;AlB!ub10#mEs_Z!g!2 zd|wN}?Ug^EoX?lWXfeVbg+aOYV`H=w3hyJr$7-qMfnYy2R?EfhS$o*NMPz_>g~G!j z9NzcVZjt@P{z2LU;WT9)g}a7gel~*g+A%UnQ-wWBTX0WsIpGo&>)T+hiZIrn10sX9 zhG;f-JpX+!M0=I|E7X6(B15$|y?o0I*9HkY?L~yPPdJSQ!}&%>MrbpK@%T9HUzApB zICmk#`ZP)_7IyM0TDwig`Xp9cHUjs@`f8lk7uq@AzZ(e0A2cRjJ0=Xjw~O{LQM)JX z^iPttf4$r8vAn}YHyRVKlh;)LdO2wM_K|I@86HK$z<%$ zP1I&M+e3ZhW)roq$k-p7q%9_6e{7QWEt<+-s_?8u^KKg2H)!@l)_c z3di*NRQrvL>Gi30n~eRvY1%_F)<4rU*C@~Cgi-;uGunWgO%_9)*4!S8dC+1gcM=l;spwvOi4@7zz>+CE|D z{>ag+F+AL<4`*wYg*|MAxPRtoGsp6958Ds-DC6#Nqz=NsJ6j*v(HCxOHDaHopC9{EYv^TIF+%H#ruzGi)|-s=;~i}P znXixVdemKQIGL}H@CG=5jPbpvMUXMR_q0jE1?(R57h#1|?K5%)IhTyrb6<1E;r0Bz zgU@gJOIu2I@8s$IP}@u%k_gWOQ4h77!mwW2Bc6W`wfp21U^n<5a-s--q)FpMdMJFJ zteZX3Y&7NXW38H(2Sh#AS_or*#drAMS`XU4Y#5Kv6Rj`V1pBck+FGL(nA^b6#NV0fO?eP}chjJLw_oG4NII5EV z3mNa%%KAAn-mjJQMoF0dJCk|-y{NY!9|gO?uL?WqS4HnFT;zHL=@%MNO&?Ci_}9<_ zg)#o-$eOx4nIGT7#-zjdE~0Ab?S(U0TX-(tDb?1Kg`MNq(Z>rr$FHZS2|MjU1N~Fn zpW2HC`mE>nZ=f$0E^%RhxRIX!-2P4Ut(_l5oFBImU;jg^RuNMN$&G4 zFCVS+@#JA(Kh{d0D(s|ZYkjM*lb)~W`^cDI?et^99<~koBcT!P^+w|{zj*mGM|RNT zg`M>8sApq1^`|=OTmKXOU;>sWyuOb5KV-bVj(X(}Fg&vff8Oh)*CH{@X2Qs#| zuj$>$*xtUTzeP6x=GWg@A4qNl_G6uOfAYf(ygqqd41Z#^=TjR{R>*bICtL{hS{)SYJ(!TgE*^-%fsU0{1ZeD7o?^ z?h$$k`B$i4^P@)USIJLW!|b!DQTh$?v_U>zWq@#`hK+17RJ-&OL6)U^4nlP7N?&f zN5S~$>8Nq~Wis9msAN4# z*oj|?p8T9A=pMB4bcBoDjQUXjA6fH<`I6vlVdwlG=?8>8j32+yn51jz-swF_FNdc3 zZIWJvjP=_jy)GHAH&t&+#_LVh+Xy@7^XQ|5o%&^syc<>|B3_zL3o0cb84k zR|`AkVT!&Ht>F2m=sU=G{wexCvZo90?@ZMXlfMMR^SFLm*ooi&^lQRS{65tmlQDkN z^|BvhdBOVfGrbX+$M12}4E>R?6Tg|dks;Dk=?}jb!t=0Rf&4xgo`>~X!p`|K_5Q+` zAHPLq>4~^K^#`)`kA$7^{%rkY+@98V$<}8IJI`ld=sycP>$QBLpCjY={1^I5Q?UHu zdM`P8TQZKX&(b>!JL{{=(gVpjo<3VoC-d?AL1Sj?P?+Jbz!&@bbM;dqyugLe2lMnZ zWPCoDr=KJ9@6Ws0JpDJ}boRqJSRWz!D_xz+c@ng z_^i{fcDz=eXuYZL^gU!;Z|Xb!AQ{KAHs~kFIG(jZ zzevXQs5a`qk#Rk$jrwgej#qEeAChsrdXw(@l*cDS!SU+Nx=P0J>dksNVP`!3d%X%7 z$FsiI>ymLiYm45LjN@5b^fqK1Pv5F{BI9`aR{ag(3|g;hn?8Vy>s4*jN0V{As_l9x z8P}`YuEz;G&pSKxslsVu{k-~tJM@`k{C!}DJ_pUdhWn*m)J{E5*vY@$`qk+?Jv{8K znlPUsxGIcccS;`jX&ez@ct6C|3jkp>Z65WK66bNPmbQNx1WLg^Y-@5=%4g+ z|iu+Ujbwa<5R`B`bg#M6>&mSlBvRVB6&hby`n}nVE__TgN80*KV zsI&T?!p{A4PJe`^_UfGO%Es%#_UfFjk+Hovua_fZdvRW`ChVO5g8rtkbA6Ze{=!cC zRHRQLWBYVjpC;_Y=dzytA1_5K8uaIi*kye+xf<9F-b7yXH*YVl=sU^ZgZMRG-YlV2;zpAU` zcSZO${RQ$^5q?dtLdO34b-fN5`|sEFX2MQ-(WYm(R2IX)rSf@<>kH}DxAdzo`m<`qW{vB+5CK1A5V&YtiL4e zobPY_6=5g7f9u_ao#Q>#2YT&4CHh}|#B=*IBLGe1n;8*gEZ@vX5O$95GO~r8^5kRO zBlGeU6;;-#HV5+$+ZSJ>3mMxN+2}3o#9uLj|Kmioa{2&c)1wvRBXTh~3p`cWiH~a3 znv40bT!i^A(Yn!yTppYYZb`=R5W{$tjN>7O(T$AbA*RuXjN>7uF-X`spJilVIMoks zJV>_AOudBd&$yk10FbKcd0n7(z5Q)Eovdd4L(rf)stny}Np*Eh<3#gFgAr@qlb z*eNd!jrPxlH#FW5#`{Cp8XJ9|+rF_e=(+718)IpE-XH#0YidLbJM~RdBk{TYn;EIk z?cdB;O50=kZfU#*E_N`wgOMlfGj#Gsup3-~ z{0M#zI}zR4s76+T89N8APd+%1ub2C}@e=tgcm=pUd9RC)$96Gd$)~}-tc$T-*twpr z#wjxP@4Fgz$nCfC@&2yHee(Oi^6{o_M!f}i{rzD4cXD8N<6B{;{PZw(2|L&ShH)6J zY=ikeMeGgZ6!~Yc8(bt@z?$&$MfNn*g_z$j!S#E>dmDyuCOZ$?Uy1HxbR{>0=ds~> zUt^50bH2BYWVBLcG(X?l#w2oMup2y;jPnuSF=mo+KH@vZJTlII>u2mH`2r0O`8wDQ{)G0&{0=halks{& zjU~7}T~Czickr|_MRc>bjtN5}`k zek|2EL*CJ!_ZL0JW%7Qo8~i(2S;P0AY}_SR2K%we#uM`UaXdWDD7zG|Cm!s_(hQUQ zvxi?#y5UDY2X=#Nkl*s*=l|GfKpqZugI^~9BI1`}v?CXb_+=Pfgq`|yicxtPKfiPR zQ;f;NIqbtzkp3}KjcLMJ!gkCwBW1aWFO~NhMyfE(Ux0tE95chnelC2bu@tSm-Iljk zGmX{ckzg2~GByc2_iLunj2{T%gZFE;(OlT6kG?S4lCeJe!stTVWBJZ8z9wUS&M_9_ z_7vZ_#wyyMk9Xvao@;zZ=HneJz}tm$Sfh%3y!cDwqOcRcdB(qFjNg2t>^D5VSz`Mu z(YZz^Vfg+0G<+ZE#f3(WuycPcGQR$gSD}@MJ$U=K$oP(2<_+HdEi$%~d42pSB+n=$ z^Xsn}lV=wfLfAR}dLt37#ESZTz3~xwqNv~3 z8yRH3RQ~&8zVR6u>$iMkmaudF?~I*f%#Te*fiQf3K-BM>jis3`uqg$4c5qOAU*R&|74US zZw9XbR}*&nlLw4cVGkSnEAMX|G*(hL=FcJHTVbdDIcyvg&SXy^{+(iu8YRL`{Ei#9 z{^Nhp%99k{UK}^1wHRM@JZ~?K8*X7I{ZAO*P{dd!tNyh8HZLAdbFl99FPyT7R^D%#X zVLbA+T6c}=XmLNj6LZ(_7j}L>xNqbNJL84-jcvkN>@T=q2FKht3WRgmnN{%pGqCa< zKYk875X)F#%wI+?;Y>E`8+d;z=Am&w7_UDu=CN@c&BpHG^NId8ipl-K5ncZ_A~%Tm zvb-PQ`{OZBjL{p>xL)Z~BMMFR$x|bh!t>zw#gAj28e=!%_DRQK{e@x7oQhUHNP_h$ zhn6+>kTcKl@>|yYS=ghj0Q<7C<_QWPFp#eY<7-}^@HlYI7+>=@3ST`8o-c+<<{uQk z9sEU%WIn`jX2b7=^I~MP)@F>)$1wkAQH)|9BOiqR#-bR*?E5{2$3lAU_i>w{r6uw#XXUdyrDZCFHf4)?~yh7n4 z!G5fQd4s}_!}%VC_?h=8{5rU1jGxK2@c3o2z~PLoim7ORM!r1&-fxPjY-W?+91QEp z#Z)o#$!Ql@?YJ2D4fH3+=K7s##A@cw~Ff*`MINUEi+5FMCI!noUdKm zTujFGb84IG$ZHz&`=_?~9XSfx@4Mh_jQOf(9nz~uZQ?-VGYg6 z%DHWl9hVdKo37Q4Rpqp*y*PF%m!g#?gv#I&Aa1MLR`K%$35<`YkQZeBmrMcLZYtUTA4Pr0wh0VysDQE0gWS z{f`N^HWl*M;MTEiOn)zTjeW&@D4fN3_>kCkX6P=yKc?5`u^r7~VOS3g=0|)L+u2lh z^YBbosf~**kL_Z16wY81`tbfhH?xPZhxteG_mjGrWq;t?dss#^AJ6Dvjudv@cY4DN z6;5M6Lw(veqNjOEI13hQgZF7-dzlY~Gljp8?QPa8;K#%8A7cBMUkXG0_y=P@#r8G7 zB?rL$He7$l+)e%yo>y;~{meaRnlI7cEEdjUHjJ+?(fgZi_Tcq>2J=0RzA(TXDxAfB z1|NwXXu`?iuh92MARmu;uhd}*pWi&B)L8+%{To_poNqO})cAX{f2l```E4Uhjqhi@ zUuyjQc$8xk-?tcLt`YIeVP8Oh_;l`BNMlU>+v>Y-a3_*bviyFAvB3 zeHgM8fzX9E^*=Y$C?%Q z@#A}#Z*86)ab_ps5*Mb&I5V4!>6c(Wr0rk5z|$+y?6O~^KjlxdIZYVj3+sQI`DoU5 zHq@VbikbQ&p6@g0Z@Ab5v(W)@ePX^=b)N}lo1eLJ*x-8beek#s&Dp}4>^;TBD#cAS z(+`UCu}Lq%_fF%|%oc~xmwUQckGTJtk>usz5pkcH?!y?~bqlo5aWl-(!p{8pO!H&m z37_91qDf_o3Noe;134``m1GgdY#D58hBSI|+M~jqp4lAD3+g3*-0NQ@~Ne zMXumx@H|pG+lM$}AxJoMLQ!+}CE+RIGk6hEFvc?kJ&ByO3RA)KKkO7K1{c$RRQ@+o)^cqMKR zUkY-u-{O{=%}$H`*#Z&%jX6!YM8)=WrMZoa?ddA>D4DmvWyY;G&yab0&s{9+Q5yXO z?Hjn!8I0eYAJLJ*B`Wp@R+}@(*uJkeKSxu0z1m#rW%szX<~B06-|Ng`GH<`Dj9X{+ zIm^#i;_5qyx9984Kr(Ny>y67dPmy_h++y4Y^RBSdes3_XbGScm?{g|{FdKQf%D9c@ zY%-sp85y_9JRl6eA3=TCdEEDAm-Br8Otx(Zd>?k)7V`l40OZ&ErSENdrY zo5me5{fl{cChG^@J?@Y>mHfe6_#VT!U(AqSF?{YE#?Fj8X=aia&*MIA&L!)RerLv= zHS@^J;dqzFoi|fTaQ`2mzPUZ_vYGxHde;cXeB!T~r^xQ#VZFKd-_2TAF+4@Y@1_|@ z=IK*0{f#osq8Ul*qP?}0f@IEQt62;ZBIe_*Z>#`dUt z{6n)qID<9)nz6UzADi`l$K&1dhxKUVpP18xb66GA#RkUzYwjZ#)q(mVj#Kpy-VtgjgFXN7rrX?#U1)yr$*D_OJ1pFn-FIli*BnjAFP#rDNl zu{M$`L3$pEuWB79SAq0C6<^IN7S2%C_vPcEHLM%t-C#df!z%L!zy1v6)=~bvRMXPP z|APHkO{*3e$9HR4jmS8@Tgz%m#_{3W)~jS3AFge^Oa9rz`!98@VdQgQH#mXJ$G0!V z*R?hY!}^j?|GQXStH*5~KUnXh3Vf{%!bb~dut7r^`?hjjYd1N-*To(;t8e{{rsw4b zmd~H!`hmUwTguC{hQnoO|9F)@c!*k{(ZV;*2Cw*n_2Q59zQ4iCCe6e_J7H$@mzRwtASVe zjritPr{}_3SUt!e!}vnY;VrBf@+|P#VJ)l_ul;jJw6vx?w|^^ZhA_6LFdyGqjN2=z z2l)6wYikvGI@p)Bwlx^xD=~e5Yu+u)iYPG&c=?V8o5qs5Y zFO0|A@W!jwZ44LfrEl3zR`>g2dl$BkuUX+_-abk`uUTJ{dHW{$bhb{BdHXoR{kkPR z!2Nmq$Xs2mhQb~e@C4ma*l91jT0MkwSo#~VUqV-Flb35Jbhq|-xqHGJR^(s&_?hf? zXdfaIdRcpfv)JK&E;cjaZR?MO&DVtPw@O};d!AXAN8 z9suJV;`~@O+<`Y{im!{x(URV4Wj3UIgVg@k2}b7mv3duBSudB&)q}COcIT zzDJQb+486Ge_*_zPhz^2>*WE78CH>S7Mov(|6V`UD$B}1`e(6?!k<|F!xrf`@)a=E2~^taePsqPD)&0y^K~? zHs|Zj=UMH@3${b4P0X`iC(mvJlf8TDgl`0JDtB?;0 z=djm%xLDVbi>*uKVc^w?i>(&EJbtj=4dlnM%F0HI`p58D zWu5bKr=F{=7P2@$)kkZr1TwFW3KG{?lgYflF8QprW|Db%J)F4C$`#IFRiHn!qjA2~ zUcuvG{q>!d?&X5S4c1{Y@1Ixq*=Su9E^_UI`s+gCX6sKfuJ^s!@=^KmGQ{{?zP#D0 zEbL+ZA^%UmyxEE+cL5iJ%W7hKQC`A_e{Z!xQ+>YGnkwv!$8WP{3wzkR#k@V;X6+)E z6YJ@1vyP#~@optszLI=80y;>pud}R+zQ2Tsy|OzvuXP{IQ}j3ly#1L5yqcxnWwFKHa}h# zy9f49I%5rRwJ(Q$5$fNVq+hL6;Vj0(6O(?k>Q~_5IV={=pPF>t>gnZAlm4)Vlm92e?^qv@ z--7Xh?4-Y}{|P(w*CT6_a25-f;rD~2N7i-W4CNtQe-V3Z-66lWp7$RgTaVEq|Dnfc zseU{@Y0AT4F194;vGoGk9uB`hgR2PR{qM*Awz>!xu*Lhr{r9qV17VNCzyI#X%Gxhe_$_FU;r(X29fki3hWDH8 zE*Q>ud50Rq?nUO;Gh(=8ze~pNJ<0ZPa`a#rPfb$nWMSw2H0%uF0@ploJj0$!?kkRG z*qP)nSMuYVlwJkCk>YrkJ=Y0`_@7HEXMZbP=&A($0eGUe*9dzUzCTmJJ||q_!u;{G zr&bc_LHS?Fo+<34UnP5@~t^N`(bHeJb0V$o0X#tg>AoT);4XFWL!}`SA-F z#=p8<>qRtPUky7!IGs%s*I(1#MD~I5lo?dB^m?&;)wU~C;rn~oeP}=6iQ0Z5jQ#sr zE$i6js`Bs*r3_sE)uj4%72y&WmbdzLL-GYt-s;=0kg@zVu)C9adclgzc7I_k@3)c~ z+T(=Nliywu^+F?|FB&ZwRNejhh+kk^H*tu7&BFFWlAkC%=}$&)?l% zBb?1%?BZg5le^oEYV+-#^nJq~Buw>R@|*S=;X;P-?QOTIgZYEk)7$Pt#`yQPhmbM; zz3o6Urblo4oUn8M^|h}GJHLnZweJbz`3EQWwR_dY>$$at|328yju0+UF+cj-@ffaP ze)P9Lr11Xm{H%<5*G{K!fAHw!ckSsE{{4J@e-E&~pzt5SzHESTONcf|gq?1jP} z_A)p(d9;0i!ts6&u%8M$=^x;fM|11|KELakFEx1HJ1pM5J_~;b#;d%2D}%SU&%*Kh ziO<}*?(^Xp^`3W6*ME*D?zdbH0i8Okq6V`efMuB@rJM4gIzm}Y8zelbL_s_0mk3CWtzEiXV z=9eT-w!?%=)R$p@m>+A$344^TV3;3kPoVJTa6FhFYfq-|9$=UsYkx}N_g67?e0aK@ zMd1pZ?<#m6g(oEP{Xe$zDEwovAN$x|Md1%?@%kyl{*J=`1^coLdpm}^X2SU8q2wv{ z9@;*owTs0KnPML#PZgeOpQ8Pncje*#v)#>k`goM?!k^f02$!f`>o5ra)P9FNKzN!x zl(wJwI^Tb~J(Ijd_%nMSngzr5BU{a|uadun^N(zmY0EG3^OdLrMS5o07044r`eoU* z$(UYQc60J8kbd)}Ec+GmukgHoCOOM~O*l=t3my=aW%m@u{2vgNZ4bunU9UHUuLain z!X8O}5C-e%C+9f#qlx)DtJIjE&y4YTX3Vc=#{4O@FXl(7P0WvH#{8IFdOl3=Ii<$* zo?B|X-Y-jy>G#Z-e$R~Q^~@OmQu|_hJTs=pJUhrM{eDaS%1-d|&E&7`gJ|W^asK_x zT>Au?^*sXPugSUgujCS#U+^?}fvvRQ`JKUP!TJ!sDGTjN0 zy^`#A66VLGd~a_dFC7l=2d8YYecr!`j1m zbVAAw`)%?*INrpRUG{MDn-D%RWw#wdUI^oj6H|V$6UY_d_mhb!1-6IW<1zOh`!n*A zeC|T~OJV2x&wK4fWc+JF)wkSollMgXQb@2cM2DI+op0eM*hx^m> z(U0~MVW)om(N&5;dtjK3q7S2!#_QCUa;*WMM@*!|W%8zzq;WX9*&Nn^fCn~=M zzIeU^b}QUooX?N_Y+g*j7?N8YKFkHd-pR|XNG5#m*(PWI@DLa&m z@jGQF2s_6+ZLh^}I{z7a^MAaH_Q&fvWA7*9^_;PflJR_J?K5ON-&wm@*g4-hyVfh> zdKIM%??0Zm8;?}cXXo<$ zFWDo=-++DDB|DJ(z6dX}Bgx}Mc#)k*{#mrYm+g-Xj;f^5OapraUP1Eb#G^ze+tFd^zQ@y;2-6N9mBq z*tL|u?Mvi$grC?IUVC=^_fnqPtvYk(DExiYCn^8fy~zB1)H37$vHJ^WC~+egQ^)^n z4<)CAZSWX!UOkw9FrK-?$W`I_rye*?IF0e|Dz*ZTr|_xZ_Tc}s_a^W*Rd3+;+WVY) z9bG3dq-V*DP1Zk$vc3#~pR&z}X1GsOFV z`;7`1g_@}R3a$B3i1Bv>jWF>Sz>|Q>5SM`Gzal9~Mo;3}zz%Rf;=6;eA2cf2xQqA% zwD(cK_bG<&trdmuYXE1UToi)!qz^|X8{=I3*r)VinYvr$-euMkZsbMAamBFT3hVRm zeP!b$>Qj5X$T*|;aKT9q?EZ|p2tF~U;-loR0@qS}SX+?;`^lqBqp9Mkn4|PfV*~NX zw}f~XG+O2gTT4SBLNv z^QeoB&BSj(csoXwFdDX&a$GNLSErPbs`#*GK>mL*sijf!jM@}5fI?dYqSi{ky+b#htm&lMRR=T`8%Q7XvHumKO5yT=67S`(l)C6 zsQxxJu5fY9(M^r6$f4;_Kh|_>X7nb033xs5K;mXlKj8a%#&F`!z)<;(QN+VbNqGw+ zN}K}>-`g`DA(r0*s5`o)@ucEtNZ$9;1b7Q zwlDJLKl)J+L2hICZr zznAN2yifjN_`Qq|k*WUlGPb#RR*zmrjdm*k=sbCEqb_lcA#%Rc+h|N&p^zr}j_zZ$ zCSDHX<#6Cz6t69~4)Xi6ls-lZ$p;mN^GzVXU2!y&20Rvch~k*YxDC$RjlRuz6XoI# z;2FT@h))2|8GXBP!%Z@NQ85|#)zN*8iNrgBmjZ`wM)_*s_eb|LmMb0`It%;Xr78_H zRudaAf9ikNK;skQo|R<$?=;RLi6?jc;D#z4Z8#S|1h-Aaoy64wk|$4I@1{F;vYvxjRnLT zVSL$_JjOWeVv+WsAv&UeQXWcs*yuo98RBcEjWebb*9HE)++)T=ouvL+t!4#z9_(>r zoZ^@`1JApXL${!RORkjj;m3`0ilf2=E|KHD5I;X(mghucWH*$*3*k%oz1@*(Kz}Z|bBg4sm;vK?)wGGmK;rid zOfcv{XDnjOr-Q54>y)RgCFNN_oYIC|;}KcsJizLX6|xYsPZL za9#+;yGo-M7$t6#{zt{5ke+DTBBSN)$SJViS84QOV?6O(kdI4SVieHOG4~!#yF@Bp&*#A#kWo*7v@&vI1Jhi2* zH6kQ$dAkrB(mpbdC|<3VT@U?T+6H6f5Om+M0lZI@_K9H(MSc<1oA)JeGKLVJh5T7q z;ZtJ+@qU>9?n~ZgR3C==JFk)P+isK@jx4`xI6rNN5h1>`p5&cI>If;HAlgEC?@8Nb z3@6T*A$hOyt>UPt4ek%69WWlc8~rOW5AGLD`_hBh64CM0g{?WDRKNv%Z=Y#%@=|34&Gf}?zD2$isXN{^^$TvcN zG%Wo$qeBFF$VHlnrR(Nt;b3O4(z)RB|b3d`1udPlmZkCTp|0jrFmce>a9 z^HmwG&8DP3Sh>H!ypuQp<6-}dHf9d-80BAEbAe(W-)=JJJc8jh1ox4yH<=$2<9zXE z^E1W#yxQK}k8(9%%*tqQUj3+a&(Fgh%npjj3K`y*j1J~F#XNrAVm^a%<$ip|E#?Yx zkI!?R%{t@IKYX6+Vop&!NmLKO`)e89%<7M!9G?ffo9V>z`RUz^?&fC2F(G+PMh~;% z7W*ryr%IIV6RD3`y2=XfC?Pll+)R)g&2Q%(4>k-T6vCSEM&DM&!e)l(T zR*d6|Bl?>?QBL=x4KVvDj)w4lv;pQ&kNbh<{XWig@zIQd=0h$%nQ^B%MKPb37;LUZ zdFZHWAA`+}C=dM%?1;hU4w9dN{_jl25c3OS`8=y-4l%zbmfxe8nLNZiLGI=EC>$}w zJfrwG%M{~P{;2oQi;TX@oTPYyxDNVhY#kosfAXD}XE znM2L-#B%;pHglLMo<#XLXn&uj3^xtMQ4x*7^MA&0b0Tpn#Q$W*-DbC^q&|Fa=P{U1 zWZr8oSA1B*=ePUJ*hG}y)e4?RMvO9FB;H(2i0YYX=4#?a%VGUEGs8SWd_SD0s+}1z zi#(0)uYEwuV`eSIT;5~N`aW)|c#`=31y~R2GS+P8;)SVW%{1bsFA8yO=7Z)W7dOj% z$XrRh3*6T(_K3O3#W!X?Y93L{;Xh`c^zj)NJK`}jG)d*BYF`~QA2<8DxV#u|-s|FS znNOOVU3@g-X>+%W`(#cskGgnZ<`nbd$#MVh&YWgec5zzfvu0<-xc)RYbGErb@gxz1 z`NiXzFPOVr{B-7v=GW*xRO~W1FP$>aJfS!mstoJ^pCNgug6xl9GV4!K;fIO?8^F^Q zuMOez<;&*J$f735%ci_+UiysGpCqn^`RTKnFPoPWw+EgJT#vW}>^Cpz@`~9)aa6qa zx!f;)#T-byXf~W@&zx_jPL=*e#VDw+3o~CgHxuhHe=9E*n02P1ye9OgOEVXlQ;6kv zv6p5pHcL!L`8&{FKFC~Z&QZKt;CykJS!4#v7sLGPgUsb-xo45L!+zcR%=gWCiYJJx zV19VK=t}by#oV8-GFK_a`tnl$Rpu__&?czgE&8u94=9d?b^^Bn{)Xhom3*yvisWaM ze69JbV)p+-)0!#cvs!fRE$`$1&}^re>*qSNvx^{m%)t#jgUiSVE*-k z*lM;?91Ya~UIu)#V)lQVIaD#{?>6&(kNh(;!z2I99HW@S-)=tU(cf-P^yqIlr+f5w zm~&k0h#lqv7w^p6X>NZ`=EvAjLs&1_R&bBGU-1Ny4fFA1nS0Dyv!#53xEj{`&SrjL z4pGeMIcOeI%;`C3hMt%DQE|K+><4CjX)aPcNqpr%`_DRLE_ZP_>#+GPu{=*7&N^yV zoFm;&5{(xK;BU>&#B~*)Fk{4LUx)LT15TOahtXWYp`u|e@U(9Qf zLm#e`{+%xmI6MvYC zUF-nA=i)X6MR=WJoKIBA(!*aWo+Rc%`aaDJhEKZqs;s1NqZeiRo>KDbvI>OTDUOOe zVL#;htb*a{bEP~gK2!NsDBO1*a(_tA%~^%QOolC^in<-&I>#{5_W`i~=rN~R0(c2@cDB*oEC72x-QXOesq z^j9;JD}?8gd>^nQDufr1{5vJTEPN1IG=TNe_p>ewms%*pA1j)5lkO{q8xq$8{=Hnq za2Mj|%EAKWK|9~d;@u# z;ws_JZ>sc*ZjhcWSyjU&7NfkvTzNld)$nxU%OO4^wQAwuTPTe#7xFS50IE#3`VjhpK2t(vt``ygA-#xfl4U)tDS%26s%c_~na=&|S>8rv^ zm48o(Qsv?MABAd%R}-Ir`M_6MwZmJ9Z-w)_t(w&df3A3vSbHmc|0b($*jggf1J6%z zejyO4A8t*&v7;u6MXn1!K>Yd*aKA&OQFt8jON#}#ZxSB46y4A60=XS&9^Osd2>Rn1 zkrv@|#BDx-=l@8{@btH({sd7P^0RrQRd}(B+eTW4H!FTh41@W7&&c(@{ArV$et90C zM@rjVmiaRv(k_=Vf7<)pcgU4X_ote5%4O;P-bm+MM)%#q72lEZ#r6=3bPv}-4z*}1 z_ltUj8xnVc_1JNd9^saXCxr&}fc6MHkobPZJ;UP_uNBGg{5$F5-r)trQ+vt!(kJ{8 z>Wf>Ueol|{3GY|@l;XLOJHi#0$@n0bZr(rKRPh9HM{&4cs`;HN{?HO=e`iQ8<9^PN z@M@($DfBtapJx{u65dQaqayMi;)^RGA0hsc@xcx5Cfe3OemjyxD1;o_~4hr`dhcyDA}c$66fWc9rIE?udM;iWnG$a8;*TTK!h>AA zH8LYS*~NP!v%;Ua_-JHKc#n%uMqUj6Of1hAE{x0zC%=#JkzBjj%VEdGOCzs@Yq@x3 zWPZ4bi$9LM9=^lHTO$j@<6XQr@@9Cgi;qT@hCg%h$;dn5lf-hrc41_B_zxG?F7{ry z*b0oFlrN3EAFk%&m5~+U`Y!%BvMQYF;;oT2;fGzkH?l7LzKf4WHiS32_+(^b_$aYF zU%4={Ief;&wTo>D7x)0f)`DUEypO?~UvUFLm+J z$o}w$E0AVhX)a_1g>4|>+s#g-A=*$ zq|lM@DB}LW=ORbKImDO2dP^XBG`y7fTE*Xlj}cefA;UiwK1JLZI3x8~_!q@bg$BPY z<==+2RWiL3LJtFHq<$MNs2I=N7K?rtwq0C2dNN$r#g|4;h3mQa^62Ssdl%P_{v1wm zaf|4$;em=LsP`4>M}H4jT&=4a>bBZsr<}02gu2=!~?uTm$9WFgn{E`+eYmFm)eBY;nH3juU_`ZAvYY)oR_oB0- z6|5rbReVHGn2$Xiz0BI6c&#W5KGjeF{-7tba3UT8P#QpN0lH>-+Azq@sfM?b}C?9orLuJ`Eou)28k zQ>|Ve{Zwm!N57|azem59mFdy%Wj*N9*F*YEkpT{Ci+eO%ASO?-U4kK6mWtB-rT*n#*CMW+4D{?`49d4IFNmF3YNU_I{9 zA81YT=nu4Jy7V=1r#08bZ$|I5-Xiza;5^8(=pgGoa^D>IP2dk*`fvi>+T`L7qJyn{ z($ zEmHfp!>m?{;r$D>e>=>&ndD>AO%6Tf$NLmR&SJ3e=@=v;NxLFe!#`>{bp+{ za;Wh`vcJ3AdR%cd)DGAYcUzN5UL+{T>wB!3B(Dx^0MA3Y3f~a-T1#B)i2JOy8}QM#3<``l0P>@%12wtTV#1eL$3on zVzhOUVqDL0M4ELea%j*@sh@6DCjF7Xj!3tz^yp_;ja|GiIn(M)?&W-8W^%+zCHHc^ z0N>lO`jNcsT~Z#k?jm`0U`Ir)`%zBilWk@Cc&v{f_wghj&r89QPM7@Y zx-sjB;K`_xC+&rFi7ytiB|FIt0&K(Q(!s;+Km_{l~37pSj!T6V^b*F%h+;{0Zxv zM?T&PZg=aCw~8o^i8SzkaI^7NHIICPbrs2-i==#l)m|~D=Si!FNB>Fd4$?oY((|MR zh2dHceu@~^gG*I-Q2X^toHU z)G~ZrLUByAR_R%4y|_o}b9&yk7AfZZecO6RaZE&#g{YJLwzZP@SW(IESnG-3hV<3R zUS@4!{fpr~ob2V+7mCM*a&DC0CwSNTn)qqpmx0fre&{glXSB?I&kF99@ri{_1K$W- zMDgK*_`U4+ESng=m;Ih~iDI}v>p}T^`My<&_%>hzxF&I-6e(X}T|-{ZqqidTy)=pf<7aqEC$ z-fvuEiG4D?Yeny|uqxAajnzl-D!uJqc_05;>jTA6@!(DHzD3t{)-lDa#ZR!FQ?%zt zR>3c%`_%%!=d<3rR56~nNXgz{)j|&Kf%(_WD>jQukH(Gb2bxzoBJ!_jQ)RREmivP{VA2dUs>0DDgB!$ zcCUl}Jo{_w9>wh65o?}e)<4SrC1HLYvqm0r=ht`EM~XRrk6VX`F}xF2&99_B`~SUF zA6YyJ=cAsBn{>q*6!f0{ULO;sEdv!VZ(oqgJxLtGU4?-V!O(}ki8k@p-0Ea_Epf{ zsW=*%0_=!__5qTgsVeUiC}bZcc@XxqlSCo=6v;nV^1}8nB>xIHNffpN-^%c#p-Nk1 ze_g~bqZsqk0UnMlt^xUsLPhO&6?6Uvx_rd{$xygZVGW!G2C@wM%S#28=OK6BC?U)vVn zE2j9`b^+vq7+>2qNRIKf?Y_hqU)vs{nB!~PBNcOeZ9AekCgwqW_hsAm6qo$VY{!01 z@nP)*Jb!j5bFuvn@ebg*rAykIT>2-nOW8X;`lapfJ^Gj0$*1D^@oRQj`y$2ce>uA< zG5UX*-AFOVzoOm7ulF*R@v@Plx98{O!}WgeYq;u zz&=iVEA;o(%3f=0r)7F#;u!Sz)yiIH+r*2Yzpqxdp3<0NH^!RVuM^8JTXl@Jus=#OVJm_Is=*K(vO&Zn5VP z&xi4UXsolnn0OV`zoD^P?Ulqjl>g9J7kiUp_OGkGgXC+Vy$p?YwU4^wQ>%2d#Tk{q zp)cmi@w0~=R*d_#>9HPmHI%FR@Nle`-4a<8hxMb0vEKFq#Zj?#hUDAqa%ZJ~QE^W3 z9rj4#1B(0EM-=n(%m6#|iwa-eA3h^Cz)n?sK)V{o!{>qTB*yV&fPKGW&c6Zn>*!v^ z?={fh;o`SrgY2)7L)K22z9IH$#kfAUCN{(#@~aG={ksc#CHddlB>DY@4Y9lI93?-j zArG||DvpY#=Y+6Z4YOA$=KLORuk-O{#WArO+FPXRaC@I(4)1RJ8;}0o_9@a|2hsXG zcDMZtaW!a9k*fFD1r%kDnX&LNH!lsw9wr8p`s0sjt&(e@tVNgd$6f!Juf=O5@F z*8eoSH!;@tG&_Q<+S8d>n*ESsZa-=E(~2?wj)44Gm;Q-Zy8WU@Kiz)Aqn~ascX22u z!`?#f@%%uR{RJ`Jx1VJnL{|6hFB4hzQDS`GEMlJ|#_v}}>@&pjeEOt|qjn!y-IMtz z@7FhSvh9<^vVIiL$*}{Pl=JsJa_qv2xx91i;)=PxzpG*JxoR{qV9{rc?Z$0`i+oxUn(LpcU=UnpcHD0kV(XoDDdzf$EqL|}5-|nrL z(?8!Hpg1OEd~eE`Z>PKDcHvj;Gm3dVccEKfH{;px`<@R0|*J}N)eayvA z)O^nl1!ewV`iItBVb@p8-ve4{4D_jTqALDklv=O)++L@c_4nADNxlqP-r#0?>?0oe zUi&1;8^C$=!OiyCp;0#nC}0>=MZ0n)z^EIp?H3ocQVo;k;wc5B8hHX_Y1aXzxM}RXzaU zt1I`jeL!(ER1Y{h=x6&IlH>hhXY5lX$NR(1*uN5wdH~vY!LxS2knxL#9tM7|+gZB^ zafgvo{tGM+q5KZu_qzRJU!oZ9lWi{7_kOi2k$f9)lK9oGg>u!uug^JWzpt40xBsx$ zDaQHwj+{U2R8#uT``xg_p_t1{bDmJl`KLLP6~{z#m_P5!(VUsYa9j`82XtqVOMhQ- zz*(sn!}~rb3Eo2H<9L=F04@%!zvRFLEC8=wIZ_^5`4Ra*w|0tn%oa z&Q_0p*g4_Rx166m`j%77!uo;vVLP=HbN)F_J;f8mkMR6*yr|<0QOxPN*qPvQU)-6a z80&*Jri8PESf0NqJf@Vh(d8b#0Pk$~@jk^daS+OLaI@0Rw;p*J=QPQ0FAeXzjw$0z zv}OEbVma`w8J9Xo6?1(q>wHggy$pPhcT8F555-*G<($HfyFQh3EX6S~2iB+Rj49`o zCY}oGN6p8ScP=B&g!O|qV=6dT5U0TNMW->BIkkvygy)MMV=6lRiR;4i#qcqeoMFVX z;rU|tn99yb;?2-MHXl>Pi4a$V{`L2ARh>r_b9$;dPmz2$w1>!;YR){xoSw^_H$D27 zJIhJG7R3LNF_$}QT=FDwg>y(T&o8PwEiab&ae$t8t2=W_N{$No<{5m!%UMBO3eqci zkKzL~|ETU9LZm9Ifh@;IY*4) z*L2!l;?AF%&OpVSA2prf$P}NN&I2UJ_|$YFB**yFbiO6V_|$YxE9Ua837?#m;c4X%=#4E6@@L5_-$02S3^(ivuN~fw~c3;b><8fchX-N8ez}JamYB?>5o4|Z@+L)`H zuEdu?uoK7Bc5ZjMhwqm}MPaS6w@gp#Qg8Px2 zO^P}H>Nq=)DgWv?`$&%YSI0R*a?HOvPOb77KIUH?r@mrNe;uc#V$Q!hPCLahF%{BZ zwSOI_J+XW&nLDPg(~Wp9*EqMi+%Fqb&l%xjO*C-QNq@RJ|Ixtt$|JwlIZ5&y zCBN3Wv4V^*$LBhylj4{NDfxBIXpg+1lSA^S)%>lY6Osj!>%Ng=D2|EpFrQr}8aYEe z^2W}+BrmD_Z|pqmkvDNBlDq);-y@}ov&|!K>g;jJPc>`ml&h%14|Ra&Be*ZssY=`v z8174Tu0mGxl~rR}I87Dv`HGg#&5HSaMk}YA;;0y@&SSK8V(6ayzutM282!KAnTSmO z-{3s2nEh|#EL6q?%>K7^4x{_fv7SOS5$&8a$T+_m)6Ti5QapdRj%n}IcJb$9 zIy$`-^ZM^CPL7Me9Mi>_uNa?aPL1j646H2uIU7an&xIWm` zIiZ;Ab64kA#aw^7I)N(E|CrbS|3<2IbqvJ^3f=+h5ogA9cd8O&`|0kqK-L0kKeoHm zni%`L?#>OwxPH;yxlu8P*WKx)nB&vk>E)6qiSEvDa*zI{IP-`xeJRfHsxrPjzN9$g z6mxu2oQcTP{!^T3B**xJe~K|ap_~+Fsbb9UA4ID2jbbdHTCGzZqngSeRlW^d_jIZ% z=I6~`&LfJse0n*PQBKdBy`1^P82?_*0b(qlUNFCfQyBvwNnlQaHGgS7vP_z~kK^{= z$<8-dkL~@Y-@Tt%Ul;lL_Ypk%7=|ut!yO4STsAqrd7Ci6e1Y*~IffIDN0+iFuhdVP zy6EyLGMc(TdyVXw1EMC}JtX77dgyO}^nr97>oNQF z@K%DLIHR6k;9gHkAKzBM_J8g!Nkm|blj+RceK1%4U;fH`(#3!Ii}~m$?x07<`Bdo{qz;NR86_%sDCcGSUWoQspLLORg{;Q`F=@2457K-b78HH+XU?xH?v{F7599U3YabK~%3=HP zyTkH{*UzuY{}sLD+;+k3@!v2F*f7|YgU=c3Dc(EZlIhfiH(i?W+b2rTpX;6P54T5d zPk#4kA1@znrx&J|EI6M>e<;%h-yciC^v%8>dCEP=2jSfaS-#n?N;4>|&!q|V3HC(Y z&xMk8_@DEi{b&9I&KSA-$@HJ4Kk?_X_LR@}_mTGSwIYrOJ%_SCezV{l)V~^@L*;Yf z2zoB^>-|;kx)1%Gt@`tLd^lcc>VoCV;GHBH@5gmCIbYG#efGLweKd8!`m5H;aG3+* zgX_`1sn4T5>chAJcV5cyiYa@JpDxA~mi7U$SB*gmp2WULZe}2vG zcAGN41L8H`eAH_n6t@(YdgsTB)5-oZ`{U2{|LMtmjF;;_&6oe$gUrwW+QUDsNB_69 z*ZkT8_dh(3@~7MTJR0wxz4rh6_23IFPw%)8kFR$;IKSWay8GwthsWRl@>ljp0b1|n zb@u=Am+P~?y?N{5fAtshho7J0>o5L% z`|bEXH_s#dCaza$A``yRBIofrv>xH-Z++_<|8K1WC#v7P&c@~L*PqMd{&9YBJ?3x*ca-5KE=QIpDo0GOE}mBFNpQc5XP+aGYhRhxl`!1+`V_7c zvHJk+mjrY31M`K~)8g`GcR;iuzjoKc_P4$crUT;>6mM)o`NsF8sgu6}k)!nD>te-e z9qN!;|Io!!TL1XBnZvngIK_+B-+%bh%jf9a%>T+9pN{#FpZ{D>{;J9AqrBedcRvEY zSs}}fO!ZxPu6hOBMI_64MOVyEZiiey>#F^XfIvM>V10qFefZp= z9<1jpd(@Nb{$Ihmzl?X@=bqy0j~6D7`-AO@Ig#o2Kan1+zpM3mklze*dID{a@Bc!wBTAJG0)frCxW<26&n4DeDio&nxG8%W`Ds_cAX`?`>Ki z_q%_C>hXoz_e`LV_CfJSm%QQ=5P$A2o}ajX6zA)QdHq{f$;%5)c{#fK&pG8Mul(nq zy=;8t1A^@XBT=5nCdA%~W6W;e?`}MRBhW0#eX@d3h zmIuY>s$M6Fw-3nlB#Wu?&@0qy*5`K0{F%}V2o1&)`F*NGpQ66=f;3^=tR~HXDE*=| zq5KlqFCHxAxE?Lr$+r2Z&-U(c3?rB;Pn2KVsK3N|q6_4J=y18rub}ue75(RY<$PoI z`^$2#y)NFM{VufEMd>x@ua^S}^w>TqzE=B~NunQ(%Xz!MFg=++5x7f3<~RBq@4r{8 z{zVtR7L)k^<)Y#X^A(kjB(YEBk0y?)bF7@6#PLM;x){&_{rlf%0XUn}9AdRZ>FwveVSTF*v*(Y-D( z+<>^~A-8?}92l1u>wlv9dpIw2K;Lh#I~-lS_73uoL#3&U zADc@50z$?co`S?#HJ^i9pw#%SixYRD{)I8S)5K5IPq90UZ$R|jf&Ov)kptqs2hl#0 zD7&eKDG;{HBG?f=j$={`vD zJl|b!I;X(lAqNDy4+?ajMDCN%3-`jpiN_25gYnjvPAr%6?Y;SYe*SR&*P!{w0-6u- z`H3&a%Jjp%3j3w03uaF59{2{g%wKsp=PT~lH<~hB7`JHs;XI~!39lEhyT2QcU25K{i+v?9 zzqow8{hpS4{^&u~e&BqP8js@VQ@#4Sc$VhFUjGB)dkTl^U0N8!JxJ?9*j{yk;RGlg zUZ;tVXBoW($qgn3qjQf*czH$C?dDZ<0{TZhEA6O4i=Mm%eoX@rS z?fv0!{L$3KV(PE`?wGr;!*JPuj+fuxf17!nZZ_@KO^Tqv8 zZ_8y^&TRHo^Q?IP!_O6*&P3_>U#FY>=XCiwQM}lm&&~Psjs5eR-gcwqp1b4ob@}<@ zckgEo58Fk&p1N6wexBpc=|vOPV>7Y*a2=o9)%op*^|}4AfB$Qf)8{pHQ55d5ljB4p z`y%iS*SK64tA@*T2E>S|(hU0C>*BzTQa^B>z2Duv@a<;#e3N(h93OxDbkVJ+oR`76 z^s_SjxSn_4NEd#_e8=*W^SUil-0tK4$a0YWd*!^|cE0-yEjO+&7pnhv^|;^5yFZNA zYnGpBh2_Ql3ELyXxkx1siiWMRydI|h7v(z1HR0s|=?4YsCy8hUncvCcT^hewANNb* zZ7%98wn#-SV3 zJXsT0(R>O`J$GIEujY4t{;~WX_1trQKj06K`-Q-jm`<;$i%qqqeIPeIe)s>Bx&Q21 z7sL1V2l4qP&wsyqPUf?oyMD&=l$JD4Vg89YQT+Zq-P|tY^@HR2=k9cI9X)4aJ~9Uc zpVQ9UK6t_T%kkiR;(X!fKas2*`UVSoMM zv3oYzAC5Ph9RJ!Bf3|1;IG@>Me^}1>w}9F$=O42_e80O&s(%TJo%H?!yGQ##u08w1 zCdZTG!zTOB@nw_cZ04uO{0>&P6>8KOoks^{1fVc<^)i2dcfpz6Ok! z(x1-Nq`P>&`{TvW@rlyQ<+b)Jw?B#27ZR@<iqEi`JX5}ZpZ%j2REzoO%k79i|uLBn;8GW zY9ET9H+a22K<^(WvJcXGiJEv@t<%Q$p?Us@@9V|iw_y7&s@+0)!}GkHC-;K$AhNz4 zAA|KIsQlA~N&fPD5;>5o$Not7vb}zy_8)?xnOb*(dq60hL~@)L>Vngc`tY?pSig|_ zdTl9uHhG<_7p%j{^|)D;F}{9ge|R4r^9Req&{Y#?umz?{a zChPM&7TpEO9el4!&2Kp!0eXKasGc+BKG7VwqhGdT*2DKn1L7O_){C6)qJK%GpM0MF z^QyiC#OpL4;QEf{g}$d6*W>tm*ZK06%lMalN#+aBBl6aB%Q;`!|1X}A?&I#*p7Vp# zGvZ^fo;RLJv_F@eyI;xsh1|~a)Bmgf^SPD__1|9}-uS?Kw6y-n=W;TrKJvMoe=6sE zyijv9h0i92ACITkUKfeteWBqc(&Kg37u0-%>skIL>pLT4y@BUVW$L0It-tws_Z+NW zEYB~${qg;c;)kYA;c3Flf!y%(v&Zo@)G|7m!M>ZL!NzgrLd{#+$AQG{i_87r*898pm0x=PSN?Lj z;B$>m=V0UO3x0c^hyB~@wEl4TIV*2_T~wp>)D`MI@*u@KNo=6~EgT0mf%5oz89ooh z=YO0IZ@L0vSRdK1<=Ir^W*sZ z3FlSGG|wvFbFYhwX`PhMyZmyA^q<#L@wrRR$2i;z%_lrh1N**k*QG26G<9)FcQ2>V zxh;9lQO;laTn?UlWDew>3-#8kcz${F5!-=0zqXXlc}sWF|4Ot!p0x4>V6Im7w&IRzgW-jK9RpqsC{cqpc$`+UXJI>3Y9LM$|I0l zZ#i7IDeD#I8{2dJ_nO?U@LaYmXKy%MpV{>G=kEHHD4qWN@b-)GdW`+%h4+(-?v?dG z7k#EnGjX|Is2=Cjzh(N(fP?l_Wphs{R@&i?{k@96cC+N z{+)jgl>Ncyuy}uq;d}jouT19p!|w2T@2|TXq2^bA?#>-=4iEPyz3$}ma2I%^X0E!te)&gF#l!0&H07-s*5@5oLameI!yXlesTX_rTcxBJSOWYx3}}<>@U{W z_&CdqOHOlaJ;#`#@ic@BZ=CL-~EymG9TjZ*&W}nljuGqzd!8mubLO? zk6(}5Wmv5X!+z{EnT~)MMeBtAcqDS~*JI90-+ez7hwnFkRO?evSHF<)@s^X@{a=+Q ziWl1_GV=?^9e;QH*glcJf7M?4mzV$k_`SCo^X-Kt(&Toj3ARW5IA2^5=SghO?U47^ z|G&;>)q8!g&Ue2|FW;kfetY!i6R-QHtNZhGkqPtTyxOtf9ha-$^!wvyE^ohoY|o}& zo~Yb8e0Im?Uv=;IColKzd|`c_$Fqs{d~W*u_RHt3q@JA5^@(79`%dETg-fa zV%{7t_q@`PSNq}g@H{e6K5~D~@_*apcE<7X$A58q*-kZqrng^|{UpoLeVh~7zeW43 zD38B4#p&{g&+%gO&-C)jXVz!)Lj7lbHWRsHx!?5b^Ztx~zre4@{`l=>`rYYc`Hm{s zj}CR!Ygt|_=X~?KXZt@3Px`}pf7Lzv>o@)J^2-yk-<_8OqPFUXgQ7C^$NyCBkB8U4 z^Yhm)=X}e{-d&EYmtT1K<-c?fv+Ue+(*AJ${`;BxA&!sVWPP;f{x<$R#p^U2?lM~c z;eAYY?>F=FPx>qSZT9a%-E(>_RG;I|&j1FOfge{``7zem>{t56k`G z`}sok{O*|9J)diwO6!<+T_gLWpx6uh*0TRVdtIPC+)qmOgO{V6{Y#WDTrT> zx#zs>`T5BHqF%gyC91E9;>Y1`qICr{;r$u4{u-YbBy!L3@V6UI2b=l1PgHN&J)0a~ z=0yHVd)c21hV^_|FVCuVePkXN-1U{y!Tz$z>B4a0;|c3yID8I-<@kPw`}{il=Z}Bh z{-0mooKAMnrZ--R-En-`WdE4`{&9TSWPOZpyx(MZ(jRv}*GQdL)Wu9X&wdT8lSui4 zDYAWOg6}D4Rzhxvis7?0WN{Xb1?+>Uab z7c+Ce89ztEa&LR(cyYT$cK1tueSU7_{6RUqH=x#`;GXmQFn<43j`wiu;>IE9AK#0F z=dN_|fGRhRzu)wxhx=QZkJx{}`^nTVAy*hx4L*#t+!}`8TX$8l>b4xmnuoL zCcRZVuv{w8`W(6o()$NVq@SFt&+m_+UV!w@_jl|7%ny0qNY;}D#pbRe3PV(H_nn zs(x1&Pk~(CyR%KbU&8fN6ThnWl3<@unOd&N{X|~nBxBC$!t+lj(jsKV!b~`W3Ig2Xpts+;TY%^M2)xpJBdme)>&p&v>p;=Kou&959`3 zf3Vy+{kRVYs|%tU?W^YPE+}rNbHaSi4)-nLeGk~DkolR2IXxKvfLNgVTTCzHLTB)GRHRL=fNi2YV6MAp)Wg6zg>**LSGMwW+hW1{6I6va~!0E*I@UR@*`6I^zS+4$k z$NJ3W#`PQS?^pdOJpZL)e7Ih@^`-v<>3loid&K3(@4b3Wcu(Sc>0dy+r%X+tJZ}F= z0{i0hKJau^Uv%-zD$ExS@9&y(DV^T<>teWie~R;26ZLjscxb}-rt&4;UO9gfnfzRX z&n^7^mL_haewWROS71B42kM8c?`(gj8*<)e{5uRBKI`#(knQna3SAtdb+}jeW4d@= z$Mc7h(4Wehc@WOs$obtUs)y(GD@sojJa6HCWvg08g8B(*km>ky4v2c>KkFgGKD+9t zf})%1zmmjt)Shn$WBja(rKySMyQ7)k{E+2|=9dfaM}P1;CYoSolgn{Ey?4j&+j;G| ze4)LO-uqW!KJfDemWTfw4(QN+5to;r^R^F&V=cV?-$?U19^cs?ypJS6?+L>9h7MqQ zSMZz42n^ z^<~aKzQ;$}%kiJXEd%XJay4ZJL^En<_};lLYEk+)Khf01&2$eLwi{h^SM$q&_)?`K zC|;y~AU`=i$LRv^lMINL>tOmhyn!t-etb{hy7HJ_ZfA#jBLCat{dxXU`<3DFxG(1; z{5@3c7a(8h`!3u+@VQE!*A`hL;~NlbnqoS6o}5U|^Ja_>pI?dJXN2dwbn()sm=Bzv z`_=PNKrB*bP<&Y$!^@Swg7IK`_J_|!vDrwySD=euXuUhN6o$k7rPqY_#Natm)@vR= zx%{QQtk+zwY@Sv3D#E;w`X#Pkcdo#260xk$G91>!d+~IE`y9|;443YMVyS9h_}+sI zpY>4A^RKx5g}Uc-^Z80n&r@$>yiE(!i>!-lo zw7m0+^C-C9E91@Y)3fQ%2XFpxJ|#9eTsC?B;AghS_@3Xc z{QAsnvioseG5?ua&gNgWXLom~(gy@1aj`orhv zTDJG!UybfH!T!`;DD&m~d#~9&o6ja)*!aQviA;_kn!1=o?}^>D9LtBF>t}b79AA$? z`?&s=!6^Uu2XyB*S$^UzDG!JhOHgmV(uesixx;n~<25}m?4b7$s;K=3o`>f zey7ay>+i;oQ9hB%m3dcTtPgFkm1g|>Im+QZe4jn;3;nshY@a!_U-9TOGF(`frF!>g z?N{n?d**h`Ebp_I>$UuyTerP*_l;U_!F%szd0{y5{-DEZj0f%)>tZ_iC-qunqdh+d zpud{fK=br9v@eIu_OLIf+-stz8gJk^8P=2B>(zLUANHA4`UB!Lt;d?{F}#5dFu!^K z+CLs}JWHr?0qP%(E4a@c@5jHp2Fs7lE7kh~T>iW+4(ko-y^Nr^as-Bt?KH8xCB?6V zsyFfXc#0`|O}TM41>|zwf$hw z+^3}4K|rL@{uuAmqQB5jQ+(N;_f^oHCN|T)4|5{DME2Ycc|P&y9RI!!>*wunP_(4= z=)C3r^z-*;*o1pHs2uRzcYObf`-w#MpU`tY?*pz>>skKsg~QRrUSGe7{VLq&?3oYo z`?avoruyZ$9P3Hko|#P^xBMpWQ+vlDxSx*dx8FXIej+_N4$FT1E!B?B9}oHa98su? zvOeZFZ{qUKYyKm9D4fp)a=(w^pa0~=GFd3{`l|OW4XrbDfdTgkLwWeb(%!>Jnrzi z#gGbE-d@IWO_qm0pE(@PFJ!-d{JwVf->;AM@cmBOud6`!miYa9Z7Jp>n(*Ed>2vwA z$=^%QD}J)S=6DFzzsB?F0~#;Wo5*~C=XNy?!*}4x{#gCI?LVgX<^1|Q?tY}|BcB_K z`^V$$QhI*ma5&ya)&3XU`=Rd1*_#S!uxxE^d zBbvHcLhA^u$9x^lv)Xl&xfS27QzDuJ_$UjHg2gN*P!ucK2!*rY9-8zli%5@P0nctMQ&kIA5pEF~;qAe}nay zd0#LBW3UXz@6M~QiFs7t*q+U~hcKS(pFh3mFW-ZjIK6&%_PGW`Nr#RyuWfxl`rfEQF;3r&*#9oE@)oN zza#ENnim zMCVD^p3Pq-Vf|rdvt1D5=?{=kT53duzec9@sYwmyYH~sTMocF`}jPZ z9vO^f{!rYS&rv$6UWOh z&o7>SeGcc|Q&`V9eVk8R-~G(*jpb)@y_u|e+Yj4wePk2;)5TBay!9_pJLdBBn|u$o zNzYIId-iwJy}XI+IsDeNuA1L{od34o({E$?&(VG!w^uGNZ~c$&`*OUK)x1I%cm9O_ zVE*X2?{WG0*d?fk;l}enKj!`}Q9a=I061R$^$V^SoL-K{Yq0(#=QZ-4f7vdN$B_N~ zs$b6MZ66*X^#h_BjUW8}H^+nPU&YGkFTX$8{dwg4OwPY0E2Mrv40<2ku|1xPg8q7^ z+aC8_4NVA(767;X8*X4?F`mm z>AZ=T6R!s)@(0(G;`0*Z#QyO6R6IWWncItgDV9IJ@1O}BKVhD;9PQoj=g9gpSIs$&>0w2$+jzrVomJ@dXNGn%sfaJ;xa zvFWc@Y|rm^V15O1-}B&kD4U!Q?7!dK@CT-c`!O~fQh&-O_cxy%kot+wi?be^xG#d= zk&ykNzhCmp^JD&=BAtNtS(4$(Y$;z*3&^>nV#&;Il$;x?2{`F^Ba-|V6KtN1*g z>si@M%s(DK{QI}ukNN9iqIo%=w_+2&U!sY>%X_zA{QUkTYByYNrNWqx{2d}5w>h0$ zPnbWY^KgFC-#@cHkB=3pKV_5atKZ~(VAkVy;5XS_+#MdDT1Q!4|%a`3Az!Xilv!@ptio2Vs9z;CCxTC5A!gTL#+ z-wnjYqJ^+UYq2NLTHKJ_8r-)5?khHnf$$pyzY*ec__fmR5jDjER zBKB)h@h$ugXxU(9gBcTtv>b6n8wY-l6Wan4z`rNO{=jtjJu7wwW{S=5+ZmVz=5z3y zqkcOBFMv50?B|0yAIw+5d=<>s!JpT`pVuMmMPRoG?A`>w-UNRa!{2X#-4ZaD!fzS; zy&Qh;s^8AQO3+&a_G^JZgx^Q-_a-p+sNc@OUN8@WzemLj@XOGTLOQ<@UBowFeh*>( zDmDcE5LJb)4Tay`@Vg&=tu$S`Tol$`6-Bj?NyW7Eq>HpjlA+}!nc721w)U*Bwb}4% zrCq8m5|?Uk!S6NrwbIIhn{wK=KsjwspsF@KSPl4cZDO#xHU)mKikk4dO4|^;3e2nF zS6@34Y@mG$zmvi1;MY+bnA8b=owY5Zv(_!CJLsgsZ-CY}X#kjmKsH$0CkAT=;nyu` zxYj3Wgm!PzL9G~+%B$iy{7%5{v{qI82tQ4?;kQ3fT(2yO>#elndId0Fg~4bJ&H9U?z5X)%UWH#rt)sq3 zbkyI1-)rz|rF8=P&iYFDwbDB4?|~_~qt-=#M|6R|yTISK>zjl9;MX611K@Y3zE%v@ zH;Vi9-B8La;nzyb0Jj;Sp8@)rV3!GYnP8U*c9~$81$J3rmj!lNV3!4UF|dn)T@37E zU>5_s$@=YLGW%%tGQSWg5^vKI-A}qPuoKJQZossxiFpm04e$)h>t8wh5RWCJWID%*S9h*cQyPy9LDRtajxC zLUaYQ#v&nlgV_U4RSp32kCH;%1?D;!z3u_?aB(3Cy+i6pwTw3a#HB4WshUrNs z&LKXUgz;OhP3U)@V6;qzUl`QLfO7I-zdl?<$e_QhO*94?{gmzOzh^K<+|1-f|;+|WDm<=Y%cZs>6 zmn16c7~hII#=oTY!OgJq9@Mn)Q14elzpvsY>gb;xl;v_~a+^^?91q@^Ec5wz@cX3J z?+Z~O>EYyGW(z2fhWeZR!QWszRbTribyoHGIP`~@ueU)jr-}QMZqsVd5F!K2W3Wm# zE-6)|J1N*#{}%FZdD0NY8BJL>CsO>TlfUDLcTqhUq19LUxl7EdrisUr=aAk@LiP(Ylba=X zf_nN=@@?At+hw}u>-*rX+P5G+UqU&rNS;sSI$ys5>cN_1tWWzu{tC=yXM!o)%ULih zf&Y4eg%p1b-w|&r_iK`Oi8mmfvxEN+Rd*gAS5^Oy|J+$K$s|o^TADV{nP$3#2I!KO zE-Bn;21saC_)ySF#XHR?#8wflAX4Rq1R+voX<1rQIzy(V!LXDT1*|eL!H>}jRI5^~ zd}hq3#8za93K;bFdY|)(kMHlFdGdar<(|8pyUdUt(&IlPc$niq%<+cxct`zVu6NQJ z$M(I!{~Y^!PWLlK^{K6R3b{FWjK|jrdW_>V-h*;EUk?R~dO6qPKE<4eCzLrpi(GEV zlI@J|RQ3LUQ@yX`_$~(HJb%VK<~%X$SzmHfK<4SCB?Ed~mbxh*^YlvOWq!7y%*z); znU~i>nU^nvGA~~VWnR7te(`HcITEA(=b+5T*Fl+&x0H-?ea1cC#@)T&H_rVs%_m_nAeEDJ^?3MZfZoneK`K%vhU)0TWaRDXG?c@&Aid0$M47d>YZV!Jj%`dmF0f! z*X7k^_jshg z62AZ?egVsq`TFN&_5R?kO1)inNRL~EZ}J?Rp;TEorjKhs=Jy*=e|k8nug|0Y8fyWL z&q(-?SI*ljy@$PW-M!X3n=fxws-J5vYF!^Zk z75r74Tf))cmwtr%qHujsw(F?BPmkj^EYDnj%{=#F;1G}VMjj8xcpMz??8RG>fpDu= zu0uZwpU~@dl)e@&>Uh-OXkCWmV|Dofp1-H``h2o{jO#Pb^%>`Sw0ggd>XqZ?5c(OxQ~e_E0nb|y_qEpNu-%++G9XS5`+Vm5;`7ONdJ|80<~;W4?dtd4 zhq;iwFbY7>*pMlH{6cvb;YP&PaN;T1|0YQ4kd&2=(m7z%Kml2HP!=qznSx3 zd0CD1!F0SCsHm}yO*XzXOZIz>^%%w{rZL}SE0RGoe}#R#fAE>}FzovqjuXEc_1us3 z*b@l*%>1}Kct5V^p5P%b=QVDZYHk;w&)hH6SnH0af+h^3@5qtpG&0OV9eLms7p7v>fS$TkQt6u&THQ@d7 zHb*O&o?=0 zsdK8<>E(?2*ZJf+6ZSqAl>71jsoKExPyJW3ol-uTXKt_B>@)ZGn|)@!NcqflZVQi_ zcwh$R(O*`je6L`{iOW;9A7`%oB265xl12cAD^7%au0F+j|R?r z7WYS!j|QH<($YSQ^YE_8hyPnH^Wo!@PbhOg5ax4CHJ@uv=>2dK<#POly+viV#}SV6 z7?)S%@m9^_{rZ5ppFE+*t?;JB>`$L%j>9qC-mixBaZ#zpeP$jX*ZHvbD36yuznmvO zuI}>(Yw;Jxs*eZd{CPd#)6ZGBKcwT_uGM~7&dJHOe%bFQC)exwXw>i1@kLV_I3Hi8 z=jV-6F7uAz+ps->%e?=Fc<%RZ!g=35rO*EW?jxq)xx&n&)qJk2H9F;NBPb6Yvg@x6K&*q)DY!$JgLD z;~BLgI1cTSQGNbRn>uRUf&CkWGQXZZwa;@S?$6JgYUZb3R@L(Q)#x|(Gkr?tkNc-? z)!XOAK$G7*&nEol_&3jazni*NZ_kIl>$rX!xc*7&x0t7Iz;*g$6bf6KSgzTpTqy<8=1C^*Lbz>*sOS z&+UB3Z|=trQ*&QdHa!_Qh~p+ceTdsD8Mq$fxnla;!Na)zq^2L@emG1IvH!z#OuxtY z_~dACC$4{MOH98{O+T)mCvTs2gzb)T|D513Gi}@f>;%>OG41t7s=aHP4hErgDFTE45dY{{AuBlw0iYrhO*9P20uwFiug%*8|3D zW*D!VG3MWa{$GM6^qIL5cd5$n;rVBVRq{5z)&KL1>wUF<#C<+o0RMyfkIq!;2Wree zjPV3&$GKm}{5K$;UhC8M5u^Swe*pddK-H9(``<2g8`_;!JLbQK?JvN32M{;F>F^+y zFZ~`s`D(;}#jgyd{MS&*@74W{`TvIaQpCT7kIty_%5%_lwN>6Xuw4qO%KPJQ%5zDT zK7Y5=rY7ENsBP7j+FIMC-ill5*4k~{PR1$9_W+&8Y(dB1O+7XR-Sm#?;++7v;Tg2G+?9MsxyaJek5R?pO5JnPY40|*Gs>7<_Xq6 z7T8y+)B|T0S^pI4oeG%i`6>O}-y9la`3CQGc#fGmbDZ_Y1H3Qtn)jmP0dpVR?OS|{ zjNh_8_<>UOGrN7m4=J@^<|!`s6xaW--YzM>Pv3{WiRb@GIKOV0=?j|q_Ef+;2ZV!W zzg6q|2izZMe>5{3H2c-E%yUGo&f|HXnt64|+rai_zo>9y&>SC4T<#%{+5U(0^Jc)C zV87;l)~d)_#_QORdCzt@vOzCr)Ssf8saeiTeq1l`{^s8iGY@*B$$(r3_5?D%zrCQ; zxzXh%a(pg{TGoSjf4nl9(Z?_DPkd%O#)EtD+;$t@FUb4IN$_sW$BVr2l5G#;ekQs+ zxau{fz7TCKaaZDKjb2vryuQ!b!u8+E@oWj2`!3 zRu7MhERPFwotsu??%!wD)mXNt}l6QgWSKG>+6+u%S(>ECG+m`l7}(xZa~~HO`h8Zd`)<7 zv9T_09lk-SuhuQp&rjc~TOM41{B5Nf|M#LwJy@6VoBI;8J?~Wg+&>%mzTLck#BaHS zL%6RwiS_Z|I(}kWxBpN0t10i+9o5J6dv!(kdmyb z1bY}T{*tE8FP3#~z%*NeQCHLX|X&mxbrQ~JETXv!GtpWr+_9=r(u*XQ`` zl=TN3N5MHhy}mC7HuHO+&DQ7@a(txp`T66LFw0Z?ek#T9ty20q4(}ECy;O?dYt`!d zi{_;G{nfbMU(It`b-UI%$>8NT%6pWUt~cs$C^64z$v_nAe{9b3;2b?qB?ISUeyT57 z9$dj#=980ihD+pr`kguEy!rQ>K0asm>HF-^+{Ti1*gs3=HtGKTsH~CF(xqgLp`;<$m&5hdowr$!BjDZ2 z{w?bu&XYZX8hzh=-@F>XIS$_UeLf-YlgIeJ`~7I(kz4Tnc73;R=f~xJ{d&*oUpMyw@_pbp zP`?rP4>t$5aX%<1!PG!+w|J;@^=0Ujf^-r@m0K8qb-J)c0_EW_A4+5bN_w87*k` zdk?qks4kbh*}py9pFP~p{klBtJ;d$YQ)0d+G4J7~sE~f1DYXu>zajQ_L_6vqVt;R! ztiKu09cOJ}`7w^;7?*3_TNTdg)9^yGYS#RlJa=rC{dbcmv={gB^G&}WfzRM*b>_F~_aAtswdA?s#`#;g95XHz z-oo)5<2bv0`}BV4_PvAmy0~xmoQe53P~YzVJ$^;@!};z0A7H=U9BlWWkL&u+<`+xm zZ<6P(cK?@geEfa>DaK=ToccntUo6!7G_IdtY-snpmts5(zL2?(JR11$TKp~n`Bl&2 zy>G+y{v$jt7Gi!YD9aka`#!l}+=%@y@!flj3$UFfeyPrQ6`tQE{u{2F;@>ge0)Fvu z#dnl?w!t{qa6IrW%!4mAbo;)6dA^{!eNRW_{b9F$Zu&z*w|^Jfy;*LqTTkG+CfBdG zkZH}(>U9H#4uWGfU{#yNBrta(*;~3)x#tn=cL)$UVkCirtzJ&eQa(0t0Uw?Lj z^%^JYS*BjA*Zgi|EMVqMbG`Wd*=s{z#jkU}dG@-Hna|dSeuDQ8J;+b{fkOZ5LS|mu z5Hj=F2HpQl{tbG&2fV1aTCSreufl6XKmChR-#>dp$jmz%LT0|%5Hj=9hLCyRydfm> z-WkEQp|){_iE*>;*RM8*UdQ|KqgcMVf8L_=c+O$m6*A9T+d^hNwuH?2xkZmB?A^ij z=;64tEYGsMU-$Qga}H_4UK8JSPFBY%Y_5BLl@0O!*jl64&)nxPt+A{ko>%32M7-)& zBj+41G56K2UKjJuPvmh2i z-;U!Vhwr`RJ;uf79@gW)JV1|x%=6=ska>PQqVu?}bG^*_=^f`D<@@U+X=^{V*Of*SjI^_i(A~|BI%W?>P=Fs1I4V-hZ;JJ|y?)|A$yC(oy;* zeV4vRKct?8=6*c5(6p~$Jel!y8m03WCcWuLu^%aZ&)_|QqG1U;_I_msz#`JS?=)STZ9fyC$9A-O3m*O)|Hy$C!x#VSiC`(zp2)in&Y>rl=Bno zRq_2pN{?%8<7T>rZq<(ZyBKeyJM`~B<^-w&SKxhOLG94XQ&ta`cQo)v+&A9Skk$3W z-Yl1&<@o!V?`OWB`9nId!iP(Lgy;P=OAeR*X1%4Zf^XqEcU%o|IY+ph!=>_G=DsDz zbUWN3m&#wCJ?TAGdVWZ*gC}%;)PJbd%yWlI&3s*C{bK1y(Ee9Tilt}c{msq6L);H1 z^nSZJc(_#F)BF+3f8Z*m#+LN!d1h_nDUS0L`#r^W{g$bh^n4oEXaCYME+^?R$MZPH z?<+I&d$^4Ey=7*Ck`6&%$%VspUr) zAEP$~5}+FIR@rPle)d9aT02D+8=aVl(%@6BOzd~XSx^KeVpoQGRk-?D5xuU&fn79EGZ zTf^o)d|jCLeRLhiyCKZ^mGL@`e*@jdes^%WJvtusXK6pjb%@*XFt_72F86)^DCW04 zf%pB(@ZO}L-uJKhno@r`|9$b;I$|>+j}T%?yHV*eTTy4ert%^>jd*fit*vE_x2C zoC=%ypn&fam+1E_-Tu4qJGAw7yGPb{BimVOjN3aI*ma9i-?4WFqYc@6v~%{J!xOD8GmNEtKCs=AnFV`DZBe!JGCtj~`#T zoKKi}%FS`;D>vJ9T(5^8d2>9E>v4s>p`dxsoAC#5JS_6A51otWomKIS{}p^6b74Hp z{^0*AwGOfTHL~?k{;!~ou%}F^P4Q~hgSuWd>zU^WY(Kuwt1jQMPvQMib-DbNv+Zbi zAFjjFUjB;My7(C1lh>A;c_hYuW99hYg;ak$Rz8e*^<$;6^5`VFpQ|l5`_=sJx1buh zzKvYZrgAecCD`9u_P3VfTU#E)^52QC)A>>S4q4t$&ON=)Blmfs)u!J{Xs*vDkLPcX zyhod{dPBL~f8+OYyx(aJ-h=PouUQ@P{{rLOzWRMn8TQY?)nvg@tk-Ks^A^2cU-Pcze7S|&BUNtZpA^@3 zv&Y1n`8(CtP#V|yg4(Lbe{ymc*JE4xY#i5Hnzxlt`Xk*x9$DmU-3YfI|p;P(NEoq9XB&Z#XK#B=K2gylE3>fiM=&#Cvz@5hdn*Zbvt zz)us0%k6ReKIOupa{1lqk_(UM?d?}b%H{ux8=qaP`wM%I>HT!Ax1aA5`}sc6{2p80 zqnZ2lW88l|C7UqMY`xI@uKCsrPw4UD_d|3We^=QQGQUS@3Vj{>YxjkxbUCi?<>tM` zSoy?z3^~5Oci~$7eC+qV9hCL>;p%Z7ALDxb_`Q8d{;$3zb2o=Z@Z9jRQeTC6FXF3^ z_II6Q`~qB#`?i4WB zNNt7bueL(wx#us6F>auZdOTrolNP@(tuWX1Mm^rI;dg=ZJuKaP}} z{cxmw4dy-kP5APERLSvK)Xx`T?~!uZKfk#6NclRzV~9Eg9dPyL~#1pkL+4?Y_$`CMjY@Y!VT!>4V17oXd#r|{XMOVheE zt4sIm(thh1ls;uWkIzHa3;2B28p7vcYZ#w7>m_^+S--;PPpwz+dBpmCi~Juqf57Lf zRuP{ktUn>2*L@bPH}KzYSbxRmSG_WxtzH?A>y`1`p)=cb=5C#-_DP*-KB-gdlR6Qf zj5+3$QO)zos21otjk?YHyu5(1!c}3Up`K9L)e+DCb&@ZFy z@ylq_{y*U}>)+8DP}2hUqisV#mb)PE6nbk6>};)2O@SVK+JQazOavZj^{DPZvE?-U zA0pCckN!*tWXxIJc7H&|+#k?eGN89)K(=IF*DUIqZ|Is$!Q)us+Mx7vX;6At7yK@I z{tPk|>h9p{SmKW0pYi!%@I8F?AX9?><3h&vM({t#RF+g;f~`~{J;X|+hj}IYP`b6` zLgdGFUWFv@3(0zwgk)^tkc_P|Bx9Qwk}))eqz7BqOz4^|y5_4oe?sT;I$zZJ_jG<- z=T)in?3PLoU8NZ;{c!2JODa^ZbUi-TmTkaD4wdc2ryZ6$iLi{PB`mGhhGjgLhMz&J zV)!xCe<_HaF&0{uGwl+GWjl6A@H{E*K7ROgSNzDM15S`nWGeBv0M+=KsapIpSAJux}H zrb6W>UxbmIsFptS)iRP|^*+@3u=)@9ET1BuyY=UksWOkbQ>A9tRH=E#R2lQOsWRrf zr^=XjOg(!ITGdFaU(b@|{$799*GVR>KfCLSsJUdGjO0`E{ve~mf1jrAsh3RVEUEdS z{;ZlW|2;*2*6Yu+_2+VYo~CX(M_P5@vqW97P(FtjOXj%#d|!Wls6T($DEU$SS-wR6 z`wV<~)Y(g9o5Yt&X1D(Q>oV!*{pIrMUm>4y{n@%=4YtxpRy>7PJ6Fhh{c(ki;rf-* z&)$`?Wvo@w&-MCqum1eCEtvv7E7XheOR=?otv~;+Kdsf0snMTNe0tPntEJDqtEJU5 z`g2r&7Mdlq>Oxu8a~DaS?pDdXe|b*}E<*T~Wv1mESVku+|D6)gP!-xbb+-0Pj;S|a zE!FX2)udgiR@3Y@Y1gbOzay?umuoLqpVD5XKBsL{2eg~ij=QDam(^bF&FZ+eQ~l*` z8+jR*L)+kX_3K>)#`rP59kJvGc85<5SF9-GVYRlyl{>6(HHKGUQc&8v%x9t0%P}5=_s;%O&k&S)c__;n(RsJ02&KLX znC1DP#33l#FT#8bN_(4e0_yQFPD0sUZSdaNclNl`pW8)$#SavrziUF+T{Up8}NaGXiD*j>7Hg zvhRBFR4nB-+^&N6CZW`Gp^Pg{vrzZTco5z@`;Og6>UusX)|0N{p6V+(fR&|N8zq5nHFzY+Q0m82wrY2y)y!( z|2mz2`{5Xr_Vw^8tN*(;lyNre^6EXUP}+%qX~%j%X`h19u3eWm-RUyl%~+KBY34If zwpSm^bIcDx>1P;jSHJkK*k(=X&$E0K%JNmYS#AvK@j~gp6-s$KY_rbn7bWk)?dqTR zcI*7yeo^vSDD87l)?-+gFX+!RRuv{6g0i1QX;%jiT8s9?pkBT%UwWqvr61f@>-r9q z<+d|+S>6rXtmXZp^p|G7Pv=+ni;~YVKM2dPy@sKTBhUOOl}+SA224Y#W=ZtsOZw;oT6zp_TOzq2YceTZdwgSz}9 z8BxkbujdXO|IRv`8A2@m4@15Gplp{BIKy*1Q-pH-;+2mXH{7l!KN4YF4`n?QQ2J?Q z?65oqrF}c|E|hVnS>6j*H{Jb+_)8r3;%oFB+3$#@-yD>24MI7ehoJPEXTAuf9{$jY z87ExblzqetrC(9{6{TMvl==}U{l=j5XESbwvYZ6e>jmX_b)cTt;OeG>kF-JQUzGk` zmUlvF-wS0v&O+&@56bo$fYQ&fj+fq9U_1irJh*N{sXwaAo9>ji4pQF>S2qnlBI@;m zdcB~mR|rb~Q7HB6;OeG7JR(YcQR<6QzaGl*9fwlC8Ln>n*CV3T7p1-^^%GFWm4s5i z4a$0UFz#gB4R@hk8g5sk+cPZhh0?Dm{br%`mxHn&2B7pi2v;|i_li!7FQ(q2*8i_$&@WnA^}gZ4H3Hk9SY zq4eWGS+6AHHt1>jY_BNWNtFIX>Cc7Iz5`18PUva*a<3@$M5)&ese55 zFX(C6-|K}^Pn32cxC=(0^jil#Ezk6dQZ7n;QMQK-%dj5ed~DZd=xO4?G2?}4obU0=xIr1hoQ_1d6tV(KC1JWkEWP*qU60$`W0n4J}CW%;3g~j zcpb~@VVgDo@n-00xiKqBy9AW_t-Aco{v?#~r=ZMV9gI7nr{$KcsJ8=@_8FG<>he3X zqU1%X*9YbJ%R%XPfDS@W%e`4q>JLE~$1uFgYJ5BorG9~qK$#bcP{uV1H(A#_ZcR1y zyin%FDB~EE{_5c_^dD!w8G2eC&5ANUQI?;8(r+u2`fbqD@^n^|dZN@5<@ifM>Aw?t zT3*PCQZCAI(Z%vKl=bL^o|a!`Md?qJ`dKK;%|WR*2t6&YXGN(eO1&W{%gaNlHv&B^ zr?R4yD}4JWc`w9yeUB*ZMJbQ4yiS+@Ju6B+2Blw{<;}YM-&s-Gi&9UN^>&~vrww{q z%JzyUBcQr+Y=ICrZ6;_(A)Z9#6x^@Z6SxQok2^S{n9>QeTw%eeii~ z*8wQ?2BD{A<=!DE%PTNH3gvobO*8ep(9^PJuPEaerC(9{jY8=!2Bn`k<7Vh-xq7cC z^+l0gxkd6pOG2=ugM_li5{?-OPFh|*4!<+eg;*9JW;XY3O<#?R5}?TJ|GOJ3@? zLzx#lpx&;~({ld4PPj4NqLp?MOFL28bwjxh^+Hd}mHWhv@y}?bzQj^rl=_3Z-j;ph z#(0-j>Pam1M5#BT>+RSlZjA5MPUNMYce*U^nSJ6!Eag$eGX6SU{*!&8l#5axgZemx zQZGr{pr_?``^1g$B7K{BA2s=Et=@j9C;duZ`t5*vyFpLOxsP^2y}h8+lUV9?L0NtV zO8s8wX=!>?+!+5Kt=?{krJdxZT_60Qec$5)P}&VbPs=rrihBD&sV}kAAA+)+0+jkA z(9`mzM@6YGN_|o47onc_;V#6Z5PviBachQY?}eV0uRkhEdr{hp(mn*GT@=dl>Y%4( z+oR&fct$JjB$jrfw2MQj-wd%o9~C#ohqO{(VyQ1m{REWtN2MAIVEUF(~~cp!Ac0 zvR+xn1B?r_$owe$puOP4BM=)K9OfUs^hu+ zYNlCE2+F(_VH~A(P{v;mH(4D|#F=kNE-SM;TiYvs@pPdLh_m zZF?fhd_DZKb>9;<<7Oz^Hvy%-!+esapzKeVahmo*8GnxP5R~?L#ziRYLQ&bTA3hO- zQeF?+tb6+sP|8~wr&!*uF`e&ikA7VZ>i~T{le`tmB{x=ElM7KgqZauCXrN@51eB_I(}9r*)jVZxoJL^Pdz?S{FSTnl14swI{8w zJQ+nS+o@jXyPp(KTG=P#%(v?NvrmdAtzSKvWWHVJ|NNwgzs&el2lL%JU;UJL(pvCT zhWS4DE`BK>{tFJmPP~s8h9lO6Pl+e3oG4(@m#Cr58vCK25 zo$Pt_sd}CNKW&-kUs}nx>U`w^vCK1HJK1x=ffQodt{Eun-wS0tgS5c>2;(A@`o6j5 z_-ltBv|n_f14{cYsQY7_g>szsK{;**m>-0){|byp;EHRl{iE=M_Rk(r^RWNbBlmfs z949^~{YIFtgYtY6gVKLJ++=khuvy;9*kLTnb955QI8#viYloYx?FU>a%M+zuCtPvu z`u%CK^fmL%kwN3rN07{dLwYfwO`w>>P>r5 z$}K46Uby1gyY~B_-VRWf6M<5%PM2r)*F%|KZI+8t9*5FTGhAaG-0!ell=39Y+jRLy zdt8=_Qr^MxPF;R*zxcCTu)m>DW&ENnKLn+p2-MpHO1&tQ<=3;^X1OTkahA8T++n#Wg1|p)B8KUX;AU zSd`dhEK1x3^?qVL&3pz*e>vtwsh?*oN<0eX`4oSW-i!}QKEha(I0j`oHuIw79mb-> zE@M&RG-FZX9OFS)hVkVYtFyVE{~x7(9b%a$Z01GDJB&q%UB;bI=8tYD=WUw#UMR;^ zAM-ipMQJ|><@g(hvVZd|7o~hemw&WJlz#9h_s#Z#QXYbvtf2!D=0(Zdj75o?p)5y~ zep;a{&w+BBi&8HMW&gR%cQEdTa$cmF&oJK$Wxf002kkE%$gy0M{sy4*HwdNPF#MqX z-2-_j%N3>GD3t!yxm-Ue`4H6SBl8jFqfq*-XSvOCQQE~>-V9|wIxH8ZJjrsGc~SBm z%%_wu0Put9kl5ZAo#JHIk zCEo_+eRw;R{pYe=l=3uVQQ|%*+b_qwDET~NQQ`uW?TJ4yZ^jKJZ$ZiXpqz&x$#24Y z4XEcwiBYc}ZnDmL+Gbvqe5=kcd)i@Mlza+Gf4#5_{f|OfAKxM_2TEK|<50%Ys$)Dq zFm7ku!MGdhc@)a;8Zyjhp)9WtO20WM;}~FhfsVj6)^GNY!ZvGlzgleSSx}bmg;E}Z zQXYY_oG8odbou}7k27v&>_AywlKD2Be`CMPdh(vNE7`a!*ZQ0{v}Q0j?#e~TD@6iU51xW+o8 z&t^W(e6!9k?G?Xt%bdO>^KCkR>HZGJojUIB>xJ_DSs&Ev1?Bf1gUk;>*>8C%$MQ$u zYq#9nHwy9ZSv>7sBI79Q3&Bm+r=N~MsaL1-)qV9)jt3h`zs<}ip!D0O25plo0K12KABA*hcFDaUf^SZ+&F+a$Bp7Dr|U+q)NOgjte;~2`gBg{vcuhaQg`)uap z%s1=&U-}&8lgzj2{JVWF^Bv50GT#m5ILt8LtMl02j0bf*-dA8e0_AvD%VoRVa<3Pz zv8ww*P+#YuK7Mt+tgoK=Rw&zDlCe^iE%$b?yp#D1<6a$? z_2r=SGr;^H^Lge+biDL2wZhc%Lb;Ad7)PN#u66$4ew+Db9WU)|g|c1_^KCkR!DH>r zyUceo-z_oLPrS;Spe%P#=a=>t7?0@q;C^c*j{~^IYI!UKH(8@k zN1*&}B+BwSme)ghZ(>8)9?i_R>im@cHpcC6llAV?E|hwmI$zz_4fXL0rT<=?Ke&I8 z<#{Oe3sA;A!n|rSc?(M33-x>k_3^;+I+oWnZ!;ffz7^`@L-KNbu-v8HP>+vsFO=ow z7!NWYq25)dJOrg(9pie&Hk99m#F=lVtt@w-tZ$O}Hrmee4#u5uyW03zH7_0NS9iiTiGz6tygynV2+l-qTJB*Wz+o;QY2jev34C5T*0mj2{ zzURZI^URMhKMG}kdN1I1g;!a=gAvAcv>tADD!o+UYFzfmF02fo2kQml5rb#neSlSNz=?{7!S}v zIzp{xj*~`d9gRVGj}&LzOp~;OW@r{l{XxbfQ1-JZ`(2dpE4&G_TpyJBQO3JWX4(nmI@=3noZ@!%&Bq2fG)|MWgLcvk?WJukrag{0eVh%@L0X_A)N19pX_VH{X4*+JbcEJj zg6BBA7f(VtuG?q_?W7}6wx@TEsaHpvX_B_l4%$gGbbt=h0v(~&TGM}&*3mdk(l**j z(@=h|Gr+h&)kjR;g0g-Q#!<#L<2d7H>M);V+(9$6mk!WDTAQ`-DEmK3>!GxdGj3&^ zWZVv=pAN>IQ0BRADD5)L_cGrHrTzf(!%%*wIjY_EgmpQ$0}Vl`A7xw*+pNb9#u+!$ zR-NDWM3Qkkl@ap|2lHvh8OAxr1B~;G3yjq#xLl~0%Q(u|W*leiFm`F0=IAiouHHMCXROwn z{v$LBWjQwEIAe!#l5snf?`d7;JD5*1&M?j~9$=hjTwpv3<^K~fI-w@*>lzG9o!Ia0S4W(WJO1Z;0#qtiuLyUc&Vtc6TLuv2Q4%!9fJwcjr z7E1jb<2)@wsi&?s{X}RCO5SGN#dsLX_AD|^ecIG3(qV_?P}+|&R!P%;2OVm`84xc=KG*5X9!CBVJPj3EU({a;slg_x@b527QPS2 zK-sQYDDC^0A7FkMO8VvYJ5Y+3>d<;te^~~GM$7u>myLOhl%y-ak zDC?DlQm>EkFde176qgUBem!l4GM*I6+ZlJ$J~|Bb_JgvV=x5CO)kDe08MiV{GEPA~ ze&#!v?_)enM``G@93O3kdVEm&8DKobxCmwYS=X5H_@LB_(FBz86yqW4yO!$#Wk1KD z)QdCjpj}Y<%P`JDsaIfJWVveR{-zNcgVNq+>`<3>u{_PVK#R<)&zXKB)TRzi(iD{C zq#0*uj^=5B7NOKvn>cP7p;2m6hq^RPb2LwjQ1`o;i1@re2iBsY8=A1*IRCaR(isd0L?Adeg5( zBQ#2FnxrWx{dX|V&;dHc@&e-`l&xs9 z>i!tVpxzH~y9(Uj#quokMaHo$rd=1!K$#~7Xn_`4p8ATZU!3p;6DMvorl2ghi*c3? zKiG@o^=2HW4o%V&)ccQdmhk}N z0>z(w)b&!d1IltTbb#h*ffk|kuWmN=EgGRwYEy?MX$nevmvNfrXr30R+REk72#r#k z#;HS-)TL>fqa9!8`qBX!{f5cMX&037<{0NG{wZ(0y)5d3QZK?dN@Gy(H^y=5&?HSk zys0uZwY-agO>rSr1CRG|e)vx=cPoZJL0x9EY(>(=tLLr1GGSkQ1^ek=|4)-Gz+CX$2d>b9UKphQk%wU0!n*_ zagw^UgLXl=uS+w|&@A&g#sf4@3$zHOz3MjOvZxPAKEgOkZ5pQzO;VS3K|LK^t_ZR${$rfF`%9cI2z_ld9E z?`T&(;M{Neb7`99XygG?Zc~T4G);3fPm56IBlVzZpMVk%FfPy{^VUvNFG}Oop)T#9 zkzE|uZlgo<51Ux+F-B;V+B8lbnxrnxQX*Fl*Z7 zsoKkas7)Q}()5J;O#K|qQ}w9Hr)iGnsoKxw^cijHeAmP-%~RFS`cJSvb*M|zG)MDP zJ!#shr`Qiw2N=^F%~SO>%W0nC$6@+ztrn0h&?zQ^U!G|kaG zRo`d-P_EC`vnGzxI8D+Hny2bHQ$I~}G*8v@EdK$|=fftB(AmqTspQ1xq;Q=2+eonSe&sY6|w zrm5eX`7>QG?Q%5#2NSCi_D5}+qj{=|tVeC?P?x4@j^?TQBiqyTpG=&i`9GUjy}>-q zQ#H!=)TRz~X`1F}o~pmFJ+-MrU7DVVPnr5@nxlED{>uKSO&#jeG*$1iKDDVsU7DUK zA2apy|1he5GN$T16UU%jABSj>s(+dC2u+WhI7jnTeaL#$rVe#!n&xPps(-URwP_cW zaitk&8Rr=1srnDwQ=2-}r76qO{dG~F$HXxj!M}nk^MXws>e4jLP3SlE^Hc>)9HDm5 z#13_7nnp^vJnB%F<|+Q+c0H~LwW&j0nx;9Lr>d0gsZAZ~(mYjVtWRy~PmU&rfH7msj6aqT7)vMCr&de{3}MXya=_aLtUDtIhv;m z|EjHSPi^W@m!>E3rZe-3qNn&u|r8dEPvZTz)z-Hy66JrUzyxs>uW z&C&csjDLMy%JbAY!^AF)L`-Z?7&Wm&)hrW7s7)Q}(lpJ{JXLjUPi^W@m!@fs=BXXy zcxamDXk?Blw`rcLxh9{cIhvHR|^`0MBr+ti^hP178;&t?DArD>X@d8!te`VneVXCjZkrmdGx9qLZRi%q#p z(=%~7?I{X=QzOxVPBG);5V#$UzO^{GqKG)MDP;a`uC`Vs0-m!@fs<|+PAwrNLg z>QI-aX^sv-c@LCljDLvKj2CWK7w^n5R;$@Rb)alVmvMT+W^Shh`=KsPPvkE&-0Z%S`<=&Cxtn_*csH@k4FuOyn=O^m9-I%5~Af zzY0+%=K)RA9F2V3l-tyyE{$Bpa_Z1DlyRsH#{AVrr=82A&gU4@G|kaG#gBW;xT#GY z>e4jL(L7a~P5U&|`;kVje4jL(L7ZTuzzaP9L-PUA2jtGYVTxB)4NQZqj{-m zcA!3vXqx7zlV&-MWK3*Rhq^RPb2Rb@>r;oiG}6m*>QI+vq0FNyYwAU)O&yx1Ihvx zb}f8&Cxtn zudsib`<2|Er~f^iB;yDrAL zmn0hvKPFebQzd4$x>aQjrp)So+^(M=y zP198Ujpfv)4$V!Jzh&y#)S)iTPn5rH>N(V6b2LvQ9+p#wx-?C5G~#7_ z>e4jLQ{`hl>d-XJQRO%FBGjd6ssb#hE=^OX#FV=Q#wWeO0s@ZHuZR${$rYGV#9`#-P z9j-LZQ#IG*Bh;o2%~Lhc)U&BWU7DsjT0GmVcXpxKor8o;7OC$FlaE0?UdAb!r8y|)%@CA&dB#PS$F4N}I8f@jw2S#P;~dRX^>H3QGzRtW z!5F6)yNtUSrx|CVj3>u#vSxy4#?Zwz-d75UK&oRzZwchmSgZen4 zMe6&c$;Y7dZ$sHG3FaNfDaKhk1f_nFvAT-mrZFhXvl%0{nIQh(%5E}(=07c#Gg0i zLp1gUE{7JW?>hEFvvi1B%B%42A$u$pfOo-CcsHzo_rPj+FO0zLo_9Sp-lg8S_cm|V z`cZGYxh488H9p#71@$Yn&tBQt-^D3GvS}VR<@vVwI6^~UsUs0@h zv*LpaYtm_x=1kf$>6S@5C+(T^#H8;}`rk<-lg1~_s64;&BbA@4++O)a<#6R|m4B)n zt318xf~pIv)>M75YFE`0RVAm*I_;j*4xe`PwBMfg`f0w&(g%e%THRg!Q1#*JpI0BRo;v0HDIc41-IT9P>6&uSlbj{{PrZBULsK(T_fI`A_1M(0sZ&nB;`G~3&z^qZ^zWaZJN+l8|NZp;oc=%4 zK09sewEfc#P5aTbKTLann!o0>ngun@HCNPpw&vyW9@`fbx6p8oymgVTR8{rL1hO&^=CW`t&(K4aO8i)J`8o|y6ej7w@i zRlBS9m$iSZRcA!bNStxW8J{@AJ>&alyl}?P&UodFU!QT}j5p5s(wY5d9zFBbGhaXR zPiHQhdCAO=&%9>l?KAJ0`Si@;nZKO*>dd!i{&VK+$mNl%BR530NA^S>j|@fLkCaEx zipHa@(JP{<=#9|_qYp=O(Ie3}qW_3i&5F*NJ8RjjrdchsK051$S+~x*W7Y$+elqLi ztbfe%)XlD2Shu3iuDhhJz3%$DTk7tvd$_Kz?t68w)cvNeSXU9dEw(+jJGM9WMC{qv zi?N@_UXS@_m(5;0`?IreoxOkd!0gDJkInhaoUhG!a8BQx|DE&FoY&^$=lp4oZ*Jw> znz^yL8|FST*E?_4yjAmVpLh4XUGsi4@8|Q1^WK|xdj0JB&(z;ue}Daf`XlwfsXtNw zUj59o=AO0StZUD@=d7W#UOVd_XL;u@oWFYh$LD`>e#iXp%-=D8*Zj=<%7)7tIval1 z@Rx=M&VKyt*UoM@=aF-sKWFHiqvyPK&geOBo%5e_%FnGjcj~#b&s}@Wg@_7QDFNl?AUYShjH0!YdZ07T&P%)`bTbzPWI0;rK$|qN+u6 z7Oh;=y6Cb+A77MObi<-s7j0X#ebGaU_AM$d`p=@^;)=!77uPLbyg0G=i;M4B{PDHxpEKM(cX6cJdedm>)S9xCTc^^G5dEPhA+jHK)d4E1nEjx4BrOUp&>>JB|yDYGx zYQ=>sKDFZWEACmbYenCRzpW@=nOM1IrMvR3l{;5Hwem+R-&pBss%yHUDcR&Uz1Z|} z(;H3yYznWMwJNddl2z+heQwnkSAA_&_p05i9$WSORVP-}oPX8%*PMUj`9D7Yt@AIu zV9f=ezTl<{p1L4+!S613=YsJICfjrEh4ym$V*7G?lYPB?yZwNjwI8#;XaC!t5s${} z?A41`U$Oe?)n8bB!|JW8Z(V)I>h$X0tC0RlsB(O<9R76Bn6l|zmM8$?(Q4z~k#IDFiR8&Cp zA|Q&Q*TVH;_x;Xk3E2(z{y#5#&ToF_nR=!?^URz%n-}um$={cMIRDT5GYbL*)djy4 zcne1tPA#k~3>98pcw^z+gUevc}P|?Vuf}%-9wMA=+ZZEp8XiL$HMIRRN z*B?ckkRo0<1%G`}OhC&{6drMr@QG#kTqfFz6s^5T(>jPOt)m#CbrIvWZeoqr9c}wb zFQIGYwcIGJyll5|-&{V8aP9HGe!M1#gBb9T;l4^Zb#I0Dke|9=b)Vr{=~=E7&Pwm4j+!3ca&J#FW}7o9Uliq--OYHe zM=7_uxBM;nlzaJ&O5{0xg!qEm)Tl`*+@ObdIez}fiQd$4ibxbgsOM4QG@=Vi;&*cXQ=G$}j6PR5wdum8%@A&_On9~PMKmAH`m_q+ z*Jg7ZXpV^EBe-~NK1X~Oh&EbCwCCflWUWDT(H4nrd_dG)Tf*^ZWKXn4X*}o67#j2MV)qwSf;JzmD4(L zm9}17qunO1({2}QwL8SE+6G>o+#@z<_li5Uje@^FEgsYE7msTX@jD@ph^Mqi#nakj z;#qAIThC9j-MpEo4-N5Lwu$ELwuv{WIOO3@x8W7{Gjb-YwQE@i^f4s z`H|4%9wFsk;gI{-YWbM$l>NdZKVf^~Q{j{U6tVJvh?56JygVcl<(HzB{EEMa_6@&T z^0Vk6e-%CDZ=#p{Q}mX9i9S-(`bnv!$S7@?^lP~?R?CxdTE2|e3S@#-BonpKvbA=m z?5K^E$=XEOMLSD&*QUxI+BA8(c8=_$oh$okGh~15JUKuslLNK$Wr`M*soHFrrY(?J zTD{EHE|f#GrE;itxg4&ol(dW-rLB^A+G?4vT`LQ;>t&I4qa3Z>B#X6MWQn#xj@9mx zk>%Q}vO;@Z2DP2C zN_$Vv(e}xC+Q)LfwqGvN4#^9&Bl05cOSwclDwkM(eb#}$?=4i?08b^?AWYzaXh7Ub!^ePIiA+KJD$;cI9}CyI$qOy zIo{BEJGN`5JKop&I6l()IreD%9ecF_j(yrd$H&?r$9^rvp~*Cdl*1fOIl|$RBOOsP z$KjTFjwD&&Xe)~y?c^9osvPS`lM@}8vec0+Cp$*UDUMNcsv}2EbL7f%9pmK;$3$7? zm@I>iDYDXWmYn05Evp^1a)D#M3^^9aI!8#>JL+VEqh2m_G{{AcCGrBtCGtYYQhBjs zxxB=2lf2Y%vs~u5MPBAuE0;Ug$rX-U<&}>0a;4)oc{OJA7nKa>EBL)Ol(2H|HQoJg zO}{^Y9#`_adKhl|o`(C2dB4KEf6cu2FBHN>_~dgm;l(ZIY-%iSu%i&IaFg~3(H8fM zXN2g4d(Ue^bi=(usTJHc#6KPPv5$@L_ah(3{Z(~Fy6-J8+`2~%mm#F5Tf!Oabi#EB z8S<~{4Yy;^aQAi9L^l4Pej>yO+&Pph4>zvD@UQY1&wJdfiP6aGyBPPk;7;Ox={QZC zjoW^k5a;3kGDH&00gZH1)g=`4PS;P;TsIqrSd9TN8J1ugZN7t}6HaxT@Uh zUX@$9s@#v`s&cFNs@zZG{%+Ruxf#T{VFau(tT^X@qB;%+i;`J_GiKrZ)B_>AGk}1qxkpji$#Gu z-MsHadw#?H-RAQgm}fj^VvG@g{ON}K*L}1x;TBM@KjVJ>l96tyInMi>Wt3-R2P6Hf z&F8$&tcNo-!~Zob8dc7r=J;Pv`s&^qUw@e8yQ9oVKi+J&c884n*Ua$$PBqG9_16>0 zM!t7;H{9Rm8|`}|^`_Dv)z8SMfqtsmQH|?AaYrx?l>gTW=pEYVw7iqky<({liO3Hv zFJ>NjrRvj4@9wkLm|5?t5@=wg1d%n&`{D_1so@=H70kzp<0ymNVW|xq^gM&)1TkzL7KiDxA`P zR=o@&PQ~}M5w4Z~dlg1HgUYc@o8-TFxglSWuZbe$kG)~&tH05&lpbG$9jo$xm~SVP zd%;7HS+E94jEp*{7ap8I8X-IV*& zKuz3*zoj3VyTb{i%4zkVRd)!z-&uO&>I-R8;&+~)iAQlSM=w5&+tTLAKt_Ndg6bC+nV|E6I>_t zaR@j42=#z_5qd|(+xMj5dd&IsFymF#&()@UalFxQZo~Z-@!m1@%wL_2a0$#OCy=i} zUn%$fUYhs=cV&hqoLBMpa3&hC8Ugh}T@NTY78Ee^{53-j~={S-5NB zG%+0aMThY`r_nD|zSelR^nhh=mPcWK5#E{?ta)P?^`_$e7BJi^W*V-g$1HtiJ+Gw? zEd5~VL8af7UTmJPW%pY8=cW&g^qpgkb{uQEH6=#*FUD2%bEkR#H1pO(%59aWrFygK z$?{kIR_QIPULU1DsdVo(?Sl^)*VD~xI0!E?kaO0wd(b` zAir%-dK=B~rMDU72$=2L_je=SDEhCe_dAiRcCp5%Rem+EUeHAT*e^!CU1hpm<{Ig2 z;a)wLnr~Hlzn^WmN=0>}#vMUto8te3Twh<*;1K-wHqDF~i@gAIpEEY0p^o(*HLjT-#@i^88@lFXkIl zmCuMCnz)2|$u?cf?zHBas*n+X!Bob4llm*0p^3HJH!q)6jt!%X`uX$+Bfiz|mH+L; zv-+uJKUn>!xgBBk@87J1apg7Vi;j;Q{bG^1PEIuQJ!2IjwT4ext@w&jRE5lw6;8&2f5J^YSy#sC1g!OZ%{gR64s}Fzk-4#8dbF z#l~|~FpsMHc(dLH@?H5>j!D_GPX@?Jqr|gH1aTBlu4&Yvw zXsn-Krd`xJ`f=V=izd|X*jTRG&#L5p!rex?*1FtUr(5gzfVq!g?GspbyS2Wy*3;HHx~25b+$O|4 z@~bCb^*kHq812}V@n460CHhy%FEZ`Xsb;uKnuW`L)CiYKdKdp6(zC)hPuEJ%D#uXz zwOS`w>x=nj`~J3_wF3EB?Pm42cxyqoz4}Oz(GND=X|%@@ z)BV=0mup$isC=w-?PfFHpBEYHf6MNfO@FwIaw@%l74EI)aNv1xT zTx;|PYyDbgrlaaz>5IUV#yG$CeIr~~)-T1RYxOg$-mLQeW~TQ$>yA>wsd}4^YpoBh za8|v3z167KzRdUY=`Ve|8Tnby^*MS&t)JsqFDuvT&ndSW>(vU@36-RO?W@Lo_s>@h zw{;8m-GnCQ5q|c?)En*z(oy~N2h;s^l%|iTlDDWY{H^j@?V$FH)jXp1~sWRrdIX_}2lTYp*L%#YU!?pI!t$liHf4yLd zF@8>%_JySnEq#3`WIT^mZfl>oxSuf|D;Nh#Z?ElT)brL0jr9JapRb@Ca}zjYjobWw z%@8C0KI&D~*9)dzQ}wRyAFDL(^&FO4cnSKB@*Si7*5bZm z_P2GWUitnOqdbEc=ju7Fcxs)b%C#ALLb(@XhbUJ)zj6n$4pQ#AGY$Lc>(SWrr2jMS zJ-F8T*jk@j`(u{d8tJy(Yq);aL(k*? z5%%wExcYm6CgIh+^0(q!{m`<5E}(pGH}P+7r!==ataz4P@+a|CJzDAa!_L@6djG)A z`w%x9JL>?hD#wu~`3ya1*t3?NUX4AX-g{MEV7Pm8je4~D$N$xBUatS^eSrR_+Rt(a zoF~Nh=5zd~$#Xb({@+h=-?SYYpWnlINp*r`6{!9@(0UI3dpJ+vM1BI4oOo~{Z>OJ$ z_?c4_@!}UyastAQyaVXr-MI((ub>nig%^1z&?6?vXym1!gP7Nv10iNfszManTA%j;l42Tu^fUA_+;Js|}KT zP>R)@e({LfsMCFSF7rKoPmUk0Uko|0k%T}g-Vhm-^G(nr zR`~`aUkys}mdHfD9i$$7S;)77lJhdzNM7^}L9z{$Vuu(?$bW#;fNvP`mqE#?mEp+W z0X^as-w5Qdf>P|_vwizhJU!0hc45(5h8c3hlrobJb zN9);h2 zC6qUSH_A2O8hJB#t6U4Nm+Qdy<$CZ#c{{jQZUFbmyTJYO9`K)XBY05W4<3>alICGh zievI&_&1;w-^xef{{p4>PHuvK4@&Wad;NNqbd!@VH2?brg30jX`rGjKmBMO(*n z@Y6sk+Bu$ww+GQYj;&yhV;hoOP>OuV%kTnFibBV$@FGx((T>;Q#h?^tI^Kkj0i`H$ zY=@5pr5NYf0Ur-aF~PADJ`t2+l4BRV6r>d#?}1ZTzH8zvP>QLJ58-EnQcQE~fu93P zajs(@d^#w_499->d7uGU-pcIvkBktzJ<>RrC8wj4juxfsB`=PuLq@Qa2$s(1f^Ky_z8Xi zD8*vO3HXJe6c;&ufnN+tvBdEk{1Q-#rH((~mx59(bNmIr43uKIL(?>IIVi;n2adP` zl;TQ<3w{+S#Y%@8el^I+e1{jj!4U)A=r;ZNre}YmRaCCxy2GTPfo#BT-DGocj!aoP4IO6CI{{ocasG}$Nm7_QK zA4ebLCqOBFcJzb)0!s0#V*va&P>SCjXTbjerTEj40{;s{!#LC68il_O21WJ+Y91iacGBY|y!n=aZfX*CvcaWLRnFsF)O3}+%0PhW=8JtD% zR8WdEXE8h-lw!DZ415GA#YkR~Xkrw|7;%n==Ymq?IVZyNK`9EHrSL*fiX!I}_-Igy zV&_!&nV=M7oYUYXpcG@B=fcNBv6V{X8=AKq=!4p;WI&cxHAZ^ z0O{e*O86|0UhS-c&jIPx&bjbvkY4Sa2d@F?)y`V@e2`x4TmTP&^lE1vydI=iI~(8& zL3*`w5&Qy>UhP~AzYwHXJ1+t+b}m7(1eD?u=Ti7mP>L&@%ivdnQe5R+4qpjMakX;= z{2CCQ@4OOR?OciES`eM@yav49xf;I4b?}!!W`E~;_$wf@yz_SWYap|^a|8ShP>MI5cfsERrP%Jg2mUt5?CjhK z{|Cs7?7ScT4#+I*d=UOF$js|}7<}LPD3aZv6kj_x!HW~ItD)z6_){x=z4Xf>;`^U*Ok)^g7pX@EbrWZg%|vzXgs81&2fp2Zu(D1Sdx2fRm!~z-dth zl;j+c+Kws$7e*C>i=xJWmqv}ncNxem7BwDzImj#)H4%OV$Sf9B3cm_u7K@q!zZzr~ zi<$~w1)>w8ropcT(FsxK!mkIJ-J)i|*MQ7!QDyL(K`CyD3c%NbQv5Bd9KH_328#;9 z*Mm|#5LF3(5aipds4DowAZ-yf7knjZ9+Fo0@a?Dt;J&Cj@QbJhe7^)49qvW& zSP*NHPh&AQD2;Lr)qJw)0ydy}vxR=5^gHm*HFN1dlX&3i$cz2Mw$-M&J6J&h3 zuY~soX)pImcpp%T4EHtg!JrhG?$z)tP>O7~`aWz3NPD@}w_(FT#-n=;d<4jNbl(gg z1u}oR*TQo_<}dd;cs_`Y=Uxvl03_&kvIbw2}N2hzUo=iuu>DQKiLufrb#`6AK%Cj1dlibvhs;g5mz5cdxFvmmpNdnf$wpcF5-cY#~o?}0D6cZ1v9 zAL9EG$h_m;1HSLxhh#U%%FDeU{vjyENA6GIdq7qM?gQ|BpcJ3D55hkMSr@nu!w-OH z0QV92K@c0v{U!W!5F5<>75ocOiZ9*A;736$G55FduR+!k?(g8=fXqkkAK?E2nUCDZ z;opPINA92CKZ49h?i28TgHrtD{ssOYkh#hI8~kUGxyk(p{8x~<$^94ncaXWstvT4= z@L;ft4j^`##|7^MG8Q~;cxMpp0*F@h^np(TvC};L;FCdCG@b$ARL>bm&IZw$9?r{) zb3kS{Pa1qWD8)=q2D}_(M0hgcK@iK$lMSy1vD`dE;WZ$Zn`bzDK8U9EjD#-(rMTRa z1787RcX{&QSAxuRo&xwv5WCA$1iuDEi+YN|n>=HX+zg^WJ!9c(LB^M7JbWF<`0`AI zuLl`lo>KVjpcHp_rocCVQrzj83cm|v+M&q+u@Ib*kj%u@J%3AnRh4r z2~dhBy}RI>L3*k8J@^YCJ=41z{whe%^nM6`9mF>9?t#AvvO4hYgZ~4huX^{x-vQZk z^L`5d0A$a{djS3sD8uc{}_-7#NYwr>GArRf}{Sy8;h;H|O1^)t+;z#c> z_;FB*e|x`${{*tu_I?LH0kYQi{s8|4L??TX!+!_S$=;vfe}b$RyeHry`UG5y{sk^U z)(g?U!JQ!Mh3G%vQ6TGu=)d3|kTDXi@y;g!WL!i$;7K5sPqYi(9;9zayW!nI`gXJz z-Vnf!4zC8Km>=B}yfnHuxGcI4 z^27~&{;NIwB@YCoq;Ahce!5^Z>gFi-3 zB;;|BJ`i0Bo`{|Tx?`q-o|tK%H|AV0I%WnK6H^BIVgg`%OgWek69f}uD#2DURixG$ z#HNjz3qK8{Wn<=n?PF@e4lxVBjxlv$rNDa8<1Q9 zvW|#Z16~_*Gk9IhTJZXqb>N#Z>%q5TZU?u=YyjVmxrRb@+G?E$w>~J`qGq`?kYNL2Ajj16~bc5BPS% zYe4J)-!Axkkh=1{2QKsN1~2n{2rl>S0WbIM16TO=gID-I1+VlS0I%{L1XubFgID{G zfYhBDX1sMhY zuJA;VQQ+?mZw=D({XOCBL3+NwH@qXrJnruU?+T*p{QcnFL1u9O0C+DDtJQx7{B)4D zwm${l7eoj8)8PF{;}X${_)^c|3vU?e<>lS zf!G87De!Ya-hlY0!e@X|oadhgF9W4G-+wMV0AkJhXTZxrtXY2<81x6gS^jcxfjhb_`>Vhk{Byw@{qw+E{I%d6{spA40YoeM>)>~RXhnYm{2mai(!U745oFiJzZiZ$ zNRRbj1U~6s0&ey%1)uUS1Go5>6Xt1<9_wEL{@s5ixYfTB+~&Uqe8s<-Ft38l_5SO? z*ZntuZ}``MZ~AY>_brfq>t73h7o^|%*Ma}`uSfC|h#vOe4nF}h7yCDWzxeM0&y2kX z922_{EQ!4zoDlmUI5GBN!cPKek=RG!lR?@gb`yA3>=Q_)g4Av7X0Rc43zCH(mR0OC z@FgIYRqS)%(%9$0OJlbpUk0KFVz+_IV_ybW#J&nX5c@j54}$E0#J&lC7{pSF-44DO zy93EKkhiF@JK-;bQoIwp3%(0PXU4t<-vcrdV|Rl;#(s$8ILI6ny9fR=$g{`pgZ~Pm zKjZep<3UDT+^6tFkP#Pm0Nxs8WW^nXcLf<)afjjEL9B?lBjCiiFTqK1UxDYw9RsJw zeGATr`wl!W?gy|e?l^dU+)rR2?gTh9?iX-<+;60I8_4_{_XqqAkoh<6FZi7x^KYES zdDOc>?8!I>{9cf~f;boa0g%0dI5+$uke%c>FZfzq4ETDSAABP&4tz5%0em~I6}TfV z3EUUgmRKKy=&`tV@J~UkzPJwXLm-x3TqpP!AglPe&hVokE0?&g@NYn7rMT|!??G1O zaXsPx0jcx2-teD6G+|sH_@5w_UR*!8i0=n?#1DWwL9}B08SrS3cdzj&@HmimiBE$k zg0xF~2D~-MJD2!OcpDI{7@rMq4`K<#4~2IEnE~U6!@GdAUHnLRcMz=@p9Aj&vX>Q~ z2k!&&mNvcsJ^*AbA72Dd0oi+uFNSA;tkdJi!1F=&rsBuKi$F$G{CM~n5G@x!5k4M7 zcg2^&r-A6M_$lynLHa}dRCoZSKg3UimxJh~_;cZvAT~+-4EP+7**3lmUJbJLi4VYQ zK`BD<Y7w z;I4#cz;_d#1D%P_gHefF!I;EtV0_}sU_#=nU}ECyV5`J8!Pbe}DRUCY9GbWT9FVvZ z9F({Vc?!rbP~v;=G>~4DxEr1UN|BZLA()-G2RuJ8L%EYh0s}qlbs}sKkuTT6A+?@CWxFzv8_GJX?zksw^H++b8IFX(R- z1ID)UgQvBM1KYPs06Vs71$J(g1a@iF)}6?kIQ6S5mpaqH%bXeD<<3m-3THNWm2)U~ zwR1SQ$~h9e)|mrd@5}>lbQXX&Ig7wsoW5*|x>Qg{;Y1EUikN_t9+ zPJBFR3$6T6($k_I`7^ZaLrKqy+ra0=-;umPtKFBhReYf1N623ho>q@1y)OE;dMN1) zF{ssj9P=FoZWkdWpNOkkE4;S#eMw)5$w^h>YjIA}YH&LIFY$fSBu#21ZK^mub55Hz zoQC;Vn|`9TmfE(8-;Q~!?RxNS_+0I?j`#2@FwvcQbogBJb?qm<({e#gKH2s0q_%QS zw|=6ntnO9@)^rPi^ShOUp>9F2zFQ@@uv?XACod&rJ9!x)+sVrb*-lBFT||19RnLNXE%uyWb4{-hHhYFP%O5fl)om zKu?c#V04di(AOi#Ih%n!)`Nq3RB_s75+Ntc$%LFN&+2hIcs3y?%X0`hSx)b<0X&b8 zXUPzfv*ZQ%&Xjlb=-)0V9|32{$H7YZ6u3m5*R!8kBG2zx2F~hvJ2<;%IXI_h5UlRG z0j%j+B`%R6LS7>433-WJNXSd%1%%|+LkM|^yqJ)e$V&*hR9;5NrSft@E|pgia;dzU zkW1w%LN1lp5^|}$o{-DseS};tA0Xs%`8Xk$%O?rBTs}p}|a;^0B3W{~I zeXkq9jyg~7RR-_Us~^~{S2-ty`oeFO{gK})2NCjCnX1dv34fa$1-2KxIhpndr`oo2 z#_I^@3gfkQS~sn)mZA;O3bk?CRIOaA)|O~jXxC|f)9%t9(w^2{)V6CMYX8)}*1p$H zXn$%x*;;m#J!OBHF3*&cRdS8IP2MXXmCwr8~hI6cQmGepGHs>zqP*=Wdx~s-@lWViLa}-t)ax-lg7~y!U&b^B(mUMVCg`M=yzf zG5YoBe?|LaPQ;A!P4&(3J?nehm*OAepXG1xzv|x~8xxlwUmky1{5A2;gy@9$gp7n~ z36%*qBy3MOobXdZL*nwpw-SF${4H@otGin5Yo)c0Zat>;)Yh|FKh*k()<3s)Cv{Fr zO}Z#4uFYj_UTL$V&EYoRwE3$|N!vMX*R);V_KUXtPs=!M#A&-vJJ{~)cE{U|ZXe&F zM~8kLrgd1{;f)T79lLd`?08kj8#-?6_*lnhI=Hbc>DQ}+ml~P-kzM?d12=boge6Yp!3nrFDVQ` zOKz7jUAA}G*X64&OS)d$^|7wcboF%mxZB}wZ*A}-$PG5BT-qVNnd7#fTeGc_G z)+ed&n7%XmKGpZleqZ);_s{4*x_@Q=J^g(Hk_HSKkTqb`fQbVt23#`Wx&a#pygXq0 zfZqp14@?}`eqfJ*#RDe}EE~9N;KVbgol$+psxuxr^s@B1>C4hrr$3+mTKb{%n2gknoQxG2t1}+V*qpIF zqcxC@%IsXM;sh6apc(}7mQp!a^1+UMkbH?X;flPNzOGn zx8>ZMvm@vIoR4!3<$Rs~3eGNA zRd92`eFcvdyj}2q!6ya13O5zLQTTr0KMTJrJiDl@sIusyqUA-`6#YIWnt9fFRx~GG zdVrTY`-97z!@$d&CE#*rHF&wxc`3)5gz*oHT>M&;$u}kHALpGo8*KbLTJ!@au8n^u z%OB@teI)t4d|4JQ|DovoEs^9$i&hO(xvPICr(f}`A#EsX(il4atqh*T|+7R)xHk{MbBRM-glCz;BIT<>VbD<+S6*`hLp(A;m zLT1cjevxdPaBw-fTwGCHZY~d(mn)hphRet0=Zcl3{7P9VzfyLVNRU(crLr=9sqB2w zTFw+nvO=`sYRh$+oWtxnhaWAk<5$cs6&>Yr(Met|lI04~SzaZ&aCPO>Xg99za+T=8 z)sw52yjJvWN;0ZzcWYwC9=4(xrT5JB{oNI)X+DNWZTsd61TzS%=lIv=&Yq(Z%t>(H` z9@MVmx}NI>t{b`5aNQ&|$vFyni_Da3x&FqrP7al~a;=xS%%uEmH~%_{0p>^^W3#a~ z3y2*bv&`4nxm{!Dw%YbxZTqgaeXp}iaD&Y@+9kN( zW)Iq_JZR_puq}JomOX0A9<_6O)Xr^_?YqhL-DLYdVV7XD&EB+2u-#@m>{NEx`R=r3 zJ8ju6Tei#2ZI_+fd$#X;w(onk?{2#UAKL6Iy9CE<_N|@Dw|2hY*|P6!*$=kt2RpYP z?A(sqzQ=9fzuw@Chtd%WmrOQ+= zZlzhhILY=+vVD_m-=3N^wtCwv+b+RSn+>;98E)r0(w2?1WjVGi$IdOs&MnXO&9i;; zY~QJN38vZXeeGes=T{^7eeJKcMqT}E%YHUxPUaHpIZn4(Kbxi4Y?!ptL%W;lEwg=> z+w2BuwZ|Hp-7Ky4xLI25vDTKYwPmbE%#plKm#OwxC$08aZ~Lydeb<}5PVs=eoA3M7 z^FAPdhAB(uX_;!uo|bODrd0oS+9lm(vrp}k9WE$D zFKyp1ZQn0VU*20fth(=Mv)(ov>ac2ZxXng7tQs2Wuxc{LmgU&8JX@Bh%T!I~Ijov2 zuzd?`-vZmW$Sy&#&1TpoD6?6>P98;9Y5P{$C75fo zrFIFH*=)I;%5pp36}D`JExXc|U1{fbrJdVK+jphyyVCZ(#xB8Xo84uX;2xW8v{Tt= z=X<{`yWf^QXv-e7b9>Ov?P1&ZVcYj%+xJns1ek0_kJB1a{cPWU zwr@Y%H^nYNn$3pW>`a@TXR`{YrEM#mmbR_7W!1K9p)Ffz%AD+#T2Fqf&2F>V9VX+= zrXEAh5qIjTDD8N+o!;Gc9*@|vN9;WIIxTIx*J)|nk8Rn}Z<=WUkJRz0~2 znbB6&hWeLj%Q9_Qwk^xHWkYS*P*c`gY-npe$HN`&)mPz8F|VT~tF_sO9Xs-sy~^*y zj&7LxcTutxZn@1?o9r~PDS7-0D%5FWv(2`cjPJOU)hJW{-qV>%`MqRoyzRDSyLFiw zTf393v31and)N+l*p7R|mL0L<9|Hedwuue7&5iXW=W$JUoQ?c!G-A>=iTYY2G_ z;~GLog&#_e_q?p#<#~tazoYGQo;%te z^&D-zGU|Xf$a_#*8FjSvX!lcX+DHF8xl8oB$wj_*lP~ZMZadWP?7TASKgqxPKj(TE zzo^b#qTf$0i+w-2CiW2bpX>aAxObCV$G0KuyUCprANM?+_ zq^RTr+G)wJI}UYvlWT{oqSX%9nB?t_G08g}Gw{1FIjZx7&hI9l*ZFAcb)BQ*)U~@y zblhRC<6WL=b8)w*&YQX)iCP)8!f-c|aX;bO=N|3e&vndQ*5{yB*5_#JvOX_szP?9W`}%&Kd|}_G+gt-b)M?`7cdP6EtV7BF%Gw>> zBm01snZ3g`B71-IWw_U7?~Z;1zAO7MX?>n7h8%PE9CAP#I;2Ci8dH}I+3((oZ0C?4 zlMfB`bpF+UK#TYAM`wmqcdTet-LZ6dO~*9qFLT5(_qq`Ww8us)jqW*QAK{O--Z|uT z`uu*L_n7(OpOZg5ZPw0Gze(?@t`Dp8( z^N+UfT6nber5PV|TvwRhb3}G}&)?NIZ$+Hb7W24jxGoh>xni`ZTz;-NuJ+n#S_ka~ z_R~(&I%|X2Q+q-7)rv(wuKrvDxH9n@f;*J(Bl$ZEqquUoDv_i7%F0UX1NBwqIiXNs zadAym{p7{-gQZm$28X8%62ppu^*QtBm(CBCSIw#_A6HUaSyEe0@Yb zD)C2Tt3YM2$+e~Rp{kn75i>2xi1Mi4d)|cfp)Ync5 zR@Vk9R6IjoSlv)Jdwfk^ZB0d$DoLZy!1D6?+EC-YO5vtLNt z2X53Ms*A+>cu zy}Y(pn$9MN0yTBBYD4psry)`gm>--KXsE8w<7x;6i)&`pHu|e{^|(_*RrPwJ`d#V# z>Zn7Ju4b+#<*0a@pRkt5# zWIV7KUP(7LZW}^+K?|yb^MWd~8LZe-b9nh`PV;E2*pLrU>= z^53gZ4>lnXstc9`7S}e^PYTvl1Vh1)dS1P^L~3O_lazGjo!h{J6$a|+jqLOuqkGsL z+z8kF!Az+ttRB3nA}}PAg6M#9z49xHLbVO^^&;tkRR_+{Sza~6Vsaov9V>4`sJyen zQZ*#a%VDIVx>j&XP1S;iU}JZZ{aHF*>6WuUSP! z6sBZFYHMA1_PlC3*+O*F~6W77Sf%Bt$)>W~(Gi=T^<1Qd3`5 ztyirs3aeT}N|ZF6O$dh6bTNMB9Q1K%d7!4ooPQ1P=Fv0k=sMBMVJg$bM#1ZtZN~=Y zqh3`Z^iXtMeRZ8p$=QG&>I-$*BM8YP0Kx1)(Ym`2zt`6!A-z3Yt+IjPp{D%g3C1jrRZXY#G{aIs=!3Dry1GE6(UC~s z8u3%B>SvD&(u@_VZuD-Zd_#*1E~pO$%IS;q12q-3MwhoUpI5uEi5?_EE`6b9QjkfY zPM=K>VfU2>D}oidy2*!NQbUdEk+Va!HMI?Oh9x*iFaZq`d9}2MUN3qL6F6^nL(SY^ zh29kz&&nMayr5neUyOefRilP`lLk?~On^*FBk(aaor8q>ii*~fovFe!(+er7DnfH9cA}Y{PX4>0(-=NY z#Z;wh!LEyt8^%@yDaMvr2AxpVVdK{hf#pG1tFx;9XGoeqmmaLS5L?2`h&deA;;gSi zHLE@&Mwrw}kSUc&5vN)+OQum+v#HkfV;Y4ueJVq8(!^?pWom()YUVKm>f!!}ImQf* z(`>r1Ck4Fzd&eMo9kQwXgd1gE4*DLQ2} zkE^W+A{f_DT^*QNt!S}XQ1fnlNG&p~(py0mFcF#I^JZg{1gmpdI}&?p`7E^7B-Aj* zS17N#3VmmKO>77@s32@rl+VRQ&4-vEn18r2l)ajK?G>^<)#0W05mSR36B)wdM)l3z zq+p<8d`&eLj-}HPs<|}~s;bk|*QdeJOe@vFkcwWw6R>_Jh6<$1CIuVn)H4}H(R)R$ z5!P-w6_cd|j$uHk`AaF1dD!R`qXTub4NrX=rZiZo){`oVs%YHCTIZ%<-u(K-dO+n< zTUp4&R~uT)%{-bUMbuLjDQc!l5eoy=DWW>KFo*-z)T{jg)lo9b$`*x~4@6#Rk6|OS z%F3$Q*Qu^c5q0%}5H=R6=xePMF*zqxN%yO%*ON3^V{Pd(V2Wr^iOwrS+t#QlDn&5F z)HFvteM3pjJ*lVIEJ{liN?8}zO|7bdmo8?GpEr=E(hcS+>UQAd+9|~~^(}fDet9|h zS%aC%(y~%B(=*ctnBF3d>J%qz&wOwCJA&B;zrrL@XUE`$7c<)H^t;nC(q zXsQVfiN09LP=2=NK%1*fn(1j%N>XTS{9DxV5#s6*R89QbYPyW+-B+)bX%)%Xv87&&L7&@DJ~vo@Qh;K8>7cZMHH_)~ zYJbk02lO$Ws*mYZHKtS5m`*jubZX<6raG)Ko!V?nrwUzT)lo)kDC;TdLz%#~;?sw6 zs%RkD3sicI!09jBz9LOTv_$rJ5}Uj}+GH$N>s zcW~aIl(hVUoV>iutn|Xc*?EIA3$im(G6oGwOUubh7ugwwg@f}`(z6ET4$4o@DJUq+ zF3iqKOV2ADoSB!KJ~%TqH!CwEH{EV;Sc~nA-$|`$#-cT0r)o_zpdRjjXib9GFdZ^y zutlsiO-bz{3<=s!H5tBDj53p2&BLSShTJ)r2;FmWjH7_+Qr?4QmAUiv&Fq7_(o>Q2fR*;rkkX4vbkX@LQ zl9G`&Sf8Ygv5}7%H)&RRT6Wf8QODFBE)D8qsA;&8U}d0uF|kt9vIn0+j|{de8`ffF zo1wDHApb*U6AEhtt#7{CvEF2<9-)#lD;U~np*5<1-SW;f-ZQX~&L&VnC{!ELUxTG0 zZ=q2vpObfQ)k?q45Ea)b6Yt_ok(ECvH6vqiN@m`m!rX$qf~>qjgL4ZD2IUk|^Vl@0 zS%b1t3kGNDO)zD0VOC2ug9pZ!^;!tKwW@-RfyPmx_6PK06L3U!OR3<&%-+B>&KNcJ z7K+t|ld=SL^Ey9RAE>IX8zGAF^Tb%Laa=`tdhv|iit=D_zTP#O+)gmNJ3hswWraB< zr3H#io;0OEk6ALhP>-VAyh$a6qPVVLJXl&bZc0gs?v9^q@I~sK)|C2LS-IoK>T!!} z%BveHg6dXv$R@YNb>jl#?9nlvly&>GA;gQCdNz76!-L~X^+fUvA$R3A!zQh$T~s%2 zvKSjEA76U5nt~gGWo4oyFmGl>KrI*M1%z(;DFYx+b$R2~pvtnqkV5XQ? zS6&;cu9_(V^}LUrDe7j@3(A|;Ur|MQ)B01ldDuz3T%-@xvo)n8O^Q19hNOgO1!b;MZu(~@bVI?pZ5{*Vq-N2$?O)ykt=2U0A z{noQJsx+svhAn3N^}5sB$rhEdwlT7(%LxUWg*TpIY(;gs;4Pxsy;MtPF-t)+BUf!K z3bh}RquxFUW7p5%`o6J2jYxWk@$?Zx$c}tDsnb2IEz+ie?ag#EG2>mVaieNht*2Fg z;I*p$d`<7ENqy4f6`$Uft#HUon#;;~VP9Wbr4+*0T6ThKL%RO6qNuD?k*#}Gl}+!J zzi!;Kf^Qn8x$M+SGu8I0#LZ(NZZ0Y-S1&^*=YA2ANEl&@Vm(HVToNO3ZYnUVB zf@)7+m`3KAZ0H#B;#sCoS!JkpQBIwCr)r_`)oE!%dASka&_dQL)ke7r&;DR}(CjIC zy`3ab)q|eHAT?LOYR`*qW>r%}KYgb?Jc`QAIAfvbV^R#bV2IrtcIEVzFRm*M2CD5F z_QcAA1vRQ4P`OogC*2n-J)({?SOL@&Gf+>F9z9SEE~5p4p*l8W)EEjXp?W2yzv4!U zCRDFW|GyH^>peUnL!2L+*v5cT%tj>U@DG%y*s#hv~+}IDzyJBj0R+W;M26<&%J70Ag zwNa>uibem>_e1kJWus)~Xm2hauNGn_1yqHhqhdL+dCO9|La^y+QB?`*b(}6&gU!AP zSyD6e%3z2cVsk*9lz(#{y$H>P`fyYyN$isA^DPfqVH~`w5NbXO6;uc2t3YM?rfK6U zz!(DPCAN^%>$VEEN;n*+h@Q0ZPPR$vw!nI|V!pN|$fQ6OXQu1`cF`I|X65QdY?PuM z)DtucW~l>ljkijB=&y#&LaC;0l$dFrEF52R@_ngNC%orUFCCaP8)KK%wdA9UA8wm8 z#x(OiRS;uZ9A9&)Fe;lub>6M9j;-6`I<>NyRI6T}G~GfowW9IbSX80w)%#;i$#PDs zVKWC&*z>T4k(HH45UMQc&8E3!zMruBPXwO|eYTpU&w~|WR&_v)*@k&J)z$1rRHz;M zleB*0gkvf2rV^Av(_2GbSTCm4y8~rC@;;(MoK*{uvN~Z>)BqnBT%^0h!j|SE=9Xa! zmd{0L7pfOb>gAYvzpPel;eL$^sc=8F<_MQITd;%&P=icgp@e&xaam-v=*JSGML&%G za6iLHvds8!|0ZT|xThK#rjZ)%SzHk=v&_42pNO_sc(BF>w@r=kKuyhza9^W$hs&+$ zy4mCu9?;Uj;XcK6YE-N9HQ|1fSknYU=E<6{PNvSAPMyuFy>vcCNqB6v6_C&({#y04$ zfv42eMf7g0-YIG+9U;E4#t!!|)VZmy!@bp7wna~M=8qj?W`^*HYEK%OFR$Um`TUplO$(=M;L=M7?GP%|)Sa<^V(Kdo9TYr3YMQQ!w zNLi_|6CPimAtHMj13j|e1X?Y!k9vs6K9ksQjO;TxP#M`nuhGa}*b!JT>LhsM_D?ad z03wGjsHvD=TUDbPxN+$fIjDJHSwE{BIfPOYN)OJPX&$l;8;NT7rzJntP%Zj}AK(s4 z+g_eUE}Sty{!1YJlZ?pmjfXo`0R8Mn$4*Z~ZxxrGO)(<-Ph}OwF^&kiVy8v+ z&<~V`RgyVXMfTJ!8FdadJQ|y~q1x)m(bTYr?4y4l64{H9Vw|Ln>}~Y$$bNR`i|pMv zUUS%jsjG_|%4+GzzUBup;T2KL1}}Tr?1YBD3XT2pOvNM|d$N2U);H^eL`8OBwqu2Qan@l#0c^X2uFnyqO&n9>7#@Dh--g9pPaI zQJqKD_aMW==jd+|8Y1P@sDjOLPw5+i|Cb1y%s54GJ-P4_m0+K7Xu1Voy-T;?H?DS4 zU{MQxX2t2puUZOHr|%3zsCDD`fO?-BHZs+wO}KPy-~!W3iR`bIC3+JnYbA0JTF?9x zOE+mE2Qpt28mj9Q;V9344TC1rkLpFvi4;!ZYi?ss4;m@YF_Vt%d;aSakvCOIz?fS*My^x23@Jx0bw26{p^shL=n~!x%0$ zM>KMlOn#mzvF6&#g;n}E>tM)0>YYVl%N$&{{Wbb3s{~A|4;ozu+Hb&B;8p|RAq8wbuO*M{e4EW}k)hx?gki?JmXIf!*wsL40v zVKu~PXd$xkDu{;HU-(20q}D{t==0{cSUwe^E^-LNl5K7ogr}q*-DISP!o8S?L;99d zp?Y&Uu0bu#!$TRfoto-f3Ne~@@{wYyHf_nzTyKYJ7gj}#TUc8iQEuo!ef1DtRO@3= zwYCWN)!#ShZ`{~O2=~^Nd<1cwTBNc93imQLb|d*pKXMo}*B`R*H~M(={mSMZJ586wI_8 zjGhoNggFHNhk#WPih(KaL9UR+?gkN7G+Hhl|zrh_%<)LJ(yw zDqW>!z(^^V22o@B*Gyqb##W2!z0&^@?i688wq#Bbki#+h^cbi%-grhTv(irda6+ki z_gwM+czc&0Nwe!t>?+O7#e?@xUuDje!@&EDXai48sdAjamC|@M_?d{{q7+Z~S|lbMO5g zQC-ahAA4K=8dq zE?om}%7-D)j_^%cKEyOlbd>_)39zWYEoniJY)h3ml|sddYR|wx;CU6c^Z9g!4_24J zQ@ToYuI<}LaR zLZylPKmc=CD}rEzZSPcukFkYT>lebd6XlD9=1pl5nM`CDiB%@@s4O{)S5v*i<^FS+ z=-#KMeY|(=USLb2uhEH8SokTZ1xr&Y!BkBo`5v1}pofWECfa%OU?f>Qkss_Cas+uh zkuEU-a)6RAh;&=FH)X&vx9Vb|u!)?BgrpEAl8UrWGc3a`kv6!&dE(V%Xot*PFx6U9P=I+enw zofB~Eg|K4R$;B}Rkua4}K0GEW2xI5*g6NLg-8_Qn(Ku0bI0Uy7Ne46fji8a5csNML zrt@LycQ3~^>(SLzf@gDFz#B(oU65AbW1#=pmY*k(wCuPhAesI1#V2r9wl#~7faJsB zfns#mdU40KoA3_zKI3G{6vj|V62{;d=trck$Eif~MRKZbu_Yt04UC zG!}4sG98m_Een!&OBxN-XpJ-OPnhY96F_>bC-Mh%ARIm})Kh{4jXutG0F4=h<6F}u z``((GZM->`G3B^z*s5(yf~nfJBrMtf)#b(2#Dq|uId0}~61tyn6DCuk=^9rAQ_zsI zO{D?%1^KZ(m&mknVfX-Ayc&baD1yM=l3I}NRKcmcO)S_rbG3k^g}a|2j&q^4k&tLx zUTMm3ca3Yw_k|NFrWEea&Q9UQXLL6R8C%e>e{OXcb}gM#jPq(U>Yacknp<+=CgY3c zQB#yK4xo{2Ye1hYgW8R zz~9GsH^5(-%s$YY9GatTz<~Q9%n)|uhdVXX+z#L>0CX($c`LA{vvWK$!OQN`GY~3h zX?6^sZV2t3L3*~qo6D~82-Si11j*6eUFpXJNOuVvZUEUkGA{~*4ipGo42_@R_}M^# z9Z_NfJ#qoC21dw8s3scF_W(yHZ8A*`i0qWtMs3VZEuKI@G4^1pq2ze7K5YssXcw{9 z3bR8Nlyr}2CK?9VJn4$+HBB)h?dAz*ISaBi@CZUA!goaxn-^~dAiD$R35|&PiH|VG z#syq=LNUrwJ(;geG{GzBQ=zJaI(|7#Ot*Af$$&)fX(?PL-%Hv8GI3mL11;K@st%) zFLpuupl<`Lg&u(LSQjMf{<>NUqq!!+SrpSuOJP+|W1lRZ9^jG5slAEHme{+mcEv#L z!6A?}(@WYt$Z?me3!NxuKfXFUyXMtVn_}i5W-5@?j)2%utCuy8>!LtO1E7>hqjQvR zJAn1^x^H>?0pD)HBM*LTX{@nGjUmHh4Zex`AT$8>ab(%7Qe!Cd2CEM0uC5QgPEGVW-Hgr`7F{yp5oZ5&&_N!=8?Yd&`Hd4o-!rs^;jztcN5 zELXhNSSQ?rL=`a3);y#owo9Nw$WC@fK3U$2XT%V=hU32-kA%vuKYml<`#VNRr5!Cv z&j{S>(Feh2$e>(-;5Y+Il=_^l8qAsTEXha5b`M1&(*EF)i#N@4VS@kuR%@ zLl|G7*BmUBw&}`VA`Skbub{iv=b(S)Ta$s2akrLa^jEu!w^j=u)LQay;vtKViagcE zD^e>!@pKCp94f;TXx@SWrDNkhLzN?`%E`b1FrF&y!>V8j)9Jsf#l2Kusy| zz0Y9hh)qTxc{mNc>O&UtrxK4h_&z;@oF2d1a49|0 z=qk?>Y0QSfG&yT5p8ISngt_aZ4^`YmGk*h8FYF+sX(EJ{0a>_fXB_f*8MmL0xbG2` zI{^skK!i{?6-T(Q(mPx)JaNWMd}g9LnyAH|6s-?|+z1V9%CmziR1G#KY_dOqPXrls z^uFax`>w zk7_vSUIf7Azzs{ge+c&z5{W;yby# zMjwy`JC!ET3!yK_%`Oc~5cdvYprnDf=U3zmhH03PA?RpR$PxEKLx(nj{b&6l!qWk_ z&>2#{1cEA>kASA)Mqo1zSb{AnJc(P9MqmtN1cRV;0(x|kk7KjX$!&Rv#|N#yHX@^u5tMyGPMR=zLt3kI5SjjzPMTW)rxtqCOlQ=iNC@Y<520U&!xh%l!^n&* z%J&)>XTdg}ESAT3bQbFgBGX^sa3ishT56oZ$8_vqHc2PJaoghu0zf%K?FE94gDzmv z1tcf05Zxo#^Z7Fx-4X6%JU7#oOABv2ML)kf6H%hQWIC@Bq)v%aLogb_MJ=-NWL4{^ zuidm&o9Iyp0VuFo_(5FUv(laJB7b)is{q&2`C-ltlpD7&ENEEKF!0H zq&?Bfc6M95-gfrFK&P@?N_A$>N7do*9l%ajo!343A!|~&w0N+0_0f4CDx=6-NfXtvs_Oth*3&6_P-T z!{(@@Oc9KStGjZj*q!4LqNeb(B@vz7=_ZJqJRn#|#>hbiMAyp^fI84{3&RE5 zMrW0P??U?;!j}E>Duq#-vO0%mRFU`IfA{F9?@kqRGBT%1W{+{k6c+A^FrF{Ma&)%L zG%Xm!UXctZzb-@XI=o3ZXe_@he>LZVFg2l~bh#R(-F`|=+ZY;cply;q<8+PzsKXZ4 z<7B&j8pC5q(NWl<#UN~MrpRge_z9fwzZ3`?m53Inra&mmz4r=QHR?CXFs0mH1!mzS zP!XXyA!`m7Pq0>?4j2p(GpQsaeud)ok-|m=3O;A9=sw0pl%(T|87dZa+JZem6bQb@ zrRGtZmktb~=uslc%Z_VYBIrFf1g2lv;woA|xV7O;#G+gUa4Zb2GhPILQ7^W=9t;}= zrBra3xY(B9n?Fv4D`Kl;9aWFUsJ8XR#l|{q12lXnN@3vT!6qUS-4B0a237tQu6Xc&6^oG&IUo0LPJ<8h==ea zQcWY^T=udth|+1!5UlAD}iz?i5yCPE~z4zJU#a=0AuIW#2s9p zJzZr^JRhQTO`q7}+n!Qe|0#9DB+rfT#^JUqErOn$e$ubz zwx@#V-C9m&OKO3R9r+HWG)L8eA{Q7)frd7uI15nQBj6D(D1HR3W`kq8t6B><#hya} z)iMHdorW2)wEdFYK&I=}$B<5OUowSg-M$CZL=#=s6lEMaB5;8*SUcI`=D>&g@LXpu zs|RAm$ZlpOx;KQVx_%}WGez8o6EjS~PsG&r^Ir6teaN?^3%HGqX(`?gJn?u(>9hyq ztEFaTx4a$|CS;{0sW4PB%;r_=Wl>*@Et+oeD;Z^?Z1Pl6L-tmZ+xRO80xhglax2Q42m=G`%LtW`_~lyTyHk7OBQK z2yf&Hvm}g6|6K|$)-}c3QnRu+|4hHsU=gc-Ag>Z2`{?4b0WjS{wa9@LW#9M(QB{x^ zh9c}v>&`;G?E#ph*iWboD(nMd#$uM;iYhj9O-r#}nvTMjv{(~YB2_tj0)qkJt#-~6 z0ECEpMC6k`5W-ud4RmKa^^Ej!Cqc`Vf3LrFC5*%LNb4E$dq=3SveF6eBHp z@O_-pmWcUKRdr7;IOraT-R6XXYy#)u`o|z(J4;w;%oZ(*&sPClG&LgHOkm0YV1XN| z0Lt&pO(|q11C!UlBLXebE-vcNXuE-{4PThKe6C#VYkFnTw3P@`z$hvgw@8N55qKnF zT3=-n)jPKBccRQIH{0nU(n%Z(H!2BkI$-Ww?Wl&B9n5y{&>UPZY_rx%cG z0PVvJ6BoHC4msxZE(f)!uCs6_k)c98^&Y&IzgUFVYo&5{dz%)L7A(Xy`i@}?LD?l$ zI012@*kP)S6|-)!)Ji3nBDhaVIP5?Kx8PGjUlXNhozqhE^q%L@K~`itit9F@7mpY3Q5T=9+;|Ko3_nE@2yidzge*ZOUb- zChvt`;7}5!aN00bVAT>mhIKi-Es)HPfZm`N)9iIL6k}lQ5Z9^1 zM$ryOAJ0daJbe|EE|{8D)YPStJnarn& zvo8QoT7)sz;Z;l9p*+E8fp`2EB0-+FjLoB>!1bN6F41^vrAP}3!Lapz@@o=Uis>r` zVRAn0vuepSSE^QNG8Gc8>c4KWCSW*KP(NN^>w^};HxD8RLC*tBk|GaJfn>!Z^ueK^bj;Gc11=>lu*nE>X5e{WbpCJVfK9; z$$y+iJq2fe9u#Fz095Y*h`HQ?a&+CDq%vPwh--rQ=8+Q&&xLlMC6pNiJ)(ySd;+3M zj|Ijg21wDFlNIK-8ZwW5HBQKLkNKhM(3XTLeT8xu$t-CoC9(?}S``Gg1LECZoA=-y zVq9y61H+9340UeS1Vn|5EB!T4YV!CBx|`7|sKk!YbSuFw321;wzQm7C=xts633iC^ zP)Wn~*vHWjxl(}IAY<@Dph8Rq#1Gja4Ib|^X?fzoXJoigwxB%BWZ$1*S6QH}Zs08t z&d)))R_}q5YIJQ$` z#^8q~9numw=vCwH^CqfUb-l&QbY6;QSMXk}DXw`!WPr*;T7b}d@BiqC);S2KHJ-7D zKAXVtaORQ9>)Wca2Iw?sx#Pq(Nqd|9r&QjdsHp^^X?j|UOHl@E1tt>RhUNtZqDsmL zNeEObvB)-|^n{S%YR9Me2uYyZRHg6>cB@I5+@{C3)6_$(B17b~nak`<&NzE8^tj#Ic3nv6B(X!Ya&jL ziJoMtYZ59l5miBtKz`TQL%bi`V99WtPATrJDI5j6Tp{jmqSgxc>W$&fPeUQFaDj$v zDW{VB0AW5(PQ=zLFgj5+m6n<%CZR})bq}GF#@Nh757L6m9YFJ~!T?N!6`T}whxaW0 zALMCRu&sHtCoDvVFtBzMcN9p97GerpvSoTbsaf%=?FzW?nup{LU2)=atEuJiw?N1c zKRvv{tJx+aw+vA52kZvpGMR0ha=2KZQOdH|V4j~rm|hE!HugS`?^m(zn#@kE*R$(BlxM>h31w`?42$)L zr^j#)St}?OI2Du!o|j>WhQ^6}coSX?;pf*9qnZoSQ(M&WMyTMdxi_GitQn)7!uk2i z-?*%4J~)&kw-stjVN*;%_s(g)*~?w-05s%VqOITBqPvUDe0?gHgEdjje7IPW?E(SR z_JHE#CL`ZihyTC|P1a@;DEDwx(_ogcZlcCpcX21$0Zh#pM|KF-ImE7!YrC4;O5GZV zTjd4b4KCId9|Tqp?1^~@8nMl6Xu1gd#p&XuOu}kyz#OM1lyOVSWI4Oc zX+bQnnpS~$u)RUKF0b!>dIfgi^4i=qcHEsefsJrFtl|sGrzVxw{jA4KV^>mUJ;h8igHO%)mc}UN4^50z3 z7w2F-*dmbHEx$PPTV$-FS+0yu6){=CztA=DRqQySaHiv=M3>l8$B-n}%6vc8cxEKS z0gn^Uo2+*}I^gmx>8Yg_z_l^l4&ctoFK{wg09v#`0U83-8XiIcAD*2mP$%8kqXLVK zspOsZs!>y2kJON5t^%Fuo}_-VB-AbrVa*B+lX@d!q-MxVG3c?Hkk@L32%QMyRM;e8 zgvZ!5$0S+Q%aNEb&_*u})Z1}VsmrF;y4;XZpEn6%;m!5KF?)JS+)_Kk+0$$F#8JH@ zBExaQnEYsMOPb0bC01nEVCdK8U8if{++;3%e9*@t%aV&Jf*AoGxd%xx;dX=3r1odP2h^o;%Q~WkWie zvSGcP1X*98m=ena4Dp1Zy4>Pz;zojgXSA5m-xsc8A!>}Aj(RCtrjvOCxQRo~VE{Kr z4}b#>ac5*Vc^eFj3zYdIe_#+wM98~>gt}8Ol`wb(M@0ESh=!Y#9;E4O56&)23GIUH za1&*!XQu(;pgVI;I4(j{=LTN@H8$NS3vL)XGJqV-PB1A>WrNs%j_`t|{>3rxV28^z zS(NRkT}~RUZky;C%sTMo3Ex)fmT(p4kgj3}*^!p%?v8Cv8yTfe&9LlH{e+73v1rS5 zTVC35;ZR=C(4q9SmwC}Z%jb`u>aeX`V!`;gHNR^P7od=UZ2s11R;69>3M7VC&`y26ddJ@{G-C^zC5nkUB2 zkX%`r#yrjjw{uLMub+xe-v__Yx5{=wB=M=!mZXE_3Z(4n#nr{ALd6S0T-qq>Gwo&R_Mih=bWf?}QwRbjdz6(O#I+U=4V(1GV^Aa2RM_@sV#!M2)i6g3BAW4{p|!B7IU)jUB`0u;#+&KHyji(k0Xv-QZwIs&aI;K2=Nn zz>TU>z-^1nEphDDkT93L0}xAr3Fv=INR^JE%!_pm7jQbLrP?Vt^T!r3^V=`7C5ffb z$*B?(;0Hws$w^89Dr^=RRqw7Y<}1jz>?^*^3=H=~AqjxfT_e$c1@QEu!~6&_B20~M0F`7IB?2_YY?wEL&aU@ zq<%KZHR#&|O2yt=ukrbUCdbp7D#R{QRGG_tHhhymp<1t6_I&h-KhyPd=@)7L5_l%*D{PBfjMXKVJ)puhJC4JjJarW3oSb9;-PDzuucIUhl~Bq z9OMQwSi~Gc?+#j%(>aZG5&&ylWqWdX|Id?#*6NiATPP8nj1msB@e)TGrinUViw{Zy zuEgmC;FFTc3N8DQEIl+;9zz%LCL3FJL*K;^$@7ILm^f0(8G{g^je1?7 zb^@Wv?Vs6Nc=SD!U?Br0FJng+v#U*s5iPAQGR-E7S_EwyH)F9-<^dys2XD`YhFy;# z>?N4nhZhXPv2B_t=wv25!uNi_>6zv|m_u?&XzbCDHtdA-pDCZr*2)oHD>e^j7Z-$c zwgVf3kHx272;}mQfQh1OHc_5_DK1v-*c`+NwN*~b+j_C43nP>HIDb(}_@yv@)FZVC zK{^k?HNP6^UY(icilS%+8ExKOF9zDVf0UFclEi-a?a@qgWO%0QK z*2}d)^DqRMj%abhxW|X(Afp`5) zN-hel|6C7-=0uLSe74eU=0_~M6I$ru(aWVrN)s66P#_+PhoCZM@_EN~!n&0>?n2z{ z@Ho;CSS68-OzMGr^|FYGNZj~g9;Fqi=ZCIoGn^t@9lImz1CDs4l`cuM4HLQy-7 z7?mSmLo2e9Ga(o(D#n`npXc=atWQ4!4gpOP6<99N1EPgPSd}OPTLYC!Bb=CO<0eHh zeMe2SnO|;EN*&>#P&wmCKwcz*U1W_P=|iCEUIa0H^9bS{Jw8!D;ZuGwR9jmda8t02 zv(K2&tRN`81_VA&a)`*WTH_w%hf3jC!@|ypA|LLH8lh08#)5Hi=gc!jVhHDZFrc4E z<;wK!dxJ-gbj>P+v}fQ|Ttz>f5|^ebbh0T}V-Q^h{AlUXvEi^V%@E$bsxfT3kg-V9ZxW#@>ONTV@1w=yMR&kI8s+SI z|Kt*JWuqr{aD6GRD!sz2OudC*Ne=t8|o$q z{4m$P%QB6Xi&#wntLp(c4VkFidQ+7UW$!_bR{qE@9wc*ch@OJuLa1kUq>(g4fa2}9 zdO*z>L6-&1YT}z*lP_AGDxSVObqY0jZo0xBJ=ThWod~=sH-J&IiDdkold@i;m zw;MN})|50e4{47dNE|kJB?DG2bVi+Q-Y{XL<>{BNz>~^OK%m<09 z!D|fp9p2)Yl_jd*qn!_I3)S-sdr2}TMF$Sz6FOADF!9FQAXOH8sO!s!N~0^z zcL1R#?6O>fOW6Mb}r$5p#aV!sr}GIn}SoB<&2IQ&A`7$NPrV}R~{Ky_~JcaTfr zoQR<+_zc5R;%FvteB`e64RLj)#$K_Y$uLY7*c*EuQW>Bgy{J}^66rm(bovnvI}Sq0 z5=0t4>(TiRf5adiU*Vqj(-q%0f%=^Ml;0Ks>8re;JD|UD_yh~#&<1R}g7) zp5im;>LhoF@Ofkt2@0!mT+2jYg;4G*ZkziXjb_8^TToBDsa zYSk5V`N_5~=&GkXBrf!JVSu-|AizsjAmGzWeE>eVBmkD4Ujn4k_^-*B9}D_$eI@mj zB1e>DEEfvTMNKKF>}35u!NduYpG*jfOXh`2DBY-dUhsWAQNeVmuDj5E3Vd|RLCBZ6 z?~KlJBy=O~As76n4AiF~fwy2~Orc^}dd86PZY`nn1AIxXx zi4+Dx!Z79-T<(nKtxl;6=?A@Ff%%!*=Ldy6b_UQqHXRNf>jH5g^l)r{L5KW!J>V z(ksEPZeMEnX0c5;RY*NFlEdAP&lW$_a%(s%5bJ{;!W2iAe!ZHGc` zza&+NUEpWySyBM5U=P3?`JlX)aP*=rw~yxppixx^zZQrEKtqpdjp?9z%6pg}xFANt z&T=#ma8Q>!dh^1kgiY`SVvR{ORu+Jj|fq5Po+6xB{O%2fs*P()ZFkDbC(AsP7i=h7aK+onvrY z_9EOrjbNpwaeVs+zwiqQ%|wPVkY$mVClK{!FeOnL$C{>4GC`2x`Po7OaP&Afe+}xC z-?RNJTHf%d}9W9JSGO* zQe5@F>ep7I=t#WdI6sC6Gutd+o4Zb@$hG)X5|54@@HMGMrxQ)sDup(C!`wk9HQ>^( zHzkoqY|Dty@IXlJHA(7IAnXQQT4`Xs5SBRYK%4x06uy-&gfR_CnEF=UuC^dwE`G4Nlj1hw5Js*I)6Ub3EqsR?nF;A27 zM0($vGZeuUu&BX2{oL1hc1%-QzV(P#&^pt9g*&=JIP^Z`*S&O}{I>M&5{Q{{wEgpV za8DG&TBcKMF~)w%fVoP8?jz?qQ_8Lea)Q2fJm(Dyh zu}C3CTv_8|W{{FI8Aa2jMHIX2#~a^6>c>7zvcRC&%~S0*c(IVdaUiiqyvv~kBqXop zh=Q+za2viQ*EI`AgH0uooeOd9`;Za8p<87t1 z7-_8%#DscBR5qkC)VIk5APEj~GK~qC`^mKBR4dF0lA$-L%s7M{$bzGpc@CzS#pGaM z&e5+b%w;nD=#(duC#dcV6o7j1$^da?J&4s`Jy6JP=(r?4>oUyA5t)XaWfw3CkK#b9LXBq%&I$ParXTx#kSY(d)qcDN8LZF2d3jT&j~AEZ*_{Ow9;TR^L0!FU zgS1t@U*N5v^at+qv|-(F8sbf>-#Cb(^Baw_XyrqAkje(TZKTT0RX;z%uS?|PJov4I zpve3@#0q?jR+7RYR0H9pN)gw<-4)=d({cWsGDLC}0)n4-HVhLfcm&mWJ&A%pN$ z^-+Y;MDw<7K)~@R-2gbRsUuMjO5{>PP#=l{I1N?y}5$X$)@pD$`m=*`si6g z_CqKITvZdWMSJns{WSv-c^Q^$c50OUCi1Ef_PY;}9;#-@Nu!jzLXDgG@ghGqt|?)3 zQV74A!kP4Ff~2TPWoqsb(dl-qi8OeuF>c!$!z4phQR5t7U#Stscmv=mkP*MT2cR$`?Jd*=`no2^9@>TAKv04ctn_M~1G3 z9sqijCi$Y70NRcmJiod;UcC(7xCI(gCTWe@3Lhv5Yb`Pn#X> zF6=by8hmtzm_`lzT2VCIJU5W|>Usk?(*y8QI+Q2&Wh5xqdknQoC_AH!Y4_6XGQlAN zhS5ayF8q#0fplJ4l0k>e;D)cw#r7w_NuM?%3LhV-_f_EqH96TZu5yK0U50@+V0kX^ zL0SPS#;K)afX17Z;8;UTzZ5GfKO9K`!Uz-RC?Obo264)uER+9Nw;{84qXhxtxQUMu zK>P`MQX$Mj{S-bW--AC|>tk9y*s?7M`5xINRl6u5R!6U>0vCcsF_VQ*%Ry>#c`Z7d6gd>K%$wiC=2$=vW_ItN<0J zi9ED$sMhA_3ev(*fjxfmS)mxwKqIRpSSx}%IN-78%Lc)Am-UMz{S>td4|6c7jG={N z4V)x=#(*$cQz<0;5cCnyqb83!S>&C+kP9~7>00{9ga={L3)U;La*imtTCDkitSLVN zqU;DZAC`PX$~S6BO)UGqzb?QCoCCe#Ni|%!5!H9+{)v6=v02if(L|8FM= z@r0#qO~xY+4lFo4*kQ{OsAt}ru(>$Wj1?mtFIa*xfWgD6OmR14O@k#(s24b6Sgs7Z zU)($ifnjt8_k>)zG@uQtz`LKE^DH(qlW-bkP}2iu*D{l<&luMA>LMdTeHn4Sw3y&t z!?VtqK^ag&mDz{7MA2w(GB-A^mEi^A_09AYAbEA@KbwkPYvMA`(bH&}htQ81bTlIv zt`{RlI~{zptvoe$fZ;{c0aVF$oW!ryF&HRBGKcXP(&;ydG1fJwRaH$X_&x5m)<&ra0CBJp#MmN)GaRAZ-Re&7QAvkQEhs8|I6I%=fOUJ^S$9D1ok}|dRs3R|X&jv2 zBl1)-H?eXb5+6~(+YY!x#pk1OYN5sNpJLE3TM~qM2AShLKys!+B9<&U!&?Q}uL675 zq#n-dr^E**uz}pZs)~~SrU%}{2+zc`c&PU>d1-h$V$;`~oJML@iUZ7t`zq>%rsMJY zWt`7Bh=0dvI4fhIP9NmMA)gp$5Q84W>h&muDB}|P{;%yvvin@%s&?-1E*oPqt_(vR z#6jek*@U?{EC~QX-L{+oJxVIp@7ULPgaZ~Mo`RB<0YoqE9Og6e41wAUr_MS6`WzT& z7E*y9&Hnzn1>!Sb0|0p=@IS7L5$xg#l|R57-*gH$@^s3SjQ~edPHxmYI5RpLLm1na z3{|NPnX53aF~t3N0M*}f8bIOz;$6v0{#a;9V+p*_UafIp{Sb#ZP1x6O69XttFRp+D z&3ZXN^F;#8i6d0xNfBqgL^c@}WfT$04xnf8Y0UEHuwPrrNF*Q&<$i6=90Fii3lKb;n|{d6KNc0YLzt=Pc@lr7VFuvofmwj^T(-;}Jc$8 zd7$aG%cobSlRpAKy5_f7rjx5Pt?6`bG4qtg>B@A*Z~!u$NY+pc&2%y?f2ULMwU(5^ zZ_5BFM{FHDSenk1G75k3Z%ZbcnQbXf#o}}ldoCUFbh3~Nd`o$w6Orwe7@@pn#wG<8 zMfl`qSrZJP_4;7wOyet!qa+L(535GtkK~kUSWi-t{n{ypk_x#G&Ys7?%`W1c;@M{+ zn1p&_GWIg2LV^KE%6R@EtB|DIcR-1_P2QIUWMZvEfv`ZvmB(bz^hZ5lGiV9HXY!z0 z3i$aTE=7M7fgHA}3NBAesoD?S<82ZMlcwj1ad4B$A4aI$3V6@mmng3Qk2WyupH9$$ z8RSk+cBTA-<9UDUb$Bo_fZ)Z%0CIFb0@2za6mRg(3PZ$U8PiY9HmJ;{_KpYORBntC z9$cM{@={K8NM-h*lG-b}eHbLhYnB1@7f_5<9CHWYdPXb2Si}s@kP6zdYmFo8f?1PB#ZTD4ocshSEEW{faG?P9jG^h`x zTH9}f{kQQ(JR2P`3e%DlBI%(O@xfVB1innJ|Ku%*Man$w)>(w(10aKzH zBXOV*`2ZSH$g0E->}_C}LSInQ*k=kp-9-DAjD~hp1we#QrVHGU8hG9I01*4~{X)rb z{}iu*Ym~gYOY+(-tW?w!j1?YCZeTV(rzM41tu7zc)#)e+Q2xL}Dt&om=8FtXfS}>d zZ0td7ygm?m6JFpkyc*+sNT`8vdhqn5f?dz%k}l)=DV!ZUUmK?4mP1U;1daUKXlHwRD5KxZDw zAl&eV$PJwM2Lj4_Ksn%UQQITDc2XD~h%&5=B_n4av_QXh+)-?!5_%LyT%!aSRA6*C z;Uu^GETWXDR%7z13G$9M)$8t3HiadIceIf(k6-rfK0Y*nyc~H1y@je$2I{;>3F?*- zA0Z~|X==K5ZR9<|`kZV2v7L91@ri4+LSg^{B@Bbl{INJ-a0QR8(0e4+?Iow%2ea4H zDMDnyS@+8n{dym~M~<>~gEjXdtg#Qti?R&h&JUWHw&N%%S0=ncO;3hR{9eVloFU86c_Xw0Bd3 zg*c~(BWggLq5&vYZUEKxZ3-TNu<)z$h9=PyU>H17Zpg>N3TmgE8h?P!gEZb0BgErD zC8}d^N|jM|s)=G`q$N$2n2}(VxiHJ*D;Pb-zoj$T*&LQed1{P3k(H+44iScVKV0FA zQ^;4-$IwK*wPaXnuGiTXoE70As^WU>Ok9i$VuN(HgquMucz`_69w^mvCIPgUP!^r5 z8cHs8Cg8pS4H??I1ZEvu!PJIiW_GJk-7#ULtRQ$*mkTojerndwxFv}-THznwk@}^! zB&n4B5e)JVfy`N&?&qBVGq(iJ6KS0PH>J6&GR3LwutL7Nt&lzHhV0|A`&(KAHgWE0 zS_?NID)A>$z7s}uF-jEG; z^}>>mW~b}-4iWp~L&e{JpMG3#-joa`Q|T2Be(J**$&>?{xRbNIlM%Q56`D3_ve}_r z00c?OR6=v`B?lGrXLSB0>(Io+ZJ66-voipc4e%u!nONw$otxXJeRb4{3yg^%JEe8HYYmWG=higBS2}TQW9Y&8`v!$-_Dk% zrvWBXm;eI>`$fh?+FGAN;G^?Wiw%(~-bTeo&(^D}3n?Mv=>mYem=Zi#MQDfqFyO#Q z7QrEQ6UOZAx=iFvfY~<>ou7Z z{4Q#B?_p8Oucm&9`iLXnTxYl$*w*9*G7)-t))n+2oc-`)RB7;e_jDF=)s52e-T;fU z>F~B7gY1CSR0-j-_94upCwQ5K-d!@RL~C3V#2P5Ugc3GE)xqr`f%@4dA8UJf3P<0Y z=xS-Z2W1C(fT*SiV^QfCuvD|_UXr&iPQf^7P5YKHn3a{CZH9l-kvH*PPl$935-QVq zPC{do-l3&I!XEI03Y67&X+GftHTVWXl$~p$M=xs<3h81v0hzmjMNc?h>Z=Q}{FLvL z6pm%Tx)5y@AlA=EWTdSE6i6>$)T)gYAItJdN!d=BOj->mARWTF5g(W4bQSG}NA#xj zxsKYlvY*O#pIhPXvC%(fpNpQ67(tpiKMu!N8=uL%(sabF@+Q~3fgYIOoem~?WA{2i zD_2ZNxE|wAq+mrLVU0Ve_7RqMv?u=nk8T%>bNO#ZYk4rHQ>&TAhBD;EE1O~9xI!gH z^Scm+gMR6bp8IpS_Lo2iJ5poVXm~UL4|~W8S)jG)jA6(23FMl@Cy>SM{JO%QVZQ`% z5e?auQ3HccN)H$tkTGckuwg?Oy*F@H50Z0vb)28^V=J7hF_d{@uA3T|cMLU?2lMN3 z5=`;NKxpp9zyqFAG22ahc+@`zj)}|;HSV3AU0qT$)D*|@;bb+C!Yn?X9ioN$mIXP!OjVQOT6>lvxm_*CVl1{)uIdTC?Y{KCV%$K5wa-vj##;uD-+^U=J;~cAUd+<4mW6QF?KPpK!|HgwaQ^ z@>at$@xkg6Y9l?~aDg6xwUV@H(%WcFVMe@QZt~UG1DM89aN{88PMHppk&NA_RpWT5;r3iS1WQaS-s)HaEYgkJ8?soi48k5@zUwIFvZ8 zxV)b)@U&&MzI$aiOi>HYcT0tmGr_0lG7*jo^o7*T{>kq7>iqf)w`HmS3tg`CVX zXAKiYC)sh~NATdV0r$OG7q9iJtMkw(HrX(leIT)4A98vwYDKT5Ol(KcT1^RH;@h*ENYPx8Pdj}I(|C8W ziL!r9RI}8?(I*jY3*T5UciE0bCQw9sipl2gI-6i1T>*!N_q}YAb zSiBe!WX+|afW?PUH}gS_61sK6uJ_%X7uzvW_fL(n$ig0asD)w_c70{>UwF`TIbTHThUbRK|=Vl2w#?iqB`JIVKZrf0qX{M0Wn3CnN%X41lQ8Ix26;5 z1LMU)ZIRieq@}5E#_zvOz*A<54&yOG;Gf!But)M0hGnP;c*G8m>ov}KAPuJ1IM_5V zYf|=jB5A=Q8gF2lcv~URjFW|RK~qy7h5;6NLmJ8j!Me3LE|@J9i{73c6K5ouwZSV& z6I>*$%#48gl3WO)EQa2D|0hRB_zatmgiM4eHF5wZ_wb`av!U+s{X6ge#h?ERu-o+M ze#}=M0{-~jzZe6V^T|0bx^dniSojj_kZL}V{S-yK!S{T)lg9^LunbVRZD2JcG#$DX zk0i{|u%Ah3ml(8*{2XRwc(3Lo|b&YLUSchH+_LC z_EGD+_Snw0A@y1r&yh?17?0o+4&tqZabm*qj2$Eg3Z#d7JlIi0u;746uM8ar1!&UA z;y}P6OAirn>BL>pdsFyYEly-K{&*34CzHNNkdIYU6i|SG_ z7O^FZ$64ZvX-ny;5;sM9NGx+vH-ekT=10DCuqPT~0D|!pA0y&qpM=A;5LBX^NqKD1 zMZQAF?E~MS9%IksAc57;AR%@JkYqX+sQ+_sDPFSrB-bUT1Pn}Lof`qUn zs!Rx$vlr*e!wPy8UN9kkv2!Rd!gR{zWd2gqR2>aWrJMMoHo1zCz?f2=-~2|XPi*pO zQ>8T{1_+xM{is`#P8wpX0bRt7QV5PT!7W|Ei3oH{K7vf-;&NfmZ2%}V zuT^lN1E`~xXGXm!VJJ-fUXqi?4IJ*B41d0OrAIm?CQBE`Ur0soS8aJ= zI>}G;L3yZ;bk`gtK>XxQ!ZH?`@iUZUn0rr;H|3L*6G^JPR(doml>vK60jba0vUU(A zx=vDd#LJOz9Dod_c#hh6S`=XC5YhPc8fxH6>$7;V2l-f>%1rig%NV6&8Ab|>UNZ)a z0b?g3(}Yx8frRiw&KdS;&sfsL8P_Vb2mw{^#6y~aE~P-BwBmR4N*oio#1l&ar zW8A_Rw^)rG5&PAsL)csugzL0MraGtk2OZWT^bE+c<(31$I!wwzjLhV$491k)?Xt#3 zemXxP@zB6Hl;+%K&U3%aXfj5PAbsq$By!4T6gcw?;wR9Xo*Tq7%E@V>)|i1*T0-~J zz$x-vv;gh$5ID4O@8qUr=*$}k@God@( z0rJTX;pGNt%DJ@mIskhchd;tr^4H1dG^%uu?7A}0-R0F9Uy9LN4}Aap%Gr$jCX=|i z!GeJ`_SiGLhAAtIup))IfTb>I8lNy$I)rJ?hd>sF!1~p7Te1h3MKg9VZUY@$EBI*K zdi6|Q+e@OsL)A3>&LvjBUznFahjs5AfM3{O>M~O@nb#&yOF&Tl{lk-UL37 z<}qVO@Ms0vng-knTEp%>!`g^GOkUp%v*`@8U${3dQpUX0uz388G+!@ zKuPUbI)}6~AQQOmp?U45gTCc1K0t{OYYZmOD^?=FVP>OAgP`IWiBH(_;*uzj*DEkH`R9-jhQ ziZr6Y43BNx1=$7dZXSW!RU3s@FK8WjtL4-VrSSj*(R7cr?Y>|K1-RvQuAa41Cu z;?W#{2D;NyQf6o+23uQKC@qU(tgFVj?G9!X@c%vDUZzoH$+#s+oAvy7_tFcdkZ&x2 zm?&eQNX{_f;&;IJi4@r&12@U+63hahN`+rZ7$ZX82Ly&48z2Q)f$^l8ji8{qHAOuJ zePhb5&Hd&qRR|YlAV|(N0%1{v<(X;&uZU4m9l>K9GIE;{6|RdgJ6aYM58!k;Xe483 z`bMN0Ix-%y>IfI^-K0P8KqN?{7-6<&wN3+Q?iMxO#$gEnCM+`NGZR>J1kNKh22>d7 z&r2xiu7C$sm9?CBlst8{u{bYtWV@;MZbe_p91hT-R30G861Uv)wi@gg@u!+b(@S}s+HDdSO!4KkvDFj3qxJA+3t zJEcfu_8uHUOWgcx_Dr{*x-OqBw%vo5CX6Kj%NnMO$+kz+-g|a1FGZgj+3D8d?CLx| zQ4~P&|5FL5z%*wS;6;%#icyM3P4P?l97B|u4*`d(NI^R`PO=S51BSenOWcRUMMV_k zMu6o)#3Wh@qDSTixGTY8U-DCIk;VHmA`jr$%#&++AtLy)IxbfT0j~p423s*?q?Eyq zQrI(}PAPCBKauYk8Xl9d=a$^I7%YF#JKp6a^jJINBrEpMmojqij*bb1iUIOg1U`bw z=@Dh6xZLo9+CjcPL%CGHfDWQ}syWXwop5xA-pj(-5o8x52tv3?x4*CQHXRwltxw64RA{n?O_l+mZ^tFmX2KQI!lLj6J};3U2xhy!08 zG1*B(q_|rVsjBY);E_8>02#&l{03Z*2xFG(hh#dlpJabl!AN$uIoFa`vpe?4B)u6jZ-{*wL>GY7fT2p?^nF+K@vqP$0;=gzIj1P>3= zKy9^#f(08<4eg(tFc_FT?Y9c_;+itrhz99t$~s^d$;n52<@%0r(LK*L=#5C%mjZBO zpx-5-I`4Ezq;!4f4sx?&2gqJKqz~S8pUh4#`MH=hVW59Mz3$v!iyJ}Qzgkq)9dwNx z1*wT1AY?aAWmjk?B%|sBY$&k=wdA%mmJ>Z%vo_IB`8nU(0LW3CKS&0^0N4Cu=-DV= z!KTKEALCo~@SWfZT%Z+r%NBqbCKk$ob(_j3F!1-nlKbGm@pF0(=X>}Cm!7XV!9QH4 zI6L?zf%eI8O$*J?7Uts{t6x7g3!OKQs; zzFd*uohs8ynmY&Q7fjL;j3s3aMlwwtz9veV_54A#W3?bP&WJFNAT9`~hB|fcfHQ4Jz^Tuoe`7Nes^8<)YZ_>BvjaDCG540WvY&=$% zTqntIU=&=G z@6dYs+bBL}cmC`{es~JQm@R7(6!-qBEv~kne?j#tE}}t7%-;aYad->T%BAsCC=559 zl9cM80C|SC0#=>QHK07^M@~yrGN~5u6x8u~3;6J|$$pqJUeKoe;vuG`K!BAb{>4kV zi{!drlY}kd3 z-oD?k&fbvT*rS%}|8k8?EdwN-x@P2>px2qv{5D(l26Ox+O1;%Qe~Ef~!+U?{3uP*y`~a^2{uK(01P(R+9$ZrXEv8k?qHn2>~s?*wMuK4okgY- zPiTHaSw%I;_A_LvUsP8YkKrK#vDqjGe-|h|)7fd~{b4lSEPN$eADjCBJuf#!BkZme)xNoDqS_SCqGc|dcBXQUCHAgCu;O!pYZ?+o1 zL*;aXMogy6KwM)WBF1p7&4Lw)L50-A7U*SZrqVbakEJfgWgw4fK}A!8TtIivHzlmy zgTW-P0M7LbY^+gK%4dp?nYF}WrioE=Tk49Gs)8mr_%efETl)mS;)!Fh_q7UQ*YzgL zJO={s4fMYP+s|u!u z-AGn)`5rv3CrR!&AkS_{RiSQx*Ed!z+b1lkc}0ORgeKO1i>?gmFiaA!ya(KPegI~i zWD+(xR^?vxzFZ*CGKc#iyfCyLj1|W&q1*M2n?iwfyoYDR0CPu3FQQNgI1J#q=mD4) za{g|{V?+@J+^?t@4}p*}C1jbv;*$yOlh(}4st;iG48kQrEI$CLv!o;1JX*#CsEg5? zUP9ZOUP3TsJ=jUx22om8e;I=&iSv`cvV6fiO@qG*c^w=b|cj)qk3e) zR&`z6j6i&C6!cIeTKO80%_*s>EGAlqt3jz!0+*}&q(WC!H<5_LxPKC1ny!(ij3}$2 z0dYhxYVc4(C(ccz;XI%TTti_n(&5QQ31bsRHfS^-;5g4->bjt8CK8N*z>2^laDe7* zgkSm@*sDi2?(7KO*?eX*@`y`uA7Qr~5$+QYApqPTJwTXBMKVt8&{K6+rvQk8jt?Sl zIz5Oe`V^s;&wHO=NXugK;QJ?gG@M7o2Lz6WQ-&?P8-+Js?InqUwxpkJC2 zK3yJ10o%!?qHL~-LQBU3*n`04YW}>G-G_P$LfK_0-2=??=}vw5q>PJKAk_5QNzsFp zXet(F=?cr{=`zP3yRq8~y92_d$Z4 zFv{)IL|N@Vr!d}q4f0JS9K6KDqaw0<8dKr+lF=JLnGqOc01Ym3oUjjH<)XK0y{|4` zHaCYIqKG`_N8Mh*>HywwK{w)2$}7#2?8Q4AD+eCH8`A6*Ex{d!_OnJPZ8exv0U`xf zcl7jU7@SM3A_%`*u<6i_b6O$091U5DBQN02?-JCuW1^%Tw0eQ|>@ZAS&+xTp25CS{ zoP&GmG#?Y>ws#JgfiWZdsF!NqDs;Cc81HLf!J5M$A3|};0#GTEsAUkMgsg%_ z(x6s12YgKedQ%@mbc0vtq(P=LtlyNVDP1ps?Sz;w{N8T1Bz3T%Jtl~3CZ2-5AS|Lj zo(%w~h}l@(-Ub^UYYq#}S3)CvRr0~L(qLh!-(sYuS*o$CG->PZuTPJWxp0)6{7+!N zMIaI1aSR-RY{?Mi~>02n`ri;&7rV!~rPSUzM6T&ME@ zzA62<)S|u8(W`|+m3VUeaFxG&#N#k*&?7YC_L5IMsBgiuVL!$PhChOzmAO0W_j_bq zDOQOD_HZ&`0V`Z!%6@K+w_m^Q8=K1Bkle6~_#%lrw)78u(rPyOi{8OG14Fo&V2I_g z=9+Xr6Ev|I2^kq=nh8-2KogN$3UwAcdb&8lGYtk!v4EVwoxwMhggx*BJzK&l|Lg?G z3}F@Z)SBT9=+-4ZjZ4m!@ktxq;tYg2UND#FU9h?uXEN*>Nr{|o=BxGc^l1U$kWf-u z;?#qdh$!KEseI#=S&}yToO+1@0pNH`fz^LTUnhF4O zR>Cv8^uw{j$J##thSE#db9k6r9G^m#vy8F(703PA*(o4gO7wyRNI-CjG%-qPv5=BV z@Up;@L|jVOc&SKp2pZ#QLh(_QjLI&r#JF#CGX1H7{d3Fvu!btj=HHOa(qh?kar)tN zDL0uArc|bIlofVH;YQ$^ZY{75IL&;4$Oo2`8R0eYIizF&=mMaNBkUIlr02NI5G2av zCsnbhPS2om?;7{J+_ZS4jIr~qRx8K`UaZP#r)xr@UN|SKrVPno7(k^Jx&;uVnDqJC zCc(AvPym@$LZr!YVf8ntlLjcAYB0hL*tOx^Vgs}6DFi~b1<-ga*HU|__2xy6nc;eY zm_UdN>kwff189qhtEq; zQf*w?XRGs_X`*!p2rLV}MQ#qTDFGajg|R}iTQDhuZIlV&YT^pc;W2YOT$#ek{0cfD z9BUu47Z#QSsD>^c2UhGb8eUxCCcsB0Q8A0f7qD>f*msubLzo9g*B{>OC;8Us!^AH=1+`k9_5~qdq6T@3KJ9IAxw3vBG~G!s(g(T3_?a#V9cIgL_D&p$ z1_yCzjL9l*ryjq<7ClEIZoAHNd(f2(Q>u&4G=L zWXUK)AInrE{tVNfZus%GQkXq0{^|;pV;e(f=@PHxvxKQHv?XqTP_2$|eI#CvU1Ifb zsUzhanhWu3CFul0_7cI>+(+}*QleF~&szz~0vP${Cu?ycQT)|4v?%_i9k@d_J9fD1 zzH``gwQR{S+}nSz_J& ztov@~+}~BoLOGX!f8PBFb=>YA_S$g%A0vhN50LgLT4mjH{N3yBs^q&!zqNZ0^{>%` zHFCb}o-5bw?nIC?^!XD1ouVXrIK#jGXm+~pVZZI$-685Y>n^&bN-t36ep4H3S)!#` zhqH_{_G;EW1#HnBcik_)xV8iIXkGergSz*=xb9ud6KtkOeIE4kPw$|=EA&5SW`+1M zO3eX1$LyVAzOK+q&flqEm?@OnmU>$?ohmoy=d}BK%?C=o`!PygqVBbJ&be}OHP|*+ z>I(Un2ys@f(5K6;``rynUm|wVeSp8G>K%7d_t5+5K6*As4zBw(%HBr~mVJ)!OXR;) zh<)dJuaI`BJ;NP)8~GL}z3I9?>hGQ`cT#FY|NpGkowLOevd7-j?D-7+;9iGRv)j>s z-RFnB*896NdpoSLU(+9>jTvSLA}Q3*8fF?>mdf@$9`8C?FaYqGtK>4c*kvbumAV9I%dx) z=W?~%Vh5G&V}f|ljYiJ&%Xoh|ZlmE-HQsj3sDew+5^XyxOfna)9wIL2rh9=}F7RJ2 zW7`Uc>!Z2g^l#aqy*zsdSU_&@WAytaM)EyOC+qPx^+NU$a&5(Zh%NgUK3qoHbz3~e zD2PC6DK9~`hkkyYNRUUZ`^%3b#MwMSnRbEPt8;BfE-h=mjhInD_xe9R000VX6wNig z-Te?*48K$MCT|(yFz#D;k8JXDIqv{o8<}f2a}n4W2TUBp96Sfv%}eZKF4yhmu3}w# z$je20jyBj$?meCt?slF|PRlXECkQjW?pWiq#8Nxmt=IqOS05e+z@yq;s6M>yJRg?9 zIJXDPeLqK8?jBE^2f!iq2bhzzKt852&a0Kz76*8O&|IfdP0X{?3Y~*c+ z$Zbdp|jFbz1BVB-9p^tP43&2lk2I-Qg!HT?-}-7t)qW)w$o*- z$DPw1{HEK%F}!DLiMJ6ke~y45_JX%ON5UJ@6cJ-Y6nPhHh`+z~1LVH-`rl7=&Q3z4q!hxxhhq zSR@>Xy}4u01g%3P$(DpFFYE5FKSFEIKtl9M3XX5M4R}h3X?f(0Yj2|^o&{t2CC(jc ze6ox91;|vM5!S-dCYG+f%sPl>+=plCamBM9PhjUi?dQo$yJF{Y@6eaMeyOi8s&`!z zF?wG1B&SWXB`!BAWWTxjy6?2JLlpaSz^}XR_5aA}9!@WJBIy#IAMRLgEbiC?iYgTl)w6*ZnH% zPEO@9Qhtqp#Ot};c=1&Z$y33xaB4UXUxeg7TB-+&^YUIdrpAsn{;az#;jPO#xzZ?; zG9U6!rh!eP`ikWoaP*v4wENAvgg@%Ve%y6`u!o$VY35DruoMqBulOZP|8^~%mwoq* zL*(KC0txU9qKBvG<1-Kjtc|PDef<-puMz9MQIBr-4ekTp#!GON`^b5MoJ0cLK;3t; zG}p2o;qF^m7khFV_Gx(1i2v9d zUIZjl*dM|?PM_0CvXHbQ@zNhD7W;HpTbnE~nOrhk?ZwQiq}^!G5kJO%rWd(9ruo`~ z#W~@U&#`1AlDutheT%p$$tB>3f8uMITQ9FCGQb?c3N3X1WQ=`UI;Z=N>n6FE=zuHI z{f;+*k8n~-W=_}+4>Nnn8;IBFg3QV5|Jw^hFcE8dReN-C{MsLzZ4dgnfkZgYnb1$wt~2NQATF5zxsH``sY zQ*KYAgWUPK*Igo)Zj2l+(1KC5&*nYUU#HLvE)ge@3W>nliqDekC!!|GA-ZIL7u^q( z)4P`l&O(uT23x*w)7|>EQT?K9t?qY@(H@tJ^iZO}?)85lk}`fZlG(N}2RN=g5S1L^^ zjZ(i+iSPGI+*5AL?FRk%VLxY%cqMGSmaZM>=B0}LQFxDQ;@$3IOC+iU1OJU?T#L(ZY6mn23OO#OY z6t`m5$*HMgRmu=J?Z{RcX^{L_V_jQHtGV+3_9iVHV8?K; zk%i(7N@9aMt11=_(F4*`K(?RUv}W?uZ&B~JOdye&CWI3^@J9XWorl!MSI^s= zh8E@IUP)>$iAL@l;sTSYZ3)sP!)wl}Iui*Mf8^wJFS5i}?OpOVedOq#e%?`a*gg5p zwiUHPJb07&U1IMOR~~D*7r1;#5>ZWLsKP>(sULL$gHX2cX$N`MyPv+BZ7JMcf;q(Nfv zob+5(;&yj}_%AzEGU@1C$e) zu<7r_IvK-BqspqCpxnDZ!hs>a<|N&E{a@Xr6L|~fl|VBEuU(ZSeT9wl^<&hG}Unxev==^CS$HHkn%9cUk`rz{2x_!IO7v zTy96M5YhP)z~(wF#t?srQjfG*KSK^qDT%?45PH^Fp!@(gsYwqLDWsrH<`C`Odi~#K z!*6pBQMg#;0Y*@ypJMqhxc{BiO8P6 z#V}`?_okyH&fsw&qnQ$mdXT;>i$W%m8Kvb-S;t2-$(fGW}MURV5sJTYTeCnp@4pS!f#3tlI6KYeujTgC4GGdA|P6~ zbf0JH+iZj>YKBA;x8RG(1+h2VWJ*B*^!C!^j8MaL8#S63wceAf&)#y&a%7||u(fW;*5>_^(zSNf zwlyJPX4#%+xEhW2&v^IxM*P!u0cFw|*G?diqGV`_Q)}lWjDV`?R{jQ2aWUQLw15u z_?T9L0Ne8FW^Hgrs=^@4)(et{f*ZbFea~X$#lG9!x{;c|ydTM$l$-K^nH(@uZSi^? z-K`t#ifNXwPes0sfCY1UBSPpCjf!W6yx6r)k5$S(+?1PfU!paKpq16)>yFn z`kn4EP~?5+T)){t8~ioKyLY~ckf5;s3GMJZ9fa}!ld^*Y(4&|9tk@mi#y%j)Q+z1RQi9)Lqdp{>t&xp4<3R&1AqQ%Rhed5j@wHA9iK zhd9R&*%X(ho>~%0wg%=IC&@v2lJ=?W1+U!JF59+l7P^q&fTV8m<$FBrQTBJ-qg&5D zM(;e5&k%Znv5sXawZ0z?W`plKIPP)HKKqtC!aiYUTciF7rtHSnM}4esOz%Tsbr`q0 z*TICRt^7<1g?eN0vDWD&MnNpou42E{YV&juTZQXL0~ohU>~V}bOdt~9*Hyjs`oFw+ zGgE`Blr|?k_iR$tX8qsPjemFZZdlz&k~Xa(IcCl(_paZ_an(%5uBA3-$8uhXzt4qm zh_U%f!EzR}3NlE3{cmsHtwU7C@v?eiv+2rt5NSBXqm$Gqx2$_fMW(HL{omcZ z6CbF8R`bKrU7||wrc2FQ?#OnIOc>`Z_7GEkD0`E&X%VNWh+a)w(JhN+An(GTy@N{ibT|zRc6-wVZMsguD}60$@++|iY=?Ea|UT;}9>B~W}&xzX<1RJm8$;g>LO{+`+; zVar2(OzY2gU}Uy2>Sg^?S4vw;o+#S)pQDa?<`ThgFg~IIrt(6&uLD9JzM2kTNq$z_ z9MS}yizL1)>aAnx{&})XQ>pD03?lXWnb-a4A5?sT7cxmCLlVwa{T-*uU4 zBA5amUioP%f${G4XE95iAlFdW$uafkK!)vKJE9cwoujUsyLA83dh=E3D=Tp)(Znkq zVM=B4g@A!vT()yD!yR|IqzwJt*L=r2c?UB5eWAdx`5#6jP-THGh5dmazV{ z0-J`@Pf+&hm!N*z{bK@&;;!5oK3_yv9>olE_@Cn6&tNkD0A&AR*L`;v{WjfsJDy{k zaPaMs&v?5#(-&l(1Z$`{E-R8M6XPe|tg~Aj;w1Cjqy~ocFK;Hwjw*7_bM`>%^D-YJI^Gy!$1tn}5D-o+(KiTq+N0UNUc%xN(>D zcYRB$`CM|Pt01HM{XG3SZ|ynk<~MDHtH%>VIXX`PF&y_ASDic!u^-o$R^CqM^N~#N zKEG*u?cU}Hcq7c9haeqPMIV;5W-BQwCimzEH^Lv^X@xPhA2*+aai3Zq&KPCT_AhID zZ?~FluH)W4mM5d=kY-<|ZsS)I^@*`7*Grm_&$+4E#U1(Ae5h}=VG3s2{%zlrcd#cY zY_QOy*$3ZG(HvJOcV^ql0iZNE?q0M|=X|@izr-rdzieA=kG^2FPQOYUH(IrKz6UIi z)qBA+YfRqW+~g;$$f?Y!nQYE-vbsFqK6iYnk+;Oq@qn=|Na24->|V)auUU(A+Syuz zb>wb)h_$XvRxO=p+4?iz(6!(0@B1kKCzQNjec9H>RKT9@Fyb^b((P;wT7CWRYj-`^ z{s6ZjY&J0@b2#1A1Yz5xqzsT(rllss?lK1tFP3EU<$6bsftNBzWUeYF!Zv-C ztB1!K3-S7Y`Erf+=?hlYzUVcFOBRk=c~V+$+Bf5FrYOcZDeozC_r)XJXdHw^svho5 zmhv(BLyF&JNK^2pn!>By=~r#5?PCfaOdaqAU*(><>#y2URq>?Qy`7obQoBYHa{TJ6 zwmjq*Eq3yJcJr@VJ6DUei6tsDK{LftN7ViGLFhN}(P7a$r1G~NWFGe~!pz;#O==vD ze`+V?+6TY#?c|A^mz?c?21(DPSr!LM$vu~|zEw<}#|Z}G>EU)Jj%jrxJAkC-Ax*#Y zog@!vrtu{W>o=|&^wzX`wljMAz zclM+8fz`e(@|Gl#Kh>jN`!LV>y!#{M>|XzG+nOI*Bk^fGi?DiA2z{I2y!&^1TOe!C z<-gtiE7ZeI{wvh;J!}EWE~@f0cPj1VEqkH(-WMI;6cL|O;EFwqr+=8juW1l{{0L5`!oFebNu@Yc%^A6z3L_`7dde<=@)V-mCC^7i1z-a{{B<_ z#S(r^t^vNyf({tt#s(?W_|RH8#f%hJaU-lTvGz&9;j^T#6YGa)jYKk| z)aw@LvX>zJZq+q#Hjb6InP zZ4;Mz>+(R+n}d%UaQVwL$*iWjB)K@poJqcXPQP?hEJGd{-$q7M*^)hk_!>1TB7&ed-rAc=e}xwRYvGN#>c5x>yM&VTbaIPgozZ`-5)y+J&0 z=p@iuM;3k5L!?70*2j|*UAM}RCh#53Jm14oSLZXj!C(LPzsZhKeAgNpvQb`Y!_H=x zOfT^ixO08{_DWMmGUJEzUI;8mT=*Wm&~;z?8NCU7o1$o5F%<5T@9lo?m(uuO!xzEN zx?eV@?N{(hP}90!a?iK8w7r7atD2W5o0x;AD4$igms)?ifz7`)X!q!g+j391`+tSD zZ`j_Sl5qGnW`cJddqe!hFgFKz17b0rPnziPG!nOWSG=*vSdkn`>`vO*JLXi~1>M;h4%Z`1VT7x+t_A-EfGCcaVo&2aX+`$p||_w7-?fBQZ4w$_cE z@tuV6PR%2diya9|;d$a)e~W%S1h2&hTF-$&|0Q63BDDMF zea)_kHG4%eebIye-gaEl{j(id;nl~cyr(OXOPr#+{P(NzYQG0c4fe5~pKdX3(Qiaj zsrMM|aBaDFy??!qzM0Hh@s4hNH+jWtE4RM&5Gd;a|Lp>M-vgy`*!?ZufFbnT2bi;c zVDm%#7qD+10&;-(V<4W7QKI`M%O5J|T|A3BL_LpH(;@QhAq6#k^8lru0DgzD-(mS( zgnzDj7-GA30VBNo)`!T+K9P`wa_n~=A-=CZu`hc{V?VtUS&|rO2JG=6=3$AIpzw?1 zc3oTzo(o`;-`@k=t2>_E4s+429Q(}^Meci{ezO%?VDP>&{@{qKGWG!N@&@l7+yRs= z*}jVFLj@>LUh?)ye;Ut`{;UEs(lOt~8Ncv~4s)pMq*zV-3K4KjfH}!pD59#l2;JZ{G2QkV>EmN?7PGA0kF(ge%bcbTNCI zGeRGqRy-#UfVOa7SK~Zevant&Nq9bMy~J=fB0#xs_}2Ida3(#~l)K{_zHdm~(}}8c z(LY;N2D7Y7fHC=Pw&t_Rl_vYyeUmeu>&G1FbSeAYeckd4?!Vd(3k17wRIJ(`!|oRR6W7)FY1GCQ z)4l(D{nTttY45;mW_fPgdNH~M@5l6l3>xB{U&5o-x6Md!%IOx}sLl+5_OT8Zv8ajByy^Xz!Gz|!$V^>l?&yA(e^#- zX5Y!=exROKnY$4MQTzW#+}i-hS)KWwZ?`_WC0T9tYaB$cSRmK^4?8vrZMMg59Jp zb1PFfvy)VjEwbg*lDbJ%vNyAp?C$UXJn!kZTapR+n7JUo?|IMndCqg5uk)PKa*ESo z!glYLpkzgVE|QQ6AHO^MXs<7|%-&5ugm}(aM7}atP_mrti42A_CW1&xmfQO%gQlPS zNN>z=f{?lGUQ#r2C&sNe(X}#ek>m8H)8IrHjfK)0Q6R8aF6XX?k=+t1LLP|H;$@Q( z_!JV+&3jlR?^miNFGj>E@B?CWbt~Z&Lvz9_S2ES7`vR7dbx#rL)Gp|8gR85QT9ikV zl1k^+7`q_s%Qk1Ngf}R~+GP`L{C+rLscMDXuK$g4f2N%kiXe!cNH7%C4n;$a76l z57@TY6p*g)z^0?ms5ed&cQskg?@-?jsxKHggx5ay)|OG(uam{H)n`j9MB@+F;9$?( zB>S*%TDa{@Gf=Y6v>0`^Clu@t!GP#yrA`t8OiL8Y}`XNRd06I7DcRdg%$8T(#!YeKI>465ce zI$j|`WCIWq6%A~E`D>#W`$4-?XMm`TjMDds{muCPZSn$kM*_L-KC5%|`p@q5oR_qNiW zbg$uq)Z-dyUHvLBy5#BMBqDZUce-YORmYLBD)& zL&CFEhUl}4W5Q|7#R_=)s_|L$kp&z{6!R^@FrNdzYFM;fBARG_DzLZClR>-76px;J z;U9NK?C{*zPQTk%gD}>e585yM4?U82+Kvla|7Il3?Sw*M$bQh@zBd#E*D&8V$o0rg&rz0TY^wrDV{{4+t8b;SF z21*c6qX*m3*$GFAUdw|_Om=aN%c9%l@4xmy+5*FgZc5=V@k4^8Z^Vi1q`Lx46?)`i zB8DEhYpK{MCg9}%N)BdXdRkCIPqPaY#YBY?ck@rX6j8@^thk?pxJ4aU>T)-uNbz2| z4@C0~Qr(jqeMIa*c1CHv?a8))M{$*rhC*8N}6F5uvZcuKplf_-nB=eJn})gXm`5#Xo@xo>~0~%k^<`e2nj# z$;HlS&&Pn#8FDD3qa}p;K1SOj)P(yLc7o?$V$GT%&vzXRWK&CcSmB<%iDfcc*>1Ur zis4(ozad+OY&w(FpM0(KuhB){o5T0Edx4jjhiH2HKBq7%J%J^WNi0oyMXIBmY=@|F zD^reRD$HlKX3}!47DT0|xrGg`o(kt5BF+2i%tBC6OW^Q*pJ6=88S(`dkZvMLFcZD_ zV$(xtUxMor4clF)ng)d1#6B1ADYT0KS`Q8#=ZzBDy!Ggzo%BuXO7p4}ab1!UxTGr! zqC74Xw5vAa3j64@-_RUJ7TBJvBQt{YdW~dhKb^g)Z>|I->MQ5Amnt4wtD0e*{nq+U z{is~cmYS%GC7Wa8_u^8qKlCZJ?uv%EwNf-PtdFIq|janA6&~bgx3xyhU;9+s7z{DY9WN-?qckspSW%6YQ6JjbjNS*|KA5b>L5H zO-F?2Jh5DVg2I@VNwG7CP(i&*RmL=TTMN72uLZ$GkQBH2wKc8YP2N=a);s{w+wKGk zs;70gNHdV$z7eoItY4kR_O+22TdsF9U@pc5moR+~A#nlQZrwQH$j1x2<=Lc zW_T*f+!%~0JAt*J9d=jO!6$uwZxkn8e4$!j>N2zPp(xz;ki^ zOG^n7DSl-B{I?sWQDcW1E9I^adBUAtFJj@Sa7$c!Vl6L(qeBJ6@G zNCOLYkwsr&V?Uibi0+LNQia$-4|S%h33HTH{a8@?wM0&kOUo$AP16Gy^A@r2-GtJc zn>HY7=#*v35;YQ$v9l~1EgbB!*9q|-GR;%=3SZJb9zUPV$(p8ECWvangz74cTx_{7s9=pJjhr#VM!pW>Z;fIUPX;_;iaTIoLJ!+w?^8YdXMaOY4`^ zc5i3-i3^5qbb+z<(S-iJf4OLVd#Myz(g{tGBh#c#!JH-3lpL#Z2kIt$qJ6zP+O%@e za&$j5dXJFfMj?!^P)W2Y-*K)ZL@<4H?e4aGDy5dw9*d(YR_GI)XWQ#uT81Stvb(L` zU@%GRT|Ab|Cw{XMDXP-i4bnb-U9U3RmX1Wr^VgN5em24u=lcL7`s8n3s%=y|7t6f9 z;8Wu0wAHaiT2wmA$?@N-7uS&J93#tFH(FhugTy4*XcH~^%u?93=Ly?9AFOxLC)aa_ zj^wt$v$UeFBoB$J$S5njqnFE|wWq7welxN^9GJ1MyF&fD7=g&08-ahz*4FSq9;7QaY?Pj0%0Au^$OSDdw@?7ys`K8cgLO;tUS(|0J( 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 literal 0 HcmV?d00001 diff --git a/packages/NLog.4.7.2/lib/sl4/NLog.xml b/packages/NLog.4.7.2/lib/sl4/NLog.xml new file mode 100644 index 0000000..8e0c548 --- /dev/null +++ b/packages/NLog.4.7.2/lib/sl4/NLog.xml @@ -0,0 +1,21873 @@ + + + + NLog + + + +

+ Indicates that the value of the marked element could be null sometimes, + so the check for null is necessary before its usage. + + + [CanBeNull] object Test() => null; + + void UseTest() { + var p = Test(); + var s = p.ToString(); // Warning: Possible 'System.NullReferenceException' + } + + + + + Indicates that the value of the marked element could never be null. + + + [NotNull] object Foo() { + return null; // Warning: Possible 'null' assignment + } + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can never be null. + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can be null. + + + + + Indicates that the marked method builds string by format pattern and (optional) arguments. + Parameter, which contains format string, should be given in constructor. The format string + should be in -like form. + + + [StringFormatMethod("message")] + void ShowError(string message, params object[] args) { /* do something */ } + + void Foo() { + ShowError("Failed: {0}"); // Warning: Non-existing argument in format string + } + + + + + Specifies which parameter of an annotated method should be treated as format-string + + + + + For a parameter that is expected to be one of the limited set of values. + Specify fields of which type should be used as values for this parameter. + + + + + Indicates that the function argument should be string literal and match one + of the parameters of the caller function. For example, ReSharper annotates + the parameter of . + + + void Foo(string param) { + if (param == null) + throw new ArgumentNullException("par"); // Warning: Cannot resolve symbol + } + + + + + Indicates that the method is contained in a type that implements + System.ComponentModel.INotifyPropertyChanged interface and this method + is used to notify that some property value changed. + + + The method should be non-static and conform to one of the supported signatures: + + NotifyChanged(string) + NotifyChanged(params string[]) + NotifyChanged{T}(Expression{Func{T}}) + NotifyChanged{T,U}(Expression{Func{T,U}}) + SetProperty{T}(ref T, T, string) + + + + public class Foo : INotifyPropertyChanged { + public event PropertyChangedEventHandler PropertyChanged; + + [NotifyPropertyChangedInvocator] + protected virtual void NotifyChanged(string propertyName) { ... } + + string _name; + + public string Name { + get { return _name; } + set { _name = value; NotifyChanged("LastName"); /* Warning */ } + } + } + + Examples of generated notifications: + + NotifyChanged("Property") + NotifyChanged(() => Property) + NotifyChanged((VM x) => x.Property) + SetProperty(ref myField, value, "Property") + + + + + + Describes dependency between method input and output. + + +

Function Definition Table syntax:

+ + FDT ::= FDTRow [;FDTRow]* + FDTRow ::= Input => Output | Output <= Input + Input ::= ParameterName: Value [, Input]* + Output ::= [ParameterName: Value]* {halt|stop|void|nothing|Value} + Value ::= true | false | null | notnull | canbenull + + If method has single input parameter, it's name could be omitted.
+ Using halt (or void/nothing, which is the same) for method output + means that the methods doesn't return normally (throws or terminates the process).
+ Value canbenull is only applicable for output parameters.
+ You can use multiple [ContractAnnotation] for each FDT row, or use single attribute + with rows separated by semicolon. There is no notion of order rows, all rows are checked + for applicability and applied per each program state tracked by R# analysis.
+
+ + + [ContractAnnotation("=> halt")] + public void TerminationMethod() + + + [ContractAnnotation("halt <= condition: false")] + public void Assert(bool condition, string text) // regular assertion method + + + [ContractAnnotation("s:null => true")] + public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty() + + + // A method that returns null if the parameter is null, + // and not null if the parameter is not null + [ContractAnnotation("null => null; notnull => notnull")] + public object Transform(object data) + + + [ContractAnnotation("=> true, result: notnull; => false, result: null")] + public bool TryParse(string s, out Person result) + + +
+ + + Indicates that marked element should be localized or not. + + + [LocalizationRequiredAttribute(true)] + class Foo { + string str = "my string"; // Warning: Localizable string + } + + + + + Indicates that the value of the marked type (or its derivatives) + cannot be compared using '==' or '!=' operators and Equals() + should be used instead. However, using '==' or '!=' for comparison + with null is always permitted. + + + [CannotApplyEqualityOperator] + class NoEquality { } + + class UsesNoEquality { + void Test() { + var ca1 = new NoEquality(); + var ca2 = new NoEquality(); + if (ca1 != null) { // OK + bool condition = ca1 == ca2; // Warning + } + } + } + + + + + When applied to a target attribute, specifies a requirement for any type marked + with the target attribute to implement or inherit specific type or types. + + + [BaseTypeRequired(typeof(IComponent)] // Specify requirement + class ComponentAttribute : Attribute { } + + [Component] // ComponentAttribute requires implementing IComponent interface + class MyComponent : IComponent { } + + + + + Indicates that the marked symbol is used implicitly (e.g. via reflection, in external library), + so this symbol will not be marked as unused (as well as by other usage inspections). + + + + + Should be used on attributes and causes ReSharper to not mark symbols marked with such attributes + as unused (as well as by other usage inspections) + + + + Only entity marked with attribute considered used. + + + Indicates implicit assignment to a member. + + + + Indicates implicit instantiation of a type with fixed constructor signature. + That means any unused constructor parameters won't be reported as such. + + + + Indicates implicit instantiation of a type. + + + + Specify what is considered used implicitly when marked + with or . + + + + Members of entity marked with attribute are considered used. + + + Entity marked with attribute and all its members considered used. + + + + This attribute is intended to mark publicly available API + which should not be removed and so is treated as used. + + + + + Tells code analysis engine if the parameter is completely handled when the invoked method is on stack. + If the parameter is a delegate, indicates that delegate is executed while the method is executed. + If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + + + + + Indicates that a method does not make any observable state changes. + The same as System.Diagnostics.Contracts.PureAttribute. + + + [Pure] int Multiply(int x, int y) => x * y; + + void M() { + Multiply(123, 42); // Waring: Return value of pure method is not used + } + + + + + Indicates that the return value of method invocation must be used. + + + + + Indicates the type member or parameter of some type, that should be used instead of all other ways + to get the value that type. This annotation is useful when you have some "context" value evaluated + and stored somewhere, meaning that all other ways to get this value must be consolidated with existing one. + + + class Foo { + [ProvidesContext] IBarService _barService = ...; + + void ProcessNode(INode node) { + DoSomething(node, node.GetGlobalServices().Bar); + // ^ Warning: use value of '_barService' field + } + } + + + + + Indicates that a parameter is a path to a file or a folder within a web project. + Path can be relative or absolute, starting from web root (~). + + + + + An extension method marked with this attribute is processed by ReSharper code completion + as a 'Source Template'. When extension method is completed over some expression, it's source code + is automatically expanded like a template at call site. + + + Template method body can contain valid source code and/or special comments starting with '$'. + Text inside these comments is added as source code when the template is applied. Template parameters + can be used either as additional method parameters or as identifiers wrapped in two '$' signs. + Use the attribute to specify macros for parameters. + + + In this example, the 'forEach' method is a source template available over all values + of enumerable types, producing ordinary C# 'foreach' statement and placing caret inside block: + + [SourceTemplate] + public static void forEach<T>(this IEnumerable<T> xs) { + foreach (var x in xs) { + //$ $END$ + } + } + + + + + + Allows specifying a macro for a parameter of a source template. + + + You can apply the attribute on the whole method or on any of its additional parameters. The macro expression + is defined in the property. When applied on a method, the target + template parameter is defined in the property. To apply the macro silently + for the parameter, set the property value = -1. + + + Applying the attribute on a source template method: + + [SourceTemplate, Macro(Target = "item", Expression = "suggestVariableName()")] + public static void forEach<T>(this IEnumerable<T> collection) { + foreach (var item in collection) { + //$ $END$ + } + } + + Applying the attribute on a template method parameter: + + [SourceTemplate] + public static void something(this Entity x, [Macro(Expression = "guid()", Editable = -1)] string newguid) { + /*$ var $x$Id = "$newguid$" + x.ToString(); + x.DoSomething($x$Id); */ + } + + + + + + Allows specifying a macro that will be executed for a source template + parameter when the template is expanded. + + + + + Allows specifying which occurrence of the target parameter becomes editable when the template is deployed. + + + If the target parameter is used several times in the template, only one occurrence becomes editable; + other occurrences are changed synchronously. To specify the zero-based index of the editable occurrence, + use values >= 0. To make the parameter non-editable when the template is expanded, use -1. + > + + + + Identifies the target parameter of a source template if the + is applied on a template method. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC action. If applied to a method, the MVC action name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC area. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is + an MVC controller. If applied to a method, the MVC controller name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC Master. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC model type. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is an MVC + partial view. If applied to a method, the MVC partial view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Allows disabling inspections for MVC views within a class or a method. + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC display template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.DisplayExtensions.DisplayForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC editor template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.EditorExtensions.EditorForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC template. + Use this attribute for custom wrappers similar to + System.ComponentModel.DataAnnotations.UIHintAttribute(System.String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component. If applied to a method, the MVC view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Controller.View(Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component name. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component view. If applied to a method, the MVC view component view name is default. + + + + + ASP.NET MVC attribute. When applied to a parameter of an attribute, + indicates that this parameter is an MVC action name. + + + [ActionName("Foo")] + public ActionResult Login(string returnUrl) { + ViewBag.ReturnUrl = Url.Action("Foo"); // OK + return RedirectToAction("Bar"); // Error: Cannot resolve action + } + + + + + Razor attribute. Indicates that a parameter or a method is a Razor section. + Use this attribute for custom wrappers similar to + System.Web.WebPages.WebPageBase.RenderSection(String). + + + + + Indicates how method, constructor invocation or property access + over collection type affects content of the collection. + + + + Method does not use or modify content of the collection. + + + Method only reads content of the collection but does not modify it. + + + Method can change content of the collection but does not add new elements. + + + Method can add new elements to the collection. + + + + Indicates that the marked method is assertion method, i.e. it halts control flow if + one of the conditions is satisfied. To set the condition, mark one of the parameters with + attribute. + + + + + Indicates the condition parameter of the assertion method. The method itself should be + marked by attribute. The mandatory argument of + the attribute is the assertion type. + + + + + Specifies assertion type. If the assertion method argument satisfies the condition, + then the execution continues. Otherwise, execution is assumed to be halted. + + + + Marked parameter should be evaluated to true. + + + Marked parameter should be evaluated to false. + + + Marked parameter should be evaluated to null value. + + + Marked parameter should be evaluated to not null value. + + + + Indicates that the marked method unconditionally terminates control flow execution. + For example, it could unconditionally throw exception. + + + + + Indicates that method is pure LINQ method, with postponed enumeration (like Enumerable.Select, + .Where). This annotation allows inference of [InstantHandle] annotation for parameters + of delegate type by analyzing LINQ method chains. + + + + + Indicates that IEnumerable, passed as parameter, is not enumerated. + + + + + Indicates that parameter is regular expression pattern. + + + + + Prevents the Member Reordering feature from tossing members of the marked class. + + + The attribute must be mentioned in your member reordering patterns + + + + + XAML attribute. Indicates the type that has ItemsSource property and should be treated + as ItemsControl-derived type, to enable inner items DataContext type resolve. + + + + + XAML attribute. Indicates the property of some BindingBase-derived type, that + is used to bind some item of ItemsControl-derived type. This annotation will + enable the DataContext type resolve for XAML bindings for such properties. + + + Property should have the tree ancestor of the ItemsControl type or + marked with the attribute. + + + + + Support implementation of + + + + + + + + + + + + + + + + + Asynchronous continuation delegate - function invoked at the end of asynchronous + processing. + + Exception during asynchronous processing or null if no exception + was thrown. + + + + Helpers for asynchronous operations. + + + + + Iterates over all items in the given collection and runs the specified action + in sequence (each action executes only after the preceding one has completed without an error). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Repeats the specified asynchronous action multiple times and invokes asynchronous continuation at the end. + + The repeat count. + The asynchronous continuation to invoke at the end. + The action to invoke. + + + + Modifies the continuation by pre-pending given action to execute just before it. + + The async continuation. + The action to pre-pend. + Continuation which will execute the given action before forwarding to the actual continuation. + + + + Attaches a timeout to a continuation which will invoke the continuation when the specified + timeout has elapsed. + + The asynchronous continuation. + The timeout. + Wrapped continuation. + + + + Iterates over all items in the given collection and runs the specified action + in parallel (each action executes on a thread from thread pool). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Runs the specified asynchronous action synchronously (blocks until the continuation has + been invoked). + + The action. + + Using this method is not recommended because it will block the calling thread. + + + + + Wraps the continuation with a guard which will only make sure that the continuation function + is invoked only once. + + The asynchronous continuation. + Wrapped asynchronous continuation. + + + + Gets the combined exception from all exceptions in the list. + + The exceptions. + Combined exception or null if no exception was thrown. + + + + Disposes the Timer, and waits for it to leave the Timer-callback-method + + The Timer object to dispose + Timeout to wait (TimeSpan.Zero means dispose without waiting) + Timer disposed within timeout (true/false) + + + + Asynchronous action. + + Continuation to be invoked at the end of action. + + + + Asynchronous action with one argument. + + Type of the argument. + Argument to the action. + Continuation to be invoked at the end of action. + + + + Represents the logging event with asynchronous continuation. + + + + + Initializes a new instance of the struct. + + The log event. + The continuation. + + + + Gets the log event. + + + + + Gets the continuation. + + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + A value of true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + String Conversion Helpers + + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + Output value + Default value + Returns false if the input value could not be parsed + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + The type of the enum + Output value. Null if parse failed + + + + Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. A parameter specifies whether the operation is case-sensitive. The return value indicates whether the conversion succeeded. + + The enumeration type to which to convert value. + The string representation of the enumeration name or underlying value to convert. + true to ignore case; false to consider case. + When this method returns, result contains an object of type TEnum whose value is represented by value if the parse operation succeeds. If the parse operation fails, result contains the default value of the underlying type of TEnum. Note that this value need not be a member of the TEnum enumeration. This parameter is passed uninitialized. + true if the value parameter was converted successfully; otherwise, false. + Wrapper because Enum.TryParse is not present in .net 3.5 + + + + Enum.TryParse implementation for .net 3.5 + + + + Don't uses reflection + + + + Enables to extract extra context details for + + + + + Name of context + + + + + The current LogFactory next to LogManager + + + + + NLog internal logger. + + Writes to file, console or custom text writer (see ) + + + Don't use as that can lead to recursive calls - stackoverflow + + + + + Gets a value indicating whether internal log includes Trace messages. + + + + + Gets a value indicating whether internal log includes Debug messages. + + + + + Gets a value indicating whether internal log includes Info messages. + + + + + Gets a value indicating whether internal log includes Warn messages. + + + + + Gets a value indicating whether internal log includes Error messages. + + + + + Gets a value indicating whether internal log includes Fatal messages. + + + + + Logs the specified message without an at the Trace level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + Log message. + + + + Logs the specified message without an at the Trace level. + will be only called when logging is enabled for level Trace. + + Function that returns the log message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Trace level. + will be only called when logging is enabled for level Trace. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Debug level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Debug level. + + Log message. + + + + Logs the specified message without an at the Debug level. + will be only called when logging is enabled for level Debug. + + Function that returns the log message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Debug level. + will be only called when logging is enabled for level Debug. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Info level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Info level. + + Log message. + + + + Logs the specified message without an at the Info level. + will be only called when logging is enabled for level Info. + + Function that returns the log message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Info level. + will be only called when logging is enabled for level Info. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Warn level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Warn level. + + Log message. + + + + Logs the specified message without an at the Warn level. + will be only called when logging is enabled for level Warn. + + Function that returns the log message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Warn level. + will be only called when logging is enabled for level Warn. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Error level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Error level. + + Log message. + + + + Logs the specified message without an at the Error level. + will be only called when logging is enabled for level Error. + + Function that returns the log message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Error level. + will be only called when logging is enabled for level Error. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Fatal level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Fatal level. + + Log message. + + + + Logs the specified message without an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Function that returns the log message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Exception to be logged. + Function that returns the log message. + + + + Initializes static members of the InternalLogger class. + + + + + Set the config of the InternalLogger with defaults and config. + + + + + Gets or sets the minimal internal log level. + + If set to , then messages of the levels , and will be written. + + + + Gets or sets a value indicating whether internal messages should be written to the console output stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the console error stream. + + Your application must be a console application. + + + + Gets or sets the file path of the internal log file. + + A value of value disables internal logging to a file. + + + + Gets or sets the text writer that will receive internal logs. + + + + + Event written to the internal log. + Please note that the event is not triggered when then event hasn't the minimal log level set by + + + + + Gets or sets a value indicating whether timestamp should be included in internal log output. + + + + + Is there an thrown when writing the message? + + + + + Logs the specified message without an at the specified level. + + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the specified level. + + Log level. + Log message. + + + + Logs the specified message without an at the specified level. + will be only called when logging is enabled for level . + + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + will be only called when logging is enabled for level . + + Exception to be logged. + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Log message. + + + + Write to internallogger. + + optional exception to be logged. + level + message + optional args for + + + + Create log line with timestamp, exception message etc (if configured) + + + + + Determine if logging should be avoided because of exception type. + + The exception to check. + true if logging should be avoided; otherwise, false. + + + + Determine if logging is enabled for given LogLevel + + The for the log event. + true if logging is enabled; otherwise, false. + + + + Determine if logging is enabled. + + true if logging is enabled; otherwise, false. + + + + Write internal messages to the log file defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged only when the property is true, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged when the property is true, otherwise the + method has no effect. + + + + + Logs the assembly version and file version of the given Assembly. + + The assembly to log. + + + + A message has been written to the internal logger + + + + + The rendered message + + + + + The log level + + + + + The exception. Could be null. + + + + + The type that triggered this internal log event, for example the FileTarget. + This property is not always populated. + + + + + The context name that triggered this internal log event, for example the name of the Target. + This property is not always populated. + + + + + + + + A cyclic buffer of object. + + + + + Initializes a new instance of the class. + + Buffer size. + Whether buffer should grow as it becomes full. + The maximum number of items that the buffer can grow to. + + + + Gets the capacity of the buffer + + + + + Gets the number of items in the buffer + + + + + Adds the specified log event to the buffer. + + Log event. + The number of items in the buffer. + + + + Gets the array of events accumulated in the buffer and clears the buffer as one atomic operation. + + Events in the buffer. + + + + Condition and expression. + + + + + Initializes a new instance of the class. + + Left hand side of the AND expression. + Right hand side of the AND expression. + + + + Gets the left hand side of the AND expression. + + + + + Gets the right hand side of the AND expression. + + + + + Returns a string representation of this expression. + + A concatenated '(Left) and (Right)' string. + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the conjunction operator. + + + + Exception during evaluation of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Base class for representing nodes in condition expression trees. + + + + + Converts condition text to a condition expression tree. + + Condition text to be converted. + Condition expression tree. + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition layout expression (represented by a string literal + with embedded ${}). + + + + + Initializes a new instance of the class. + + The layout. + + + + Gets the layout. + + The layout. + + + + Returns a string representation of this expression. + + String literal in single quotes. + + + + Evaluates the expression by calculating the value + of the layout in the specified evaluation context. + + Evaluation context. + The value of the layout. + + + + Condition level expression (represented by the level keyword). + + + + + Returns a string representation of the expression. + + The 'level' string. + + + + Evaluates to the current log level. + + Evaluation context. Ignored. + The object representing current log level. + + + + Condition literal expression (numeric, LogLevel.XXX, true or false). + + + + + Initializes a new instance of the class. + + Literal value. + + + + Gets the literal value. + + The literal value. + + + + Returns a string representation of the expression. + + The literal value. + + + + Evaluates the expression. + + Evaluation context. + The literal value as passed in the constructor. + + + + Condition logger name expression (represented by the logger keyword). + + + + + Returns a string representation of this expression. + + A logger string. + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + Returns a string representation of this expression. + + The 'message' string. + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Initializes a new instance of the class. + + Condition method name. + + + + Condition method invocation expression (represented by method(p1,p2,p3) syntax). + + + + + Initializes a new instance of the class. + + Name of the condition method. + of the condition method. + Precompiled delegate of the condition method. + The method parameters. + + + + Gets the method info. + + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + A bunch of utility methods (mostly predicates) which can be used in + condition expressions. Partially inspired by XPath 1.0. + + + + + Compares two values for equality. + + The first value. + The second value. + true when two objects are equal, false otherwise. + + + + Compares two strings for equality. + + The first string. + The second string. + Optional. If true, case is ignored; if false (default), case is significant. + true when two strings are equal, false otherwise. + + + + Gets or sets a value indicating whether the second string is a substring of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a substring of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a prefix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a suffix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Returns the length of a string. + + A string whose lengths is to be evaluated. + The length of the string. + + + + Indicates whether the specified regular expression finds a match in the specified input string. + + The string to search for a match. + The regular expression pattern to match. + A string consisting of the desired options for the test. The possible values are those of the separated by commas. + true if the regular expression finds a match; otherwise, false. + + + + + + + + + + + Marks the class as containing condition methods. + + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Gets the expression to be negated. + + The expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition or expression. + + + + + Initializes a new instance of the class. + + Left hand side of the OR expression. + Right hand side of the OR expression. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + Exception during parsing of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Condition parser. Turns a string representation of condition expression + into an expression tree. + + + + + Initializes a new instance of the class. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + Instance of used to resolve references to condition methods and layout renderers. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + + Try stringed keyword to + + + + success? + + + + Parse number + + negative number? minus should be parsed first. + + + + + Condition relational (==, !=, <, <=, + > or >=) expression. + + + + + Initializes a new instance of the class. + + The left expression. + The right expression. + The relational operator. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Gets the relational operator. + + The operator. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Compares the specified values using specified relational operator. + + The first value. + The second value. + The relational operator. + Result of the given relational operator. + + + + Promote values to the type needed for the comparision, e.g. parse a string to int. + + + + + + + Promotes to type + + + + success? + + + + Try to promote both values. First try to promote to , + when failed, try to . + + + + + + Get the order for the type for comparision. + + + index, 0 to max int. Lower is first + + + + Dictionary from type to index. Lower index should be tested first. + + + + + Build the dictionary needed for the order of the types. + + + + + + Get the string representing the current + + + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + Hand-written tokenizer for conditions. + + + + + Initializes a new instance of the class. + + The string reader. + + + + Gets the type of the token. + + The type of the token. + + + + Gets the token value. + + The token value. + + + + Gets the value of a string token. + + The string token value. + + + + Asserts current token type and advances to the next token. + + Expected token type. + If token type doesn't match, an exception is thrown. + + + + Asserts that current token is a keyword and returns its value and advances to the next token. + + Keyword value. + + + + Gets or sets a value indicating whether current keyword is equal to the specified value. + + The keyword. + + A value of true if current keyword is equal to the specified value; otherwise, false. + + + + + Gets or sets a value indicating whether the tokenizer has reached the end of the token stream. + + + A value of true if the tokenizer has reached the end of the token stream; otherwise, false. + + + + + Gets or sets a value indicating whether current token is a number. + + + A value of true if current token is a number; otherwise, false. + + + + + Gets or sets a value indicating whether the specified token is of specified type. + + The token type. + + A value of true if current token is of specified type; otherwise, false. + + + + + Gets the next token and sets and properties. + + + + + Try the comparison tokens (greater, smaller, greater-equals, smaller-equals) + + current char + is match + + + + Try the logical tokens (and, or, not, equals) + + current char + is match + + + + Mapping between characters and token types for punctuations. + + + + + Initializes a new instance of the CharToTokenType struct. + + The character. + Type of the token. + + + + Token types for condition expressions. + + + + + Marks the class or a member as advanced. Advanced classes and members are hidden by + default in generated documentation. + + + + + Initializes a new instance of the class. + + + + + Identifies that the output of layout or layout render does not change for the lifetime of the current appdomain. + + + A layout(renderer) could be converted to a literal when: + - The layout and all layout properties are SimpleLayout or [AppDomainFixedOutput] + + Recommendation: Apply this attribute to a layout or layout-renderer which have the result only changes by properties of type Layout. + + + + + Used to mark configurable parameters which are arrays. + Specifies the mapping between XML elements and .NET types. + + + + + Initializes a new instance of the class. + + The type of the array item. + The XML element name that represents the item. + + + + Gets the .NET type of the array item. + + + + + Gets the XML element name. + + + + + An assembly is trying to load. + + + + + New event args + + + + + + The assembly that is trying to load. + + + + + Constructs a new instance the configuration item (target, layout, layout renderer, etc.) given its type. + + Type of the item. + Created object of the specified type. + + + + Provides registration information for named items (targets, layouts, layout renderers, etc.) managed by NLog. + + Everything of an assembly could be loaded by + + + + + Called before the assembly will be loaded. + + + + + Initializes a new instance of the class. + + The assemblies to scan for named items. + + + + Gets or sets default singleton instance of . + + + This property implements lazy instantiation so that the is not built before + the internal logger is configured. + + + + + Gets or sets the creator delegate used to instantiate configuration objects. + + + By overriding this property, one can enable dependency injection or interception for created objects. + + + + + Gets the factory. + + The target factory. + + + + Gets the factory. + + The filter factory. + + + + gets the factory + + not using due to backwards-compatibility. + + + + + Gets the factory. + + The layout renderer factory. + + + + Gets the factory. + + The layout factory. + + + + Gets the ambient property factory. + + The ambient property factory. + + + + Legacy interface, no longer used by the NLog engine + + + + + Gets or sets the JSON serializer to use with or + + + + + Gets or sets the string serializer to use with + + + + + Gets or sets the custom object-type transformation for use in , or + + + + + Gets or sets the parameter converter to use with , or + + + + + Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) + + + - Null (Auto Detect) : NLog-parser checks for positional parameters, and will then fallback to string.Format-rendering. + - True: Always performs the parsing of and rendering of using the NLog-parser (Allows custom formatting with ) + - False: Always performs parsing and rendering using string.Format (Fastest if not using structured logging) + + + + + Gets the time source factory. + + The time source factory. + + + + Gets the condition method factory. + + The condition method factory. + + + + Gets the condition method factory (precompiled) + + The condition method factory. + + + + Registers named items from the assembly. + + The assembly. + + + + Registers named items from the assembly. + + The assembly. + Item name prefix. + + + + Call Preload for NLogPackageLoader + + + Every package could implement a class "NLogPackageLoader" (namespace not important) with the public static method "Preload" (no arguments) + This method will be called just before registering all items in the assembly. + + + + + + Call the Preload method for . The Preload method must be static. + + + + + + Clears the contents of all factories. + + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Builds the default configuration item factory. + + Default factory. + + + + Registers items in NLog.Extended.dll using late-bound types, so that we don't need a reference to NLog.Extended.dll. + + + + + Attribute used to mark the default parameters for layout renderers. + + + + + Initializes a new instance of the class. + + + + + Dynamic filtering with a positive list of enabled levels + + + + + Dynamic filtering with a minlevel and maxlevel range + + + + + Format of the exception output to the specific target. + + + + + Appends the Message of an Exception to the specified target. + + + + + Appends the type of an Exception to the specified target. + + + + + Appends the short type of an Exception to the specified target. + + + + + Appends the result of calling ToString() on an Exception to the specified target. + + + + + Appends the method name from Exception's stack trace to the specified target. + + + + + Appends the stack trace from an Exception to the specified target. + + + + + Appends the contents of an Exception's Data property to the specified target. + + + + + Destructure the exception (usually into JSON) + + + + + Appends the from the application or the object that caused the error. + + + + + Appends the from the application or the object that caused the error. + + + + + Appends any additional properties that specific type of Exception might have. + + + + + Factory for class-based items. + + The base type of each item. + The type of the attribute used to annotate items. + + + + Scans the assembly. + + The types to scan. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the item based on a type name. + + Name of the item. + Name of the type. + + + + Clears the contents of the factory. + + + + + Registers a single type definition. + + The item name. + The type of the item. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Creates an item instance. + + The name of the item. + Created item. + + + + Factory specialized for s. + + + + + Clear all func layouts + + + + + Register a layout renderer with a callback function. + + Name of the layoutrenderer, without ${}. + the renderer that renders the value. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides means to populate factories of named items (such as targets, layouts, layout renderers, etc.). + + + + + Implemented by objects which support installation and uninstallation. + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Interface for accessing configuration details + + + + + Name of the config section + + + + + Configuration Key/Value Pairs + + + + + Child config sections + + + + + Interface for loading NLog + + + + + Finds and loads the NLog configuration + + LogFactory that owns the NLog configuration + Name of NLog.config file (optional) + NLog configuration (or null if none found) + + + + Notifies when LoggingConfiguration has been successfully applied + + LogFactory that owns the NLog configuration + NLog Config + + + + Get file paths (including filename) for the possible NLog config files. + + Name of NLog.config file (optional) + The file paths to the possible config file + + + + Level enabled flags for each LogLevel ordinal + + + + + Converts the filter into a simple + + + + + Represents a factory of named items (such as targets, layouts, layout renderers, etc.). + + Base type for each item instance. + Item definition type (typically or ). + + + + Registers new item definition. + + Name of the item. + Item definition. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Creates item instance. + + Name of the item. + Newly created item instance. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides context for install/uninstall operations. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log output. + + + + Gets or sets the installation log level. + + + + + Gets or sets a value indicating whether to ignore failures during installation. + + + + + Whether installation exceptions should be rethrown. If IgnoreFailures is set to true, + this property has no effect (there are no exceptions to rethrow). + + + + + Gets the installation parameters. + + + + + Gets or sets the log output. + + + + + Logs the specified trace message. + + The message. + The arguments. + + + + Logs the specified debug message. + + The message. + The arguments. + + + + Logs the specified informational message. + + The message. + The arguments. + + + + Logs the specified warning message. + + The message. + The arguments. + + + + Logs the specified error message. + + The message. + The arguments. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Creates the log event which can be used to render layouts during installation/uninstallations. + + Log event info object. + + + + Convert object-value into specified type + + + + + Parses the input value and converts into the wanted type + + Input Value + Wanted Type + Format to use when parsing + Culture to use when parsing + Output value with wanted type + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for extension loading + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for enabling NLog + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + LoggingConfiguration being built + + + + + Interface for fluent setup of LogFactory options for logevent serialization + + + + + LogFactory under configuration + + + + + Encapsulates and the logic to match the actual logger name + All subclasses defines immutable objects. + Concrete subclasses defines various matching rules through + + + + + Creates a concrete based on . + + + Rules used to select the concrete implementation returned: + + if is null => returns (never matches) + if doesn't contains any '*' nor '?' => returns (matches only on case sensitive equals) + if == '*' => returns (always matches) + if doesn't contain '?' + + if contains exactly 2 '*' one at the beginning and one at the end (i.e. "*foobar*) => returns + if contains exactly 1 '*' at the beginning (i.e. "*foobar") => returns + if contains exactly 1 '*' at the end (i.e. "foobar*") => returns + + + returns + + + + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + A concrete + + + + Returns the argument passed to + + + + + Checks whether given name matches the logger name pattern. + + String to be matched. + A value of when the name matches, otherwise. + + + + Defines a that never matches. + Used when pattern is null + + + + + Defines a that always matches. + Used when pattern is '*' + + + + + Defines a that matches with a case-sensitive Equals + Used when pattern is a string without wildcards '?' '*' + + + + + Defines a that matches with a case-sensitive StartsWith + Used when pattern is a string like "*foobar" + + + + + Defines a that matches with a case-sensitive EndsWith + Used when pattern is a string like "foobar*" + + + + + Defines a that matches with a case-sensitive Contains + Used when pattern is a string like "*foobar*" + + + + + Defines a that matches with a complex wildcards combinations: + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + used when pattern is a string containing any number of '?' or '*' in any position + i.e. "*Server[*].Connection[?]" + + + + + Keeps logging configuration and provides simple API to modify it. + + This class is thread-safe..ToList() is used for that purpose. + + + + Variables defined in xml or in API. name is case case insensitive. + + + + + Gets the factory that will be configured + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete on NLog 4.1 and it may be removed in a future release. + + + + Gets the variables defined in the configuration. + + + + + Gets a collection of named targets specified in the configuration. + + + A list of named targets. + + + Unnamed targets (such as those wrapped by other targets) are not returned. + + + + + Gets the collection of file names which should be watched for changes by NLog. + + + + + Gets the collection of logging rules. + + + + + Gets or sets the default culture info to use as . + + + Specific culture info or null to use + + + + + Gets all targets. + + + + + Compare objects based on their name. + + This property is use to cache the comparer object. + + + + Defines methods to support the comparison of objects for equality based on their name. + + + + + Registers the specified target object. The name of the target is read from . + + + The target object with a non + + when is + + + + Registers the specified target object under a given name. + + Name of the target. + The target object. + when is + when is + + + + Finds the target with the specified name. + + + The name of the target to be found. + + + Found target or when the target is not found. + + + + + Finds the target with the specified name and specified type. + + + The name of the target to be found. + + Type of the target + + Found target or when the target is not found of not of type + + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for all loglevels. + + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Finds the logging rule with the specified name. + + The name of the logging rule to be found. + Found logging rule or when not found. + + + + Removes the specified named logging rule. + + The name of the logging rule to be removed. + Found one or more logging rule to remove, or when not found. + + + + Called by LogManager when one of the log configuration files changes. + + + A new instance of that represents the updated configuration. + + + + + Removes the specified named target. + + Name of the target. + + + + Installs target-specific objects on current system. + + The installation context. + + Installation typically runs with administrative permissions. + + + + + Uninstalls target-specific objects from current system. + + The installation context. + + Uninstallation typically runs with administrative permissions. + + + + + Closes all targets and releases any unmanaged resources. + + + + + Log to the internal (NLog) logger the information about the and associated with this instance. + + + The information are only recorded in the internal logger if Debug level is enabled, otherwise nothing is + recorded. + + + + + Validates the configuration. + + + + + Copies all variables from provided dictionary into current configuration variables. + + Master variables dictionary + + + + Replace a simple variable with a value. The original value is removed and thus we cannot redo this in a later stage. + + + + + + + Checks whether unused targets exist. If found any, just write an internal log at Warn level. + If initializing not started or failed, then checking process will be canceled + + + + + + + + Arguments for events. + + + + + Initializes a new instance of the class. + + The new configuration. + The old configuration. + + + + Gets the old configuration. + + The old configuration. + + + + Gets the new configuration. + + The new configuration. + + + + Gets the new configuration + + The new configuration. + + + + Gets the old configuration + + The old configuration. + + + + Gets the optional boolean attribute value. + + + Name of the attribute. + Default value to return if the attribute is not found or if there is a parse error + Boolean attribute value or default. + + + + Remove the namespace (before :) + + + x:a, will be a + + + + + + + Enables loading of NLog configuration from a file + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Loads NLog configuration from + + + + + Constructor + + + + + + Loads NLog configuration from provided config section + + + + + + + Builds list with unique keys, using last value of duplicates. High priority keys placed first. + + + + + + + Parse loglevel, but don't throw if exception throwing is disabled + + Name of attribute for logging. + Value of parse. + Used if there is an exception + + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Parse {Rules} xml element + + + Rules are added to this parameter. + + + + Parse {Logger} xml element + + + + + + Parse boolean + + Name of the property for logging. + value to parse + Default value to return if the parse failed + Boolean attribute value or default. + + + + Represents a logging rule. An equivalent of <logger /> configuration element. + + + + + Create an empty . + + + + + Create an empty . + + + + + Create a new with a and which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a new with a which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a (disabled) . You should call or see cref="EnableLoggingForLevels"/> to enable logging. + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Target to be written to when the rule matches. + + + + Rule identifier to allow rule lookup + + + + + Gets a collection of targets that should be written to when this rule matches. + + + + + Gets a collection of child rules to be evaluated when this rule matches. + + + + + Gets a collection of filters to be checked before writing to targets. + + + + + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + + Gets or sets logger name pattern. + + + Logger name pattern used by to check if a logger name matches this rule. + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + + + + Gets the collection of log levels enabled by this rule. + + + + + Default action if none of the filters match + + + + + Enables logging for a particular level. + + Level to be enabled. + + + + Enables logging for a particular levels between (included) and . + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Disables logging for a particular level. + + Level to be disabled. + + + + Disables logging for particular levels between (included) and . + + Minimum log level to be disables. + Maximum log level to de disabled. + + + + Enables logging the levels between (included) and . All the other levels will be disabled. + + >Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Returns a string representation of . Used for debugging. + + + A that represents the current . + + + + + Checks whether te particular log level is enabled for this rule. + + Level to be checked. + A value of when the log level is enabled, otherwise. + + + + Checks whether given name matches the . + + String to be matched. + A value of when the name matches, otherwise. + + + + Default filtering with static level config + + + + + Factory for locating methods. + + + + + Initializes a new instance of the class. + + Helper method to extract relevant methods from type + + + + Scans the assembly for classes marked with expected class + and methods marked with expected and adds them + to the factory. + + The types to scan. + The prefix to use for names. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Scans a type for relevant methods with their symbolic names + + Include types that are marked with this attribute + Include methods that are marked with this attribute + Class Type to scan + Collection of methods with their symbolic names + + + + Clears contents of the factory. + + + + + Registers the definition of a single method. + + The method name. + The method info. + + + + Registers the definition of a single method. + + The method name. + The method info. + The precompiled method delegate. + + + + Tries to retrieve method by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Tries to retrieve method-delegate by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Retrieves method by name. + + Method name. + MethodInfo object. + + + + Retrieves method by name. + + Method name. + Method delegate object. + + + + Tries to get method definition. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Marks the layout or layout renderer depends on mutable objects from the LogEvent + + This can be or + + + + + Attaches a simple name to an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The name of the item. + + + + Gets the name of the item. + + The name of the item. + + + + Indicates NLog should not scan this property during configuration. + + + + + Initializes a new instance of the class. + + + + + Marks the object as configuration item for NLog. + + + + + Initializes a new instance of the class. + + + + + Represents simple XML element with case-insensitive attribute semantics. + + + + + Initializes a new instance of the class. + + The reader to initialize element from. + + + + Prevents a default instance of the class from being created. + + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + Last error occured during configuration read + + + + + Returns children elements with the specified element name. + + Name of the element. + Children elements with the specified element name. + + + + Asserts that the name of the element is among specified element names. + + The allowed names. + + + + Returns all parsing errors from current and all child elements. + + + + + Special attribute we could ignore + + + + + Default implementation of + + + + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Provides simple programmatic configuration API used for trivial logging cases. + + Warning, these methods will overwrite the current config. + + + + + Configures NLog for console logging so that all messages above and including + the level are output to the console. + + + + + Configures NLog for console logging so that all messages above and including + the specified level are output to the console. + + The minimal logging level. + + + + Configures NLog for to log to the specified target so that all messages + above and including the level are output. + + The target to log all messages to. + + + + Configures NLog for to log to the specified target so that all messages + above and including the specified level are output. + + The target to log all messages to. + The minimal logging level. + + + + Configures NLog for file logging so that all messages above and including + the level are written to the specified file. + + Log file name. + + + + Configures NLog for file logging so that all messages above and including + the specified level are written to the specified file. + + Log file name. + The minimal logging level. + + + + Value indicating how stack trace should be captured when processing the log event. + + + + + Stack trace should not be captured. + + + + + Stack trace should be captured without source-level information. + + + + + Capture maximum amount of the stack trace information supported on the platform. + + + + + Marks the layout or layout renderer as thread independent - it producing correct results + regardless of the thread it's running on. + + Without this attribute everything is rendered on the main thread. + + + If this attribute is set on a layout, it could be rendered on the another thread. + This could be more efficient as it's skipped when not needed. + + If context like HttpContext.Current is needed, which is only available on the main thread, this attribute should not be applied. + + See the AsyncTargetWrapper and BufferTargetWrapper with the , using + + Apply this attribute when: + - The result can we rendered in another thread. Delaying this could be more efficient. And/Or, + - The result should not be precalculated, for example the target sends some extra context information. + + + + + Marks the layout or layout renderer as thread safe - it producing correct results + regardless of the number of threads it's running on. + + Without this attribute then the target concurrency will be reduced + + + + + A class for configuring NLog through an XML configuration file + (App.config style or App.nlog style). + + Parsing of the XML file is also implemented in this class. + + + - This class is thread-safe..ToList() is used for that purpose. + - Update TemplateXSD.xml for changes outside targets + + + + + Initializes a new instance of the class. + + Configuration file to be read. + + + + Initializes a new instance of the class. + + Configuration file to be read. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + XML reader to read from. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + The XML contents. + Name of the XML file. + The to which to apply any applicable configuration values. + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + NLog LogFactory + + + + Did the Succeeded? true= success, false= error, null = initialize not started yet. + + + + + Gets or sets a value indicating whether all of the configuration files + should be watched for changes and reloaded automatically when changed. + + + + + Gets the collection of file names which should be watched for changes by NLog. + This is the list of configuration files processed. + If the autoReload attribute is not set it returns empty collection. + + + + + Re-reads the original configuration file and returns the new object. + + The new object. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Create XML reader for (xml config) file. + + filepath + reader or null if filename is empty. + + + + Initializes the configuration. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Checks whether any error during XML configuration parsing has occured. + If there are any and ThrowConfigExceptions or ThrowExceptions + setting is enabled - throws NLogConfigurationException, otherwise + just write an internal log at Warn level. + + Root NLog configuration xml element + + + + Add a file with configuration. Check if not already included. + + + + + + + Parse the root + + + path to config file. + The default value for the autoReload option. + + + + Parse {configuration} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parse {NLog} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Include (multiple) files by filemask, e.g. *.nlog + + base directory in case if is relative + relative or absolute fileMask + + + + + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language + described
here. + + + + + Gets or sets the condition expression. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + An abstract filter class. Provides a way to eliminate log messages + based on properties other than logger name and log level. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the action to be taken when filter matches. + + + + + + Gets the result of evaluating filter against given log event. + + The log event. + Filter result. + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Marks class as a layout renderer and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the filter. + + + + Filter result. + + + + + The filter doesn't want to decide whether to log or discard the message. + + + + + The message should be logged. + + + + + The message should not be logged. + + + + + The message should be logged and processing should be finished. + + + + + The message should not be logged and processing should be finished. + + + + + A base class for filters that are based on comparing a value to a layout. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout to be used to filter log messages. + + The layout. + + + + + Matches when the calculated layout contains the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets the substring to be matched. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets a string to compare the layout to. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches the provided filter-method + + + + + Initializes a new instance of the class. + + + + + + + + Matches when the calculated layout does NOT contain the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets the substring to be matched. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is NOT equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a string to compare the layout to. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the result of the calculated layout has been repeated a moment ago + + + + + How long before a filter expires, and logging is accepted again + + + + + + Max length of filter values, will truncate if above limit + + + + + + Applies the configured action to the initial logevent that starts the timeout period. + Used to configure that it should ignore all events until timeout. + + + + + + Max number of unique filter values to expect simultaneously + + + + + + Default number of unique filter values to expect, will automatically increase if needed + + + + + + Insert FilterCount value into when an event is no longer filtered + + + + + + Append FilterCount to the when an event is no longer filtered + + + + + + Reuse internal buffers, and doesn't have to constantly allocate new buffers + + + + + + Default buffer size for the internal buffers + + + + + + Can be used if has been enabled. + + + + + Initializes a new instance of the class. + + + + + Checks whether log event should be logged or not. In case the LogEvent has just been repeated. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Uses object pooling, and prunes stale filter items when the pool runs dry + + + + + Remove stale filter-value from the cache, and fill them into the pool for reuse + + + + + Renders the Log Event into a filter value, that is used for checking if just repeated + + + + + Repeated LogEvent detected. Checks if it should activate filter-action + + + + + Filter Value State (mutable) + + + + + Filter Lookup Key (immutable) + + + + + A fluent class to build log events for NLog. + + + + + Initializes a new instance of the class. + + The to send the log event. + + + + Initializes a new instance of the class. + + The to send the log event. + The for the log event. + + + + Gets the created by the builder. + + + + + Sets the information of the logging event. + + The exception information of the logging event. + current for chaining calls. + + + + Sets the level of the logging event. + + The level of the logging event. + current for chaining calls. + + + + Sets the logger name of the logging event. + + The logger name of the logging event. + current for chaining calls. + + + + Sets the log message on the logging event. + + The log message for the logging event. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + The fourth object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + An object that supplies culture-specific formatting information. + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets a per-event context property on the logging event. + + The name of the context property. + The value of the context property. + current for chaining calls. + + + + Sets multiple per-event context properties on the logging event. + + The properties to set. + current for chaining calls. + + + + Sets the timestamp of the logging event. + + The timestamp of the logging event. + current for chaining calls. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + current for chaining calls. + + + + Writes the log event to the underlying logger. + + + + + Writes the log event to the underlying logger. + + If condition is true, write log event; otherwise ignore event. + + + + Writes the log event to the underlying logger. + + If condition is true, write log event; otherwise ignore event. + + + + Extension methods for NLog . + + + + + Starts building a log event with the specified . + + The logger to write the log event to. + The log level. + current for chaining calls. + + + + Starts building a log event at the Trace level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Debug level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Info level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Warn level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Error level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Fatal level. + + The logger to write the log event to. + current for chaining calls. + + + + Global Diagnostics Context + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Global Diagnostics Context - a dictionary structure to hold per-application-instance values. + + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The item value, if defined; otherwise null. + + + + Returns all item names + + A collection of the names of all items in the Global Diagnostics Context. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Include context properties + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Interface for serialization of object values into JSON format + + + + + Serialization of an object into JSON format. + + The object to serialize to JSON. + Output destination. + Serialize succeeded (true/false) + + + + Provides logging interface and utility functions. + + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Logger with only generic methods (passing 'LogLevel' to methods) and core properties. + + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Extensions for NLog . + + + + + Writes the diagnostic message and exception at the specified level. + + A logger implementation that will handle the message. + The log level. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Allocates new builder and appends to the provided target builder on dispose + + + + + Access the new builder allocated + + + + + Helpers for . + + + + + Load from url + + file or path, including .dll + basepath, optional + + + + + Load from url + + name without .dll + + + + + Forward declare of system delegate type for use by other classes + + + + + Keeps track of pending operation count, and can notify when pending operation count reaches zero + + + + + Mark operation has started + + + + + Mark operation has completed + + Exception coming from the completed operation [optional] + + + + Registers an AsyncContinuation to be called when all pending operations have completed + + Invoked on completion + AsyncContinuation operation + + + + Clear o + + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Legacy attempt to skip async MoveNext, but caused source file line number to be lost + + + + + Gets the entire stack trace. + + + + + Finds first user stack frame in a stack trace + + The stack trace of the logging method invocation + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + Index of the first user stack frame or 0 if all stack frames are non-user + + + + This is only done for legacy reason, as the correct method-name and line-number should be extracted from the MoveNext-StackFrame + + The stack trace of the logging method invocation + Starting point for skipping async MoveNext-frames + + + + Assembly to skip? + + Find assembly via this frame. + true, we should skip. + + + + Is this the type of the logger? + + get type of this logger in this frame. + Type of the logger. + + + + + Memory optimized filtering + + Passing state too avoid delegate capture and memory-allocations. + + + + Provides untyped IDictionary interface on top of generic IDictionary. + + The type of the key. + The type of the value. + + + + Initializes a new instance of the DictionaryAdapter class. + + The implementation. + + + + Gets an object containing the values in the object. + + + + An object containing the values in the object. + + + + + Gets the number of elements contained in the . + + + + The number of elements contained in the . + + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + + + Gets an object that can be used to synchronize access to the . + + + + An object that can be used to synchronize access to the . + + + + + Gets a value indicating whether the object has a fixed size. + + + true if the object has a fixed size; otherwise, false. + + + + + Gets a value indicating whether the object is read-only. + + + true if the object is read-only; otherwise, false. + + + + + Gets an object containing the keys of the object. + + + + An object containing the keys of the object. + + + + + Gets or sets the with the specified key. + + Dictionary key. + Value corresponding to key or null if not found + + + + Adds an element with the provided key and value to the object. + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + + Removes all elements from the object. + + + + + Determines whether the object contains an element with the specified key. + + The key to locate in the object. + + True if the contains an element with the key; otherwise, false. + + + + + Returns an object for the object. + + + An object for the object. + + + + + Removes the element with the specified key from the object. + + The key of the element to remove. + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Wrapper IDictionaryEnumerator. + + + + + Initializes a new instance of the class. + + The wrapped. + + + + Gets both the key and the value of the current dictionary entry. + + + + A containing both the key and the value of the current dictionary entry. + + + + + Gets the key of the current dictionary entry. + + + + The key of the current element of the enumeration. + + + + + Gets the value of the current dictionary entry. + + + + The value of the current element of the enumeration. + + + + + Gets the current element in the collection. + + + + The current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + + True if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Ensures that IDictionary.GetEnumerator returns DictionaryEntry values + + + + + UTF-8 BOM 239, 187, 191 + + + + + Safe way to get environment variables. + + + + + Helper class for dealing with exceptions. + + + + + Mark this exception as logged to the . + + + + + + + Is this exception logged to the ? + + + trueif the has been logged to the . + + + + Determines whether the exception must be rethrown and logs the error to the if is false. + + Advised to log first the error to the before calling this method. + + The exception to check. + Target context of the exception. + trueif the must be rethrown, false otherwise. + + + + Determines whether the exception must be rethrown immediately, without logging the error to the . + + Only used this method in special cases. + + The exception to check. + trueif the must be rethrown, false otherwise. + + + + Object construction helper. + + + + + Adapter for to + + + + + Initializes a new instance of the class. + + The to wrap. + + + + Creates an AppDomainWrapper for the current + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + + + + + + + + + + + + + + + + + + + + + + Interface for fakeable the current . Not fully implemented, please methods/properties as necessary. + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + Abstract calls for the application environment + + + + + Abstract calls to FileSystem + + + + Determines whether the specified file exists. + The file to check. + + + Returns the content of the specified file + The file to load. + + + + Base class for optimized file appenders. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Gets the path of the file, including file extension. + + The name of the file. + + + + Gets or sets the creation time for a file associated with the appender. The time returned is in Coordinated + Universal Time [UTC] standard. + + The creation time of the file. + + + + Gets or sets the creation time for a file associated with the appender. Synchronized by + The time format is based on + + + + + Gets the last time the file associated with the appender is opened. The time returned is in Coordinated + Universal Time [UTC] standard. + + The time the file was last opened. + + + + Gets the file creation parameters. + + The file creation parameters. + + + + Writes the specified bytes. + + The bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Creates the file stream. + + If set to true sets the file stream to allow shared writing. + If larger than 0 then it will be used instead of the default BufferSize for the FileStream. + A object which can be used to write to the file. + + + + Base class for optimized file appenders which require the usage of a mutex. + + It is possible to use this class as replacement of BaseFileAppender and the mutex functionality + is not enforced to the implementing subclasses. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Implementation of which caches + file information. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Closes this instance of the appender. + + + + + Flushes this current appender. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Writes the specified bytes to a file. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Factory class which creates objects. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Maintains a collection of file appenders usually associated with file targets. + + + + + An "empty" instance of the class with zero size and empty list of appenders. + + + + + Initializes a new "empty" instance of the class with zero size and empty + list of appenders. + + + + + Initializes a new instance of the class. + + + The size of the list should be positive. No validations are performed during initialization as it is an + internal class. + + Total number of appenders allowed in list. + Factory used to create each appender. + Parameters used for creating a file. + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + Interface that provides parameters for create file function. + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + Gets or sets the log file buffer size in bytes. + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + Should archive mutex be created? + + + + + Should manual simple detection of file deletion be enabled? + + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + Interface implemented by all factories capable of creating file appenders. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + Instance of which can be used to write to the file. + + + + Appender used to discard data for the FileTarget. + Used mostly for testing entire stack except the actual writing to disk. + Throws away all data. + + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Multi-process and multi-host file appender which attempts + to get exclusive write access and retries if it's not available. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Optimized single-process file appender which keeps the file open for exclusive write. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + A layout that represents a filePath. + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + not null when == false + + + + + non null is fixed, + + + + + is the cache-key, and when newly rendered filename matches the cache-key, + then it reuses the cleaned cache-value . + + + + + is the cache-value that is reused, when the newly rendered filename + matches the cache-key + + + + Initializes a new instance of the class. + + + + Render the raw filename from Layout + + The log event. + StringBuilder to minimize allocations [optional]. + String representation of a layout. + + + + Convert the raw filename to a correct filename + + The filename generated by Layout. + String representation of a correct filename. + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Convert object to string + + value + format for conversion. + + + If is null and isn't a already, then the will get a locked by + + + + + Format a log message + + + + + Format the message and return + + LogEvent with message to be formatted + formatted message + + + + Has the logevent properties? + + LogEvent with message to be formatted + False when logevent has no properties to be extracted + + + + Appends the logevent message to the provided StringBuilder + + LogEvent with message to be formatted + The to append the formatted message. + + + + Get the Raw, unformatted and unstrinyfied, value + + + + + Get the raw value + + + The value + RawValue supported? + + + + Interface implemented by layouts and layout renderers. + + + + + Renders the the value of layout or layout renderer in the context of the specified log event. + + The log event. + String representation of a layout. + + + + Supports rendering as string value with limited or no allocations (preferred) + + + + + Renders the value of layout renderer in the context of the specified log event + + + null if not possible or unknown + + + + Supports object initialization and termination. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Render the event info as parse as short + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as int + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as bool + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Logger configuration. + + + + + Initializes a new instance of the class. + + The targets by level. + Use the old exception log handling of NLog 3.0? + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete before NLog 4.3.11 and it will be removed in NLog 5. + + + + Gets targets for the specified level. + + The level. + Chain of targets with attached filters. + + + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + New formatter + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + The MessageFormatter delegate + + + + + + + + Most-Recently-Used-Cache, that discards less frequently used items on overflow + + + + + Constructor + + Maximum number of items the cache will hold before discarding. + + + + Attempt to insert item into cache. + + Key of the item to be inserted in the cache. + Value of the item to be inserted in the cache. + true when the key does not already exist in the cache, false otherwise. + + + + Lookup existing item in cache. + + Key of the item to be searched in the cache. + Output value of the item found in the cache. + True when the key is found in the cache, false otherwise. + + + + Network sender which uses HTTP or HTTPS POST. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Creates instances of objects for given URLs. + + + + + Creates a new instance of the network sender based on a network URL. + + URL that determines the network sender to be created. + The maximum queue size. + + A newly created network sender. + + + + + Interface for mocking socket calls. + + + + + A base class for all network senders. Supports one-way sending of messages + over various protocols. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Gets the address of the network endpoint. + + + + + Gets the last send time. + + + + + Initializes this network sender. + + + + + Closes the sender and releases any unmanaged resources. + + The continuation. + + + + Flushes any pending messages and invokes a continuation. + + The continuation. + + + + Send the given text over the specified protocol. + + Bytes to be sent. + Offset in buffer. + Number of bytes to send. + The asynchronous continuation. + + + + Closes the sender and releases any unmanaged resources. + + + + + Performs sender-specific initialization. + + + + + Performs sender-specific close operation. + + The continuation. + + + + Performs sender-specific flush. + + The continuation. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Parses the URI into an endpoint address. + + The URI to parse. + The address family. + Parsed endpoint. + + + + Default implementation of . + + + + + + + + A base class for network senders that can block or send out-of-order + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Performs sender-specific flush. + + The continuation. + + + + Socket proxy for mocking Socket code. + + + + + Initializes a new instance of the class. + + The address family. + Type of the socket. + Type of the protocol. + + + + Gets underlying socket instance. + + + + + Closes the wrapped socket. + + + + + Invokes ConnectAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Sends messages over a TCP network connection. + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + The address family. + + + + Creates the socket with given parameters. + + The host address. + The address family. + Type of the socket. + Type of the protocol. + Instance of which represents the socket. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Facilitates mocking of class. + + + + + Raises the Completed event. + + + + + Scans (breadth-first) the object graph following all the edges whose are + instances have attached and returns + all objects implementing a specified interfaces. + + + + + Finds the objects which have attached which are reachable + from any of the given root objects when traversing the object graph over public properties. + + Type of the objects to return. + Also search the properties of the wanted objects. + The root objects. + Ordered list of objects implementing T. + + + ISet is not there in .net35, so using HashSet + + + + Helper for extracting propertyPath + + + + + Object Path to check + + + + + Try get value from , using , and set into + + + + + + + + Converts object into a List of property-names and -values using reflection + + + + + Scans properties for name (Skips string-compare and value-lookup until finding match) + + + + + Scans properties for name (Skips property value lookup until finding match) + + + + + Scans properties for name + + + + + Combine paths + + basepath, not null + optional dir + optional file + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Trims directory separators from the path + + path, could be null + never null + + + + Detects the platform the NLog is running on. + + + + + Gets the current runtime OS. + + + + + Gets a value indicating whether current OS is Win32-based (desktop or mobile). + + + + + Gets a value indicating whether current OS is Unix-based. + + + + + Gets a value indicating whether current runtime is Mono-based + + + + + Gets a value indicating whether current runtime supports use of mutex + + + + + Will creating a mutex succeed runtime? + "Cached" detection + + + + + Will creating a mutex succeed runtime? + + + + + Dictionary that combines the standard with the + MessageTemplate-properties extracted from the . + + The are returned as the first items + in the collection, and in positional order. + + + + + Value of the property + + + + + Is this a property of the message? + + + + + + + Value of the property + Is this a property of the message? + + + + The properties of the logEvent + + + + + The properties extracted from the message + + + + + Injects the list of message-template-parameter into the IDictionary-interface + + Message-template-parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check if the message-template-parameters can be used directly without allocating a dictionary + + Message-template-parameters + Are all parameter names unique (true / false) + + + + Attempt to insert the message-template-parameters into an empty dictionary + + Message-template-parameters + The initially empty dictionary + Message-template-parameters was inserted into dictionary without trouble (true/false) + + + + Attempt to override the existing dictionary values using the message-template-parameters + + Message-template-parameters + The already filled dictionary + List of unique message-template-parameters + + + + + + + + + + + + + + + + + + + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + + + + + + + + + + + + + + + + + Reflection helpers for accessing properties. + + + + + Set value parsed from string. + + object instance to set with property + name of the property on + The value to be parsed. + + + + + Get property info + + object which could have property + property name on + result when success. + success. + + + + Try parse of string to (Generic) list, comma separated. + + + If there is a comma in the value, then (single) quote the value. For single quotes, use the backslash as escape + + + + + Attempt to reuse the HashSet.Comparer from the original HashSet-object (Ex. StringComparer.OrdinalIgnoreCase) + + + + + Try get the property + + + + + Reflection helpers. + + + + + Gets all usable exported types from the given assembly. + + Assembly to scan. + Usable types from the given assembly. + Types which cannot be loaded are skipped. + + + + Is this a static class? + + + + This is a work around, as Type doesn't have this property. + From: https://stackoverflow.com/questions/1175888/determine-if-a-type-is-static + + + + + Optimized delegate for calling MethodInfo + + Object instance, use null for static methods. + Complete list of parameters that matches the method, including optional/default parameters. + + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Controls a single allocated AsyncLogEventInfo-List for reuse (only one active user) + + + + + Controls a single allocated char[]-buffer for reuse (only one active user) + + + + + Controls a single allocated StringBuilder for reuse (only one active user) + + + + + Controls a single allocated object for reuse (only one active user) + + + + Empty handle when is disabled + + + + Creates handle to the reusable char[]-buffer for active usage + + Handle to the reusable item, that can release it again + + + + Access the acquired reusable object + + + + + Controls a single allocated MemoryStream for reuse (only one active user) + + + + + Supported operating systems. + + + If you add anything here, make sure to add the appropriate detection + code to + + + + + Unknown operating system. + + + + + Unix/Linux operating systems. + + + + + Desktop versions of Windows (95,98,ME). + + + + + Windows NT, 2000, 2003 and future versions based on NT technology. + + + + + Macintosh Mac OSX + + + + + Simple character tokenizer. + + + + + Initializes a new instance of the class. + + The text to be tokenized. + + + + Current position in + + + + + Full text to be parsed + + + + + Check current char while not changing the position. + + + + + + Read the current char and change position + + + + + + Get the substring of the + + + + + + + + Implements a single-call guard around given continuation function. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + + + + Continuation function which implements the single-call guard. + + The exception. + + + + HashSet optimized for single item + + + + + + Insert single item on scope start, and remove on scope exit + + Item to insert in scope + Existing hashset to update + Force allocation of real hashset-container + HashSet EqualityComparer + + + + Add item to collection, if it not already exists + + Item to insert + + + + Clear hashset + + + + + Check if hashset contains item + + + Item exists in hashset (true/false) + + + + Remove item from hashset + + + Item removed from hashset (true/false) + + + + Copy items in hashset to array + + Destination array + Array offset + + + + Create hashset enumerator + + Enumerator + + + + Provides helpers to sort log events and associated continuations. + + + + + Key selector delegate. + + The type of the value. + The type of the key. + Value to extract key information from. + Key selected from log event. + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + The key comparer function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Single-Bucket optimized readonly dictionary. Uses normal internally Dictionary if multiple buckets are needed. + + Avoids allocating a new dictionary, when all items are using the same bucket + + The type of the key. + The type of the value. + + + + + + + + + + + + + + + + Allows direct lookup of existing keys. If trying to access non-existing key exception is thrown. + Consider to use instead for better safety. + + Key value for lookup + Mapped value found + + + + Non-Allocating struct-enumerator + + + + + + + + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + + + + Will always throw, as dictionary is readonly + + + + Utilities for dealing with values. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + StackFrame from the calling method + Fully qualified class name + + + + Returns the assembly from the provided StackFrame (If not internal assembly) + + Valid assembly, or null if assembly was internal + + + + Returns the classname from the provided StackFrame (If not from internal assembly) + + + Valid class name, or empty string if assembly was internal + + + + Stream helpers + + + + + Copy to output stream and skip BOM if encoding is UTF8 + + + + + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + .net35 doesn't have a .copyto + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + first bytes to skip (optional) + + + + Helpers for , which is used in e.g. layout renderers. + + + + + Renders the specified log event context item and appends it to the specified . + + append to this + value to be appended + format string. If @, then serialize the value with the Default JsonConverter. + provider, for example culture + + + + Appends int without using culture, and most importantly without garbage + + + value to append + + + + Appends uint without using culture, and most importantly without garbage + + Credits Gavin Pugh - https://www.gavpugh.com/2010/04/01/xnac-avoiding-garbage-when-working-with-stringbuilder/ + + + value to append + + + + Convert DateTime into UTC and format to yyyy-MM-ddTHH:mm:ss.fffffffZ - ISO 6801 date (Round-Trip-Time) + + + + + Clears the provider StringBuilder + + + + + + Copies the contents of the StringBuilder to the MemoryStream using the specified encoding (Without BOM/Preamble) + + StringBuilder source + MemoryStream destination + Encoding used for converter string into byte-stream + Helper char-buffer to minimize memory allocations + + + + Copies the contents of the StringBuilder to the destination StringBuilder + + StringBuilder source + StringBuilder destination + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle character to search for + + Index of the first occurrence (Else -1) + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle characters to search for + + Index of the first occurrence (Else -1) + + + + Compares the contents of two StringBuilders + + + Correct implementation of that also works when is not the same + + True when content is the same + + + + Compares the contents of a StringBuilder and a String + + True when content is the same + + + + Append a number and pad with 0 to 2 digits + + append to this + the number + + + + Append a number and pad with 0 to 4 digits + + append to this + the number + + + + Append a int type (byte, int) as string + + + + + Constructor + + Max number of items + Initial StringBuilder Size + Max StringBuilder Size + + + + Takes StringBuilder from pool + + Allow return to pool + + + + Releases StringBuilder back to pool at its right place + + + + + Keeps track of acquired pool item + + + + + Releases pool item back into pool + + + + + Helpers for . + + + + + IsNullOrWhiteSpace, including for .NET 3.5 + + + + + + + Split a string + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Represents target with a chain of filters which determine + whether logging should happen. + + + + + cached result as calculating is expensive. + + + + + Initializes a new instance of the class. + + The target. + The filter chain. + Default action if none of the filters match. + + + + Gets the target. + + The target. + + + + Gets the filter chain. + + The filter chain. + + + + Default action if none of the filters match. + + + + + Gets or sets the next item in the chain. + + The next item in the chain. + This is for example the 'target2' logger in writeTo='target1,target2' + + + + Gets the stack trace usage. + + A value that determines stack trace handling. + + + + Helper for dealing with thread-local storage. + + + + + Allocates the data slot for storing thread-local information. + + Allocated slot key. + + + + Gets the data for a slot in thread-local storage. + + Type of the data. + The slot to get data for. + Automatically create the object if it doesn't exist. + + Slot data (will create T if null). + + + + + Wraps with a timeout. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + The timeout. + + + + Continuation function which implements the timeout logic. + + The exception. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Transformation on a layout. Pre-calculated if the layout has a fixed value. + + + + + Create TransformedLayout. + + Layout + Transformation method + Optional renderer, otherwise is used + + + + + + + Create TransformedLayout. If is null, then the returns null + + Layout + Transformation method + Optional renderer, otherwise is used + null if is null + + + + + + + + + + URL Encoding helper. + + + + Allow UnreservedMarks instead of ReservedMarks, as specified by chosen RFC + + + Use RFC2396 standard (instead of RFC3986) + + + Should use lowercase when doing HEX escaping of special characters + + + Replace space ' ' with '+' instead of '%20' + + + Skip UTF8 encoding, and prefix special characters with '%u' + + + + Escape unicode string data for use in http-requests + + unicode string-data to be encoded + target for the encoded result + s for how to perform the encoding + + + + Convert the wide-char into utf8-bytes, and then escape + + + + + + + + + Is allowed? + + + + + + + + Is a-z / A-Z / 0-9 + + + + + + + Prevents the Xamarin linker from linking the target. + + + By applying this attribute all of the members of the target will be kept as if they had been referenced by the code. + + + + + Ensures that all members of this type are preserved + + + + + Flags the method as a method to preserve during linking if the container class is pulled in. + + + + + Helper class for XML + + + + + removes any unusual unicode characters that can't be encoded into XML + + + + + Cleans string of any invalid XML chars found + + unclean string + string with only valid XML chars + + + + Pretest, small text and not escape needed + + + + + + + + Converts object value to invariant format, and strips any invalid xml-characters + + Object value + Object value converted to string + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object value converted to string + + + + XML elements must follow these naming rules: + - Element names are case-sensitive + - Element names must start with a letter or underscore + - Element names can contain letters, digits, hyphens, underscores, and periods + - Element names cannot contain spaces + + + + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object TypeCode + Check and remove unusual unicode characters from the result string. + Object value converted to string + + + + Safe version of WriteAttributeString + + + + + + + + + + Safe version of WriteAttributeString + + + + + + + + Safe version of WriteElementSafeString + + + + + + + + + + Safe version of WriteCData + + + + + + + Interface for handling object transformation + + + + + Takes a dangerous (or massive) object and converts into a safe (or reduced) object + + + Null if unknown object, or object cannot be handled + + + + + Provides an interface to execute System.Actions without surfacing any exceptions raised for that action. + + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Render a message template property to a string + + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Log event context data. + + + + + Initializes a new instance of the class. + + + + + Gets or sets string that will be used to separate key/value pairs. + + + + + + Get or set if empty values should be included. + + A value is empty when null or in case of a string, null or empty string. + + + + + + Gets or sets the keys to exclude from the output. If omitted, none are excluded. + + + + + + Gets or sets how key/value pairs will be formatted. + + + + + + Renders all log event's properties and appends them to the specified . + + The to append the rendered data to. + Logging event. + + + + Designates a property of the class as an ambient property. + + + non-ambient: ${uppercase:${level}} + ambient : ${level:uppercase} + + + + + Initializes a new instance of the class. + + Ambient property name. + + + + Renders the assembly version information for the entry assembly or a named assembly. + + + As this layout renderer uses reflection and version information is unlikely to change during application execution, + it is recommended to use it in conjunction with the . + + + The entry assembly can't be found in some cases e.g. ASP.NET, unit tests, etc. + + + + + Initializes a new instance of the class. + + + + + The (full) name of the assembly. If null, using the entry assembly. + + + + + + Gets or sets the type of assembly version to retrieve. + + + Some version type and platform combinations are not fully supported. + - UWP earlier than .NET Standard 1.5: Value for is always returned unless the parameter is specified. + - Silverlight: Value for is always returned. + + + + + + Gets or sets the custom format of the assembly version output. + + + Supported placeholders are 'major', 'minor', 'build' and 'revision'. + The default .NET template for version numbers is 'major.minor.build.revision'. See + https://docs.microsoft.com/en-gb/dotnet/api/system.version?view=netframework-4.7.2#remarks + for details. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders an assembly version and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Type of assembly version to retrieve. + + + + + Gets the assembly version. + + + + + Gets the file version. + + + + + Gets additional version information. + + + + + The current application domain's base directory. + + + + + Use base dir of current process. Alternative one can just use ${processdir} + + + + + + Fallback to the base dir of current process, when AppDomain.BaseDirectory is Temp-Path (.NET Core 3 - Single File Publish) + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the base directory. + + + + + + Renders the application base directory and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site (class name, method name and source information). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to render the class name. + + + + + + Gets or sets a value indicating whether to render the include the namespace with . + + + + + + Gets or sets a value indicating whether to render the method name. + + + + + + Gets or sets a value indicating whether the method name will be cleaned up if it is detected as an anonymous delegate. + + + + + + Gets or sets a value indicating whether the method and class names will be cleaned up if it is detected as an async continuation + (everything after an await-statement inside of an async method). + + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A counter value (increases on each layout rendering). + + + + + Gets or sets the initial value of the counter. + + + + + + Gets or sets the value to be added to the counter after each layout rendering. + + + + + + Gets or sets the name of the sequence. Different named sequences can have individual values. + + + + + + + + + The current working directory of the application. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the current directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the current directory. + + + + + + + + + + + + Current date and time. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the date format. Can be any argument accepted by DateTime.ToString(format). + + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + + + + + + + + + + DB null for a database + + + + + + + + + + + The OS dependent directory separator + + + + + + + + + + + URI of the HTML page which hosts the current Silverlight application. + + + + + Renders the specified environmental information and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Log event context data. + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the name of the item. + + + + + + Renders the specified log event context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Log event context data. See . + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + + + + + + + + + + Exception information provided through + a call to one of the Logger.*Exception() methods. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the format of the output. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + + + Gets or sets the format of the output of inner exceptions. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + Gets or sets the separator used to concatenate parts specified in the Format. + + + + + + Gets or sets the separator used to concatenate exception data specified in the Format. + + + + + + Gets or sets the maximum number of inner exceptions to include in the output. + By default inner exceptions are not enabled for compatibility with NLog 1.0. + + + + + + Gets or sets the separator between inner exceptions. + + + + + + Gets or sets whether to render innermost Exception from + + + + + Gets the formats of the output of inner exceptions to be rendered in target. + + + + + + + Gets the formats of the output to be rendered in target. + + + + + + + + + + + + + Appends the Message of an Exception to the specified . + + The to append the rendered data to. + The exception containing the Message to append. + + + + Appends the method name from Exception's stack trace to the specified . + + The to append the rendered data to. + The Exception whose method name should be appended. + + + + Appends the stack trace from an Exception to the specified . + + The to append the rendered data to. + The Exception whose stack trace should be appended. + + + + Appends the result of calling ToString() on an Exception to the specified . + + The to append the rendered data to. + The Exception whose call to ToString() should be appended. + + + + Appends the type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose type should be appended. + + + + Appends the short type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose short type should be appended. + + + + Appends the application source of an Exception to the specified . + + The to append the rendered data to. + The Exception whose source should be appended. + + + + Appends the HResult of an Exception to the specified . + + The to append the rendered data to. + The Exception whose HResult should be appended. + + + + Appends the contents of an Exception's Data property to the specified . + + The to append the rendered data to. + The Exception whose Data property elements should be appended. + + + + Appends all the serialized properties of an Exception into the specified . + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Appends all the additional properties of an Exception like Data key-value-pairs + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Split the string and then compile into list of Rendering formats. + + + + + Find name of method on stracktrace. + + Full stracktrace + + + + + Renders contents of the specified file. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file. + + + + + + Gets or sets the encoding used in the file. + + The encoding. + + + + + Renders the contents of the specified file and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + Name used in config without ${}. E.g. "test" could be used as "${test}". + + + + + Method that renders the layout. + + + + + Format string for conversion from object to string. + + + + + + + + + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + The information about the garbage collector. + + + + + Gets or sets the property to retrieve. + + + + + + + + + Gets or sets the property of System.GC to retrieve. + + + + + Total memory allocated. + + + + + Total memory allocated (perform full garbage collection first). + + + + + Gets the number of Gen0 collections. + + + + + Gets the number of Gen1 collections. + + + + + Gets the number of Gen2 collections. + + + + + Maximum generation number supported by GC. + + + + + Render a Global Diagnostics Context item. See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + + + + Globally-unique identifier (GUID). + + + + + Gets or sets the GUID format as accepted by Guid.ToString() method. + + + + + + Generate the Guid from the NLog LogEvent (Will be the same for all targets) + + + + + + + + + + + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Gets or sets the name of the parameter. + + + + + + Renders the specified installation parameter and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render environmental information related to logging events. + + + + + Gets the logging configuration this target is part of. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Renders the the value of layout renderer in the context of the specified log event. + + The log event. + String representation of a layout renderer. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Renders the value of layout renderer in the context of the specified log event. + + The log event. + The layout render output is appended to builder + + + + Renders the value of layout renderer in the context of the specified log event into . + + The to append the rendered data to. + Logging event. + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Get the for rendering the messages to a + + LogEvent with culture + Culture in on Layout level + + + + + Get the for rendering the messages to a , needed for date and number formats + + LogEvent with culture + Culture in on Layout level + + + is preferred + + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Marks class as a layout renderer and assigns a name to it. + + This attribute is not required when registering the layout in the API. + + + + Initializes a new instance of the class. + + Name of the layout renderer, without the `${ }` + + + + Format of the ${level} layout renderer output. + + + + + Render the LogLevel standard name. + + + + + Render the first character of the level. + + + + + Render the ordinal (aka number) for the level. + + + + + Render the LogLevel full name, expanding Warn / Info abbreviations + + + + + The log level. + + + + + Gets or sets a value indicating the output format of the level. + + + + + + + + + + + + + + + A string literal. + + + This is used to escape '${' sequence + as ;${literal:text=${}' + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The literal text value. + This is used by the layout compiler. + + + + Gets or sets the literal text. + + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes the layout renderer. + + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets a value indicating whether the XML should use spaces for indentation. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the XML logging event and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The logger name. + + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + + + + + + + The date and time in a long, sortable format yyyy-MM-dd HH:mm:ss.ffff. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the date in the long format (yyyy-MM-dd HH:mm:ss.ffff) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render a Mapped Diagnostic Context item, See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + The formatted log message. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to log exception along with message. + + + + + + Gets or sets the string that separates message from the exception. + + + + + + Gets or sets whether it should render the raw message without formatting parameters + + + + + + + + + + + + Render a Nested Diagnostic Context item. + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested diagnostics context output. + + + + + + Renders the specified Nested Diagnostics Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A newline literal. + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The process time in format HH:mm:ss.mmm. + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + Write timestamp to builder with format hh:mm:ss:fff + + + + + The sequence ID + + + + + + + + + + + The short date in a sortable format yyyy-MM-dd. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the current short date string (yyyy-MM-dd) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Information about Silverlight application. + + + + + Initializes a new instance of the class. + + + + + Gets or sets specific information to display. + + + + + + Renders the specified environmental information and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Specifies application information to display in ${sl-appinfo} renderer. + + + + + URI of the current application XAP file. + + + + + Whether application is running out-of-browser. + + + + + Installed state of an application. + + + + + Whether application is running with elevated permissions. + + + + + System special folder path (includes My Documents, My Music, Program Files, Desktop, and more). + + + + + Gets or sets the system special folder to use. + + + Full list of options is available at MSDN. + The most common ones are: +
    +
  • ApplicationData - roaming application data for current user.
  • +
  • CommonApplicationData - application data for all users.
  • +
  • MyDocuments - My Documents
  • +
  • DesktopDirectory - Desktop directory
  • +
  • LocalApplicationData - non roaming application data
  • +
  • Personal - user profile directory
  • +
  • System - System directory
  • +
+
+ +
+ + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Format of the ${stacktrace} layout renderer output. + + + + + Raw format (multiline - as returned by StackFrame.ToString() method). + + + + + Flat format (class and method names displayed in a single line). + + + + + Detailed flat format (method signatures displayed in a single line). + + + + + Stack trace renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the output format of the stack trace. + + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets the stack frame separator string. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A temporary directory. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The identifier of the current thread. + + + + + + + + The name of the current thread. + + + + + + + + The Ticks value of current date and time. + + + + + + + + + + + The time in a 24-hour, sortable format HH:mm:ss.mmmm. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + Render a NLog variable (xml or config) + + + + + Gets or sets the name of the NLog variable. + + + + + + Gets or sets the default value to be used when the variable is not set. + + Not used if Name is null + + + + + Initializes the layout renderer. + + + + + Try get the + + + + + + + Renders the specified variable and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Applies caching to another layout output. + + + The value of the inner layout will be rendered only once and reused subsequently. + + + + + A value indicating when the cache is cleared. + + + + Never clear the cache. + + + Clear the cache whenever the is initialized. + + + Clear the cache whenever the is closed. + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether this is enabled. + + + + + + Gets or sets a value indicating when the cache is cleared. + + + + + + Cachekey. If the cachekey changes, resets the value. For example, the cachekey would be the current day.s + + + + + + Gets or sets a value indicating how many seconds the value should stay cached until it expires + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + + + + Filters characters not allowed in the file names by replacing them with safe character. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to modify the output of this renderer so it can be used as a part of file path + (illegal characters are replaced with '_'). + + + + + + + + + + + + Escapes output of another layout using JSON rules. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply JSON encoding. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + + + + + + + Left part of a text + + + + + Gets or sets the length in characters. + + + + + + Same as -property, so it can be used as ambient property. + + + ${message:truncate=80} + + + + + + + + + + + + Converts the result of another layout output to lower case. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Render the non-raw value of an object. + + For performance and/or full (formatted) control of the output. + + + + Gets or sets a value indicating whether to disable the IRawValue-interface + + A value of true if IRawValue-interface should be ignored; otherwise, false. + + + + + + + + + + + Render a single property of a object + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + Shortcut for + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + Only outputs the inner layout when exception has been defined for log message. + + + + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + ${onhasproperties:, Properties\: ${all-event-properties}} + + + + + + + + + + + Horizontal alignment for padding layout renderers. + + + + + When layout text is too long, align it to the left + (remove characters from the right). + + + + + When layout text is too long, align it to the right + (remove characters from the left). + + + + + Applies padding to another layout output. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of characters to pad the output to. + + + Positive padding values cause left padding, negative values + cause right padding to the desired width. + + + + + + Gets or sets the padding character. + + + + + + Gets or sets a value indicating whether to trim the + rendered text to the absolute value of the padding length. + + + + + + Gets or sets a value indicating whether a value that has + been truncated (when is true) + will be left-aligned (characters removed from the right) + or right-aligned (characters removed from the left). The + default is left alignment. + + RegistryLayoutRenderer + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Replaces a string in the output of another layout with another string. + + + ${replace:searchFor=\\n+:replaceWith=-:regex=true:inner=${message}} + + + + + Gets or sets the text to search for. + + The text search for. + + + + + Gets or sets a value indicating whether regular expressions should be used. + + A value of true if regular expressions should be used otherwise, false. + + + + + Gets or sets the replacement string. + + The replacement string. + + + + + Gets or sets the group name to replace when using regular expressions. + Leave null or empty to replace without using group name. + + The group name. + + + + + Gets or sets a value indicating whether to ignore case. + + A value of true if case should be ignored when searching; otherwise, false. + + + + + Gets or sets a value indicating whether to search for whole words. + + A value of true if whole words should be searched for; otherwise, false. + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Initializes the layout renderer. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + This class was created instead of simply using a lambda expression so that the "ThreadAgnosticAttributeTest" will pass + + + + + A match evaluator for Regular Expression based replacing + + Input string. + Group name in the regex. + Replace value. + Match from regex. + Groups replaced with . + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating the string that should be used for separating lines. + + + + + + + + + + + + Right part of a text + + + + + Gets or sets the length in characters. + + + + + + + + + + + + Decodes text "encrypted" with ROT-13. + + + See https://en.wikipedia.org/wiki/ROT13. + + + + + Gets or sets the layout to be wrapped. + + The layout to be wrapped. + This variable is for backwards compatibility + + + + + Encodes/Decodes ROT-13-encoded string. + + The string to be encoded/decoded. + Encoded/Decoded text. + + + + + + + + + + Encodes/Decodes ROT-13-encoded string. + + + + + Substring the result + + + ${substring:${level}:start=2:length=2} + ${substring:${level}:start=-2:length=2} + ${substring:Inner=${level}:start=2:length=2} + + + + + Initializes a new instance of the class. + + + + + Gets or sets the start index. + + Index + + + + + Gets or sets the length in characters. If null, then the whole string + + Index + + + + + + + + + + + Calculate start position + + 0 or positive number + + + + Calculate needed length + + 0 or positive number + + + + Trims the whitespace from the result of another layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + + + + + + + Converts the result of another layout output to upper case. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + ${level:uppercase} // [AmbientProperty] + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether upper case conversion should be applied. + + A value of true if upper case conversion should be applied otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Encodes the result of another layout output for use with URLs. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether spaces should be translated to '+' or '%20'. + + A value of true if space should be translated to '+'; otherwise, false. + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + + + Gets or sets the layout to be rendered when original layout produced empty result. + + + + + + + + + + + + + + + Only outputs the inner layout when the specified condition has been met. + + + + + Gets or sets the condition that must be met for the layout to be printed. + + + + + + If is not met, print this layout. + + + + + + + + + + + + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the line length for wrapping. + + + Only positive values are allowed + + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + Base class for s which wrapping other s. + + This has the property (which is default) and can be used to wrap. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + + + + + Gets or sets the wrapped layout. + + [DefaultParameter] so Inner: is not required if it's the first + + + + + + + + + Renders the inner message, processes it and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Appends the rendered output from -layout and transforms the added output (when necessary) + + Logging event. + The to append the rendered data to. + Start position for any necessary transformation of . + + + + Transforms the output of another layout. + + Logging event. + Output to be transform. + Transformed text. + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + Base class for s which wrapping other s. + + This expects the transformation to work on a + + + + + + + + Transforms the output of another layout. + + + Output to be transform. + + + + Transforms the output of another layout. + + Output to be transform. + + + + Renders the inner layout contents. + + + for the result + + + + + + + + + + + + + + + + + + Converts the result of another layout output to be XML-compliant. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply XML encoding. + + Ensures always valid XML, but gives a performance hit + + + + + Gets or sets a value indicating whether to transform newlines (\r\n) into ( ) + + + + + + + + + + + + A layout containing one or more nested layouts. + + + + + Initializes a new instance of the class. + + + + + Gets the inner layouts. + + + + + + Initializes the layout. + + + + + Formats the log event relying on inner layouts. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event relying on inner layouts. + + The logging event. + for the result + + + + Closes the layout. + + + + + Generate description of Compound Layout + + Compound Layout String Description + + + + A column in the CSV. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the column. + The layout of the column. + + + + Gets or sets the name of the column. + + + + + + Gets or sets the layout of the column. + + + + + + Gets or sets the override of Quoting mode + + + and are faster than the default + + + + + + Specifies allowed column delimiters. + + + + + Automatically detect from regional settings. + + + + + Comma (ASCII 44). + + + + + Semicolon (ASCII 59). + + + + + Tab character (ASCII 9). + + + + + Pipe character (ASCII 124). + + + + + Space character (ASCII 32). + + + + + Custom string, specified by the CustomDelimiter. + + + + + A specialized layout that renders CSV-formatted events. + + If is set, then the header generation with column names will be disabled. + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + Gets or sets a value indicating whether CVS should include header. + + A value of true if CVS should include header; otherwise, false. + + + + + Gets or sets the column delimiter. + + + + + + Gets or sets the quoting mode. + + + + + + Gets or sets the quote Character. + + + + + + Gets or sets the custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). + + + + + + Initializes the layout. + + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event for write. + + The logging event. + for the result + + + + Get the headers with the column names. + + + + + + Header with column names for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Generate description of CSV Layout + + CSV Layout String Description + + + + Specifies CSV quoting modes. + + + + + Quote all column (Fast) + + + + + Quote nothing (Very fast) + + + + + Quote only whose values contain the quote symbol or the separator (Slow) + + + + + JSON attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with json-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Json encoded. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A specialized layout that renders JSON-formatted events. + + + + + Initializes a new instance of the class. + + + + + Gets the array of attributes' configurations. + + + + + + Gets or sets the option to suppress the extra spaces in the output json + + + + + + Gets or sets the option to render the empty object value {} + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as JSON) + + + + + + List of property names to exclude when is true + + + + + + How far should the JSON serializer follow object references before backing off + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Formats the log event as a JSON document for writing. + + The logging event. + for the result + + + + Formats the log event as a JSON document for writing. + + The log event to be formatted. + A JSON string representation of the log event. + + + + Generate description of JSON Layout + + JSON Layout String Description + + + + Abstract interface that layouts must implement. + + + + + Is this layout initialized? See + + + + + Gets a value indicating whether this layout is thread-agnostic (can be rendered on any thread). + + + Layout is thread-agnostic if it has been marked with [ThreadAgnostic] attribute and all its children are + like that as well. + + Thread-agnostic layouts only use contents of for its output. + + + + + Gets the level of stack trace information required for rendering. + + + + + Gets the logging configuration this target is part of. + + + + + Converts a given text to a . + + Text to be converted. + object represented by the text. + + + + Implicitly converts the specified string to a . + + The layout string. + Instance of .' + + + + Implicitly converts the specified string to a . + + The layout string. + The NLog factories to use when resolving layout renderers. + Instance of . + + + + Implicitly converts the specified string to a . + + The layout string. + Whether should be thrown on parse errors (false = replace unrecognized tokens with a space). + Instance of . + + + + Create a from a lambda method. + + Method that renders the layout. + Tell if method is safe for concurrent threading. + Instance of . + + + + Precalculates the layout for the specified log event and stores the result + in per-log event cache. + + Only if the layout doesn't have [ThreadAgnostic] and doesn't contain layouts with [ThreadAgnostic]. + + The log event. + + Calling this method enables you to store the log event in a buffer + and/or potentially evaluate it in another thread even though the + layout may contain thread-dependent renderer. + + + + + Renders the event info in layout. + + The event info. + String representing log event. + + + + Optimized version of for internal Layouts. Works best + when override of is available. + + The event info. + Appends the string representing log event to target + Should rendering result be cached on LogEventInfo + + + + Valid default implementation of , when having implemented the optimized + + The logging event. + StringBuilder to help minimize allocations [optional]. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Optimized version of for internal Layouts, when + override of is available. + + + + + Try get value + + + rawValue if return result is true + false if we could not determine the rawValue + + + + Marks class as a layout renderer and assigns a format string to it. + + + + + Initializes a new instance of the class. + + Layout name. + + + + Parses layout strings. + + + + + Add to + + + + + + + Options available for + + + + + Default options + + + + + Layout renderer method can handle concurrent threads + + + + + Layout renderer method is agnostic to current thread context. This means it will render the same result indepdent of thread-context. + + + + + A specialized layout that supports header and footer. + + + + + Gets or sets the body layout (can be repeated multiple times). + + + + + + Gets or sets the header layout. + + + + + + Gets or sets the footer layout. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result. + + + + A specialized layout that renders Log4j-compatible XML events. + + + This layout is not meant to be used explicitly. Instead you can use ${log4jxmlevent} layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets the instance that renders log events. + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Represents a string with embedded placeholders that can render contextual information. + + + This layout is not meant to be used explicitly. Instead you can just use a string containing layout + renderers everywhere the layout is required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout string to parse. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + Whether should be thrown on parse errors. + + + + Original text before compile to Layout renderes + + + + + Gets or sets the layout text. + + + + + + Is the message fixed? (no Layout renderers used) + + + + + Get the fixed text. Only set when is true + + + + + Is the message a simple formatted string? (Can skip StringBuilder) + + + + + Gets a collection of objects that make up this layout. + + + + + Gets the level of stack trace information required for rendering. + + + + + Converts a text to a simple layout. + + Text to be converted. + A object. + + + + Escapes the passed text so that it can + be used literally in all places where + layout is normally expected without being + treated as layout. + + The text to be escaped. + The escaped text. + + Escaping is done by replacing all occurrences of + '${' with '${literal:text=${}' + + + + + Evaluates the specified text by expanding all layout renderers. + + The text to be evaluated. + Log event to be used for evaluation. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Evaluates the specified text by expanding all layout renderers + in new context. + + The text to be evaluated. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Returns a that represents the current object. + + + A that represents the current object. + + + + + + + + + + + + + + + + + + + + XML attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with xml-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A XML Element + + + + + + + + + + + Name of the element + + + + + + Value inside the element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + The name of the top XML node + The value of the top XML node + + + + Name of the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Value inside the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Auto indent and create new lines + + + + + + Gets the array of xml 'elements' configurations. + + + + + + Gets the array of 'attributes' configurations for the element + + + + + + Gets or sets whether a ElementValue with empty value should be included in the output + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as XML) + + + + + + List of property names to exclude when is true + + + + + + XML element name to use when rendering properties + + + Support string-format where {0} means property-key-name + + Skips closing element tag when having configured + + + + + + XML attribute name to use when rendering property-key + + When null (or empty) then key-attribute is not included + + + Will replace newlines in attribute-value with + + + + + + XML attribute name to use when rendering property-value + + When null (or empty) then value-attribute is not included and + value is formatted as XML-element-value + + + Skips closing element tag when using attribute for value + + Will replace newlines in attribute-value with + + + + + + XML element name to use for rendering IList-collections items + + + + + + How far should the XML serializer follow object references before backing off + + + + + + Initializes the layout. + + + + + Formats the log event as a XML document for writing. + + The logging event. + for the result + + + + Formats the log event as a XML document for writing. + + The log event to be formatted. + A XML string representation of the log event. + + + + write attribute, only if is not empty + + + + + rendered + + + + Generate description of XML Layout + + XML Layout String Description + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + + + + + + + Name of the root XML element + + + + + + Value inside the root XML element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Represents the logging event. + + + + + Gets the date of the first log event created. + + + + + The formatted log message. + + + + + The log message including any parameter placeholders + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + Exception information. + + + + Gets the unique identifier of log event which is automatically generated + and monotonously increasing. + + + + + Gets or sets the timestamp of the logging event. + + + + + Gets or sets the level of the logging event. + + + + + Gets a value indicating whether stack trace has been set for this event. + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Gets the entire stack trace. + + + + + Gets the callsite class name + + + + + Gets the callsite member function name + + + + + Gets the callsite source file path + + + + + Gets the callsite source file line number + + + + + Gets or sets the exception information. + + + + + Gets or sets the logger name. + + + + + Gets the logger short name. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the log message including any parameter placeholders. + + + + + Gets or sets the parameter values or null if no parameters have been specified. + + + + + Gets or sets the format provider that was provided while logging or + when no formatProvider was specified. + + + + + Gets or sets the message formatter for generating + Uses string.Format(...) when nothing else has been configured. + + + + + Gets the formatted message. + + + + + Checks if any per-event properties (Without allocation) + + + + + Gets the dictionary of per-event context properties. + + + + + Gets the dictionary of per-event context properties. + Internal helper for the PropertiesDictionary type. + + Create the event-properties dictionary, even if no initial template parameters + Provided when having parsed the message template and capture template parameters (else null) + + + + + Gets the named parameters extracted from parsing as MessageTemplate + + + + + Gets the dictionary of per-event context properties. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + The exception. + Instance of . + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates from this by attaching the specified asynchronous continuation. + + The asynchronous continuation. + Instance of with attached continuation. + + + + Returns a string representation of this log event. + + String representation of the log event. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace (Negative means NLog should skip stackframes from System-assemblies). + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Set the + + true = Always, false = Never, null = Auto Detect + + + + Specialized LogFactory that can return instances of custom logger types. + + Use this only when a custom Logger type is defined. + The type of the logger to be returned. Must inherit from . + + + + Gets the logger with type . + + The logger name. + An instance of . + + + + Gets a custom logger with the full name of the current class (so namespace and class name) and type . + + An instance of . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Overwrite possible file paths (including filename) for possible NLog config files. + When this property is null, the default file paths ( are used. + + + + + Occurs when logging changes. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The config. + + + + Initializes a new instance of the class. + + The config loader + The custom AppEnvironmnet override + + + + Gets the current . + + + + + Gets or sets a value indicating whether exceptions should be thrown. See also . + + A value of true if exception should be thrown; otherwise, false. + By default exceptions are not thrown under any circumstances. + + + + Gets or sets a value indicating whether should be thrown. + + If null then is used. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. After setting this property all + existing loggers will be re-configured, so there is no need to call + manually. + + + + + Gets or sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets the default culture info to use as . + + + Specific culture info or null to use + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting + unmanaged resources. + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Creates a logger that discards all log messages. + + Null logger instance. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets the logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + The logger with type . + Type of the logger + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The type of the logger to create. The type must inherit from + The logger of type . + This is a slow-running method. Make sure you are not calling this method in a + loop. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + Name of the logger. + Type of the logger + The logger reference with type . Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The type of the logger to create. The type must inherit from . + The logger of type . Multiple calls to GetLogger with the + same argument aren't guaranteed to return the same logger reference. + + + + Loops through all loggers previously returned by GetLogger and recalculates their + target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time + will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flushes any pending log messages on all appenders. + + Config containing Targets to Flush + Flush completed notification (success / timeout) + Optional timeout that guarantees that completed notication is called. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Returns if logging is currently enabled. + + A value of if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Raises the event when the configuration is reloaded. + + Event arguments. + + + + Currently this is disposing? + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Logger cache key. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Determines if two objects are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Determines if two objects of the same type are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Logger cache. + + + + + Inserts or updates. + + + + + + + Internal for unit tests + + + + + Enables logging in implementation. + + + + + Initializes a new instance of the class. + + The factory. + + + + Enables logging. + + + + + Logging methods which only are executed when the DEBUG conditional compilation symbol is set. + + Remarks: + The DEBUG conditional compilation symbol is default enabled (only) in a debug build. + + If the DEBUG conditional compilation symbol isn't set in the calling library, the compiler will remove all the invocations to these methods. + This could lead to better performance. + + See: https://msdn.microsoft.com/en-us/library/4xssyw96%28v=vs.90%29.aspx + + + Provides logging interface and utility functions. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Initializes a new instance of the class. + + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Collection of context properties for the Logger. The logger will append it for all log events + + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Creates new logger that automatically appends the specified property to all log events (without changing current logger) + + Property Name + Property Value + New Logger object that automatically appends specified property + + + + Updates the specified context property for the current logger. The logger will append it for all log events. + + It could be rendered with ${event-properties:YOURNAME} + + With property, all properties could be changed. + + + Will affect all locations/contexts that makes use of the same named logger object. + + Property Name + Property Value + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Raises the event when the logger is reconfigured. + + Event arguments + + + + Implementation of logging engine. + + + + + Gets the filter result. + + The filter chain. + The log event. + default result if there are no filters, or none of the filters decides. + The result of the filter. + + + + Defines available log levels. + + + + + Trace log level. + + + + + Debug log level. + + + + + Info log level. + + + + + Warn log level. + + + + + Error log level. + + + + + Fatal log level. + + + + + Off log level. + + + + + Gets all the available log levels (Trace, Debug, Info, Warn, Error, Fatal, Off). + + + + + Gets all the log levels that can be used to log events (Trace, Debug, Info, Warn, Error, Fatal) + i.e LogLevel.Off is excluded. + + + + + Initializes a new instance of . + + The log level name. + The log level ordinal number. + + + + Gets the name of the log level. + + + + + Gets the ordinal of the log level. + + + + + Compares two objects + and returns a value indicating whether + the first one is equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal == level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is not equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal != level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than the second one. + + The first level. + The second level. + The value of level1.Ordinal > level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal >= level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than the second one. + + The first level. + The second level. + The value of level1.Ordinal < level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal <= level2.Ordinal. + + + + Gets the that corresponds to the specified ordinal. + + The ordinal. + The instance. For 0 it returns , 1 gives and so on. + + + + Returns the that corresponds to the supplied . + + The textual representation of the log level. + The enumeration value. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Determines whether the specified instance is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Compares the level to the other object. + + + The object object. + + + A value less than zero when this logger's is + less than the other logger's ordinal, 0 when they are equal and + greater than zero when this ordinal is greater than the + other ordinal. + + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Delegate used to set/get the culture in use. + + This delegate marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the instance used in the . + + Could be used to pass the to other methods + + + + Occurs when logging changes. + + + + + Gets or sets a value indicating whether NLog should throw exceptions. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether should be thrown. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Gets or sets the global log threshold. Log events below this threshold are not logged. + + + + + Gets or sets the default culture to use. + + This property was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Adds the given assembly which will be skipped + when NLog is trying to find the calling method on stack trace. + + The assembly to skip. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The logger class. This class must inherit from . + The logger of type . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates a logger that discards all log messages. + + Null logger which discards all log messages. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + + + + Gets the specified named custom logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The logger class. This class must inherit from . + The logger of type . Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + The generic way for this method is + + + + Loops through all loggers previously returned by GetLogger. + and recalculates their target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Checks if logging is currently enabled. + + if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Dispose all targets, and shutdown logging. + + + + + Generates a formatted message from the log event + + Log event. + Formatted message + + + + Returns a log message. Used to defer calculation of + the log message until it's actually needed. + + Log message. + + + + Service contract for Log Receiver client. + + This class marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Client of ILogReceiverServer + + + + + Occurs when the log message processing has completed. + + + + + Occurs when Open operation has completed. + + + + + Occurs when Close operation has completed. + + + + + Enables the user to configure client and service credentials as well as service credential authentication settings for use on the client side of communication. + + + + + Gets the underlying implementation. + + + + + Gets the target endpoint for the service to which the WCF client can connect. + + + + + Opens the client asynchronously. + + + + + Opens the client asynchronously. + + User-specific state. + + + + Closes the client asynchronously. + + + + + Closes the client asynchronously. + + User-specific state. + + + + Processes the log messages asynchronously. + + The events to send. + + + + Processes the log messages asynchronously. + + The events to send. + User-specific state. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Gets or sets the cookie container. + + The cookie container. + + + + Internal configuration of Log Receiver Service contracts. + + + + + Wire format for NLog Event. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the client-generated identifier of the event. + + + + + Gets or sets the ordinal of the log level. + + + + + Gets or sets the logger ordinal (index into . + + The logger ordinal. + + + + Gets or sets the time delta (in ticks) between the time of the event and base time. + + + + + Gets or sets the message string index. + + + + + Gets or sets the collection of layout values. + + + + + Gets the collection of indexes into array for each layout value. + + + + + Converts the to . + + The object this is part of.. + The logger name prefix to prepend in front of the logger name. + Converted . + + + + Wire format for NLog event package. + + + + + Gets or sets the name of the client. + + The name of the client. + + + + Gets or sets the base time (UTC ticks) for all events in the package. + + The base time UTC. + + + + Gets or sets the collection of layout names which are shared among all events. + + The layout names. + + + + Gets or sets the collection of logger names. + + The logger names. + + + + Gets or sets the list of events. + + The events. + + + + Converts the events to sequence of objects suitable for routing through NLog. + + The logger name prefix to prepend in front of each logger name. + + Sequence of objects. + + + + + Converts the events to sequence of objects suitable for routing through NLog. + + + Sequence of objects. + + + + + List of strings annotated for more terse serialization. + + + + + Initializes a new instance of the class. + + + + + Log Receiver Client using WCF. + + + This class marked as obsolete before NLog 4.3.11 and it will be removed in a future release. + + It provides an implementation of the legacy interface and it will be completely obsolete when the + ILogReceiverClient is removed. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Returns a new channel from the client to the service. + + + A channel of type that identifies the type + of service contract encapsulated by this client object (proxy). + + + + + Log Receiver Client facade. It allows the use either of the one way or two way + service contract using WCF through its unified interface. + + + Delegating methods are generated with Resharper. + 1. change ProxiedClient to private field (instead of public property) + 2. delegate members + 3. change ProxiedClient back to public property. + + + + + + The client getting proxied + + + + + Do we use one-way or two-way messaging? + + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + The binding. + The remote address. + + + + Causes a communication object to transition immediately from its current state into the closed state. + + + + + Begins an asynchronous operation to close a communication object. + + + The that references the asynchronous close operation. + + The delegate that receives notification of the completion of the asynchronous close operation.An object, specified by the application, that contains state information associated with the asynchronous close operation. was called on an object in the state.The default timeout elapsed before the was able to close gracefully. + + + + Begins an asynchronous operation to close a communication object with a specified timeout. + + + The that references the asynchronous close operation. + + The that specifies how long the send operation has to complete before timing out.The delegate that receives notification of the completion of the asynchronous close operation.An object, specified by the application, that contains state information associated with the asynchronous close operation. was called on an object in the state.The specified timeout elapsed before the was able to close gracefully. + + + + Begins an asynchronous operation to open a communication object. + + + The that references the asynchronous open operation. + + The delegate that receives notification of the completion of the asynchronous open operation.An object, specified by the application, that contains state information associated with the asynchronous open operation.The was unable to be opened and has entered the state.The default open timeout elapsed before the was able to enter the state and has entered the state. + + + + Begins an asynchronous operation to open a communication object within a specified interval of time. + + + The that references the asynchronous open operation. + + The that specifies how long the send operation has to complete before timing out.The delegate that receives notification of the completion of the asynchronous open operation.An object, specified by the application, that contains state information associated with the asynchronous open operation.The was unable to be opened and has entered the state.The specified timeout elapsed before the was able to enter the state and has entered the state. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Enables the user to configure client and service credentials as well as service credential authentication settings for use on the client side of communication. + + + + + Causes a communication object to transition from its current state into the closed state. + + The that specifies how long the send operation has to complete before timing out. was called on an object in the state.The timeout elapsed before the was able to close gracefully. + + + + Causes a communication object to transition from its current state into the closed state. + + was called on an object in the state.The default close timeout elapsed before the was able to close gracefully. + + + + Closes the client asynchronously. + + User-specific state. + + + + Closes the client asynchronously. + + + + + Occurs when Close operation has completed. + + + + + Occurs when the communication object completes its transition from the closing state into the closed state. + + + + + Occurs when the communication object first enters the closing state. + + + + + Gets or sets the cookie container. + + The cookie container. + + + + Completes an asynchronous operation to close a communication object. + + The that is returned by a call to the method. was called on an object in the state.The timeout elapsed before the was able to close gracefully. + + + + Completes an asynchronous operation to open a communication object. + + The that is returned by a call to the method.The was unable to be opened and has entered the state.The timeout elapsed before the was able to enter the state and has entered the state. + + + + Gets the target endpoint for the service to which the WCF client can connect. + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Occurs when the communication object first enters the faulted state. + + + + + Gets the underlying implementation. + + + + + Causes a communication object to transition from the created state into the opened state. + + The was unable to be opened and has entered the state.The default open timeout elapsed before the was able to enter the state and has entered the state. + + + + Causes a communication object to transition from the created state into the opened state within a specified interval of time. + + The that specifies how long the send operation has to complete before timing out.The was unable to be opened and has entered the state.The specified timeout elapsed before the was able to enter the state and has entered the state. + + + + Opens the client asynchronously. + + + + + Opens the client asynchronously. + + User-specific state. + + + + Occurs when Open operation has completed. + + + + + Occurs when the communication object completes its transition from the opening state into the opened state. + + + + + Occurs when the communication object first enters the opening state. + + + + + Processes the log messages asynchronously. + + The events to send. + + + + Processes the log messages asynchronously. + + The events to send. + User-specific state. + + + + Occurs when the log message processing has completed. + + + + + Gets the current state of the communication-oriented object. + + + The value of the of the object. + + + + + Causes a communication object to transition from its current state into the closed state. + + + + + Abstract base class for the WcfLogReceiverXXXWay classes. It can only be + used internally (see internal constructor). It passes off any Channel usage + to the inheriting class. + + Type of the WCF service. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Occurs when the log message processing has completed. + + + + + Occurs when Open operation has completed. + + + + + Occurs when Close operation has completed. + + + + + Gets or sets the cookie container. + + The cookie container. + + + + Opens the client asynchronously. + + + + + Opens the client asynchronously. + + User-specific state. + + + + Closes the client asynchronously. + + + + + Closes the client asynchronously. + + User-specific state. + + + + Processes the log messages asynchronously. + + The events to send. + + + + Processes the log messages asynchronously. + + The events to send. + User-specific state. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Log Receiver Client using WCF. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Returns a new channel from the client to the service. + + + A channel of type that identifies the type + of service contract encapsulated by this client object (proxy). + + + + + Log Receiver Client using WCF. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Returns a new channel from the client to the service. + + + A channel of type that identifies the type + of service contract encapsulated by this client object (proxy). + + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + + + + + Gets the thread-local dictionary + + Must be true for any subsequent dictionary modification operation + + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The to use when converting a value to a . + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Returns all item names + + A set of the names of all items in current thread-MDC. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified exists in current thread MDC. + + + + Removes the specified from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Mapped Diagnostics Context + + This class marked as obsolete before NLog 2.0 and it may be removed in a future release. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified item exists in current thread MDC. + + + + Removes the specified item from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Mark a parameter of a method for message templating + + + + + Specifies which parameter of an annotated method should be treated as message-template-string + + + + + The name of the parameter that should be as treated as message-template-string + + + + + The type of the captured hole + + + + + Not decided + + + + + normal {x} + + + + + Serialize operator {@x} (aka destructure) + + + + + stringification operator {$x} + + + + + A hole that will be replaced with a value + + + + + Constructor + + + + Parameter name sent to structured loggers. + This is everything between "{" and the first of ",:}". + Including surrounding spaces and names that are numbers. + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + Type + + + + When the template is positional, this is the parsed name of this parameter. + For named templates, the value of Index is undefined. + + + Alignment to render the parameter, by default 0. + This is the parsed value between "," and the first of ":}" + + + + A fixed value + + + + Number of characters from the original template to copy at the current position. + This can be 0 when the template starts with a hole or when there are multiple consecutive holes. + + + Number of characters to skip in the original template at the current position. + 0 is a special value that mean: 1 escaped char, no hole. It can also happen last when the template ends with a literal. + + + + Combines Literal and Hole + + + + Literal + + + Hole + Uninitialized when = 0. + + + + Description of a single parameter extracted from a MessageTemplate + + + + + Parameter Name extracted from + This is everything between "{" and the first of ",:}". + + + + + Parameter Value extracted from the -array + + + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + + Parameter method that should be used to render the parameter + See also + + + + + Returns index for , when + + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + Parameter CaptureType + + + + Parameters extracted from parsing as MessageTemplate + + + + + + + + + + + Gets the parameters at the given index + + + + + Number of parameters + + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Indicates whether the template was parsed successful, and there are no unmatched parameters + + + + + Constructor for parsing the message template with parameters + + including any parameter placeholders + All + + + + Constructor for named parameters that already has been parsed + + + + + Create MessageTemplateParameter from + + + + + A message template + + + + The original template string. + This is the key passed to structured targets. + + + The list of literal parts, useful for string rendering. + It indicates the number of characters from the original string to print, + then there's a hole with how many chars to skip. + + "Hello {firstName} {lastName}!" + ------------------------------------- + ║P |S ║P|S ║P|S║ + ║6 |11 ║1|10 ║1|0║ + ║Hello |{firstName}║ |{lastName}║!║ + + "{x} * 2 = {2x}" + -------------------- + ║P|S ║P |S ║ + ║0|3 ║7 |4 ║ + ║{x}║ * 2 = |{2x}║ + + The tricky part is escaped braces. They are represented by a skip = 0, + which is interpreted as "move one char forward, no hole". + + "Escaped }} is fun." + ---------------------- + ║P |S║P |S║ + ║9 |0║8 |0║ + ║Escaped }|}║ is fun.|║ + + + + This list of holes. It's used both to fill the string rendering + and to send values along the template to structured targets. + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Create a template, which is already parsed + + + + + + + + + Create a template, which is already parsed + + + + + + + + This is for testing only: recreates from the parsed data. + + + + This is for testing only: rebuilds the hole + + Add to this string builder + ref for performance + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Gets the current literal/hole in the template + + + + + Clears the enumerator + + + + + Restarts the enumerator of the template + + + + + Moves to the next literal/hole in the template + + Found new element [true/false] + + + + Parse format after hole name/index. Handle the escaped { and } in the format. Don't read the last } + + + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Error when parsing a template. + + + + + Current index when the error occurred. + + + + + The template we were parsing + + + + + New exception + + The message to be shown. + Current index when the error occurred. + + + + + Render templates + + + + + Render a template to a string. + + The template. + Culture. + Parameters for the holes. + Do not fallback to StringBuilder.Format for positional templates. + The String Builder destination. + Parameters for the holes. + + + + Render a template to a string. + + The template. + The String Builder destination. + Culture. + Parameters for the holes. + Rendered template, never null. + + + + Convert Render or serialize a value, with optionally backwards-compatible with + + + + Singleton + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Format an object to a readable string, or if it's an object, serialize + + The value to convert + + + + + + + + Try serializing a scalar (string, int, NULL) or simple type (IFormattable) + + + + + Serialize Dictionary as JSON like structure, without { and } + + + "FirstOrder"=true, "Previous login"=20-12-2017 14:55:32, "number of tries"=1 + + + formatstring of an item + + + + + + + + + Convert a value to a string with format and append to . + + The value to convert. + Format sting for the value. + Format provider for the value. + Append to this + + + + Nested Diagnostics Context + + This class marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top object off the NDC stack. The object is removed from the stack. + + The top object from the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all objects on the NDC stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Nested Diagnostics Context - a thread-local structure that keeps a stack + of strings and provides methods to output them in layouts + + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object at the top of the NDC stack if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified object on current thread NDC. + + The object to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top message from the NDC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top object off the NDC stack. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Peeks the first object on the NDC stack + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. + + Array of objects on the stack. + + + + Resets the stack to the original count during . + + + + + Initializes a new instance of the class. + + The stack. + The previous count. + + + + Reverts the stack to original item count. + + + + + Exception thrown during NLog configuration. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The inner exception. + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Exception thrown during log event processing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + It works as a normal but it discards all messages which an application requests + to be logged. + + It effectively implements the "Null Object" pattern for objects. + + + + + Initializes a new instance of . + + The factory class to be used for the creation of this logger. + + + + Extension methods to setup LogFactory options + + + + + Gets the logger with the full name of the current class, so namespace and class name. + + + + + Gets the specified named logger. + + + + + Configures loading of NLog extensions for Targets and LayoutRenderers + + + + + Configures the output of NLog for diagnostics / troubleshooting + + + + + Configures serialization and transformation of LogEvents + + + + + Loads NLog config created by the method + + + + + Loads NLog config provided in + + + + + Loads NLog config from filename if provided, else fallback to scanning for NLog.config + + + + + Loads NLog config from XML in + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Enable/disables autoloading of NLog extensions by scanning and loading available assemblies + + + Enabled by default, and gives a huge performance hit during startup. Recommended to disable this when running in the cloud. + + + + + Registers NLog extensions from the assembly. + + + + + Registers NLog extensions from the assembly type name + + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + MethodInfo extracted by reflection - typeof(MyClass).GetMethod("MyFunc", BindingFlags.Static). + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + Lambda method. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + Lambda method. + + + + Extension methods to setup NLog options + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Overrides the active with a new custom implementation + + + + + Overrides the active with a new custom implementation + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Specifies the way archive numbering is performed. + + + + + Sequence style numbering. The most recent archive has the highest number. + + + + + Rolling style numbering (the most recent is always #0 then #1, ..., #N. + + + + + Date style numbering. Archives will be stamped with the prior period + (Year, Month, Day, Hour, Minute) datetime. + + + + + Date and sequence style numbering. + Archives will be stamped with the prior period (Year, Month, Day) datetime. + The most recent archive has the highest number (in combination with the date). + + + + + Sends log messages to the remote instance of Chainsaw application from log4j. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a name. + + Name of the target. + + + + Writes log messages to the console. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default. In multi threaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Gets or sets a value indicating whether to send the log messages to the standard error instead of the standard output. + + + + + + Gets or sets a value indicating whether to auto-check if the console is available + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + + Gets or sets whether to enable batch writing using char[]-buffers, instead of using + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified logging event to the Console.Out or + Console.Error depending on the value of the Error flag. + + The logging event. + + Note that the Error option is not supported on .NET Compact Framework. + + + + + + + + Write to output + + + + + A descriptor for an archive created with the DateAndSequence numbering mode. + + + + + The full name of the archive file. + + + + + The parsed date contained in the file name. + + + + + The parsed sequence number contained in the file name. + + + + + Determines whether produces the same string as the current instance's date once formatted with the current instance's date format. + + The date to compare the current object's date to. + True if the formatted dates are equal, otherwise False. + + + + Initializes a new instance of the class. + + + + + Writes log messages to the attached managed debugger. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the attached debugger. + + The logging event. + + + + Mock target - useful for testing. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + Increases the number of messages. + + The logging event. + + + + Default class for serialization of values to JSON format. + + + + + Singleton instance of the serializer. + + + + + Private. Use + + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + Serialized value. + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + serialisation options + Serialized value. + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + The objects in path (Avoid cyclic reference loop). + The current depth (level) of recursion. + Object serialized successfully (true/false). + + + + No quotes needed for this type? + + + + + Checks the object if it is numeric + + TypeCode for the object + Accept fractional types as numeric type. + + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + all options + JSON escaped string + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + Should non-ascii characters be encoded + + JSON escaped string + + + + Check if cleanup should be performed on initialize new file + + Skip cleanup when initializing new file, just after having performed archive operation + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Characters determining the start of the . + + + + + Characters determining the end of the . + + + + + File name which is used as template for matching and replacements. + It is expected to contain a pattern to match. + + + + + The begging position of the + within the . -1 is returned + when no pattern can be found. + + + + + The ending position of the + within the . -1 is returned + when no pattern can be found. + + + + + Replace the pattern with the specified String. + + + + + + + Archives the log-files using a date style numbering. Archives will be stamped with the + prior period (Year, Month, Day, Hour, Minute) datetime. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Archives the log-files using a date and sequence style numbering. Archives will be stamped + with the prior period (Year, Month, Day) datetime. The most recent archive has the highest number (in + combination with the date). + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Parse filename with date and sequence pattern + + + dateformat for archive + + the found pattern. When failed, then default + the found pattern. When failed, then default + + + + + Archives the log-files using the provided base-archive-filename. If the base-archive-filename causes + duplicate archive filenames, then sequence-style is automatically enforced. + + Example: + Base Filename trace.log + Next Filename trace.0.log + + The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Dynamically converts a non-template archiveFilePath into a correct archiveFilePattern. + Before called the original IFileArchiveMode, that has been wrapped by this + + + + + Determines if the file name as contains a numeric pattern i.e. {#} in it. + + Example: + trace{#}.log Contains the numeric pattern. + trace{###}.log Contains the numeric pattern. + trace{#X#}.log Contains the numeric pattern (See remarks). + trace.log Does not contain the pattern. + + Occasionally, this method can identify the existence of the {#} pattern incorrectly. + File name to be checked. + when the pattern is found; otherwise. + + + + Archives the log-files using a rolling style numbering (the most recent is always #0 then + #1, ..., #N. + + When the number of archive files exceed the obsolete archives + are deleted. + + + + + Replaces the numeric pattern i.e. {#} in a file name with the parameter value. + + File name which contains the numeric pattern. + Value which will replace the numeric pattern. + File name with the value of in the position of the numeric pattern. + + + + Archives the log-files using a sequence style numbering. The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Modes of archiving files based on time. + + + + + Don't archive based on time. + + + + + AddToArchive every year. + + + + + AddToArchive every month. + + + + + AddToArchive daily. + + + + + AddToArchive every hour. + + + + + AddToArchive every minute. + + + + + AddToArchive every Sunday. + + + + + AddToArchive every Monday. + + + + + AddToArchive every Tuesday. + + + + + AddToArchive every Wednesday. + + + + + AddToArchive every Thursday. + + + + + AddToArchive every Friday. + + + + + AddToArchive every Saturday. + + + + + Type of filepath + + + + + Detect of relative or absolute + + + + + Relative path + + + + + Absolute path + + Best for performance + + + + Writes log messages to one or more files. + + Documentation on NLog Wiki + + + + Default clean up period of the initialized files. When a file exceeds the clean up period is removed from the list. + + Clean up period is defined in days. + + + + The maximum number of initialized files before clean up procedures are initiated, + to keep the number of initialized files to a minimum. Chose 25 to cater for monthly rolling of log-files. + + + + + This value disables file archiving based on the size. + + + + + Holds the initialized files each given time by the instance. Against each file, the last write time is stored. + + Last write time is store in local time (no UTC). + + + + List of the associated file appenders with the instance. + + + + + The number of initialized files at any one time. + + + + + The maximum number of archive files that should be kept. + + + + + The maximum days of archive files that should be kept. + + + + + The filename as target + + + + + The archive file name as target + + + + + The date of the previous log event. + + + + + The file name of the previous log event. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the name of the file to write to. + + + This FileName string is a layout which may include instances of layout renderers. + This lets you use a single target to write to multiple files. + + + The following value makes NLog write logging events to files based on the log level in the directory where + the application runs. + ${basedir}/${level}.log + All Debug messages will go to Debug.log, all Info messages will go to Info.log and so on. + You can combine as many of the layout renderers as you want to produce an arbitrary log file name. + + + + + + Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. + If set to false, nothing gets written when the filename is wrong. + + + + + + Is the an absolute or relative path? + + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + + Gets or sets a value indicating whether to delete old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + + + + + + Gets or sets a value indicating whether to replace file contents on each write instead of appending log message at the end. + + + + + + Gets or sets a value indicating whether to keep log file open instead of opening and closing it on each logging event. + + + Setting this property to True helps improve performance. + + + + + + Gets or sets the maximum number of log file names that should be stored as existing. + + + The bigger this number is the longer it will take to write each log record. The smaller the number is + the higher the chance that the clean function will be run when no new files have been opened. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + + Gets or sets the line ending mode. + + + + + + Gets or sets a value indicating whether to automatically flush the file buffers after each log message. + + + + + + Gets or sets the number of files to be kept open. Setting this to a higher value may improve performance + in a situation where a single File target is writing to many files + (such as splitting by level or by logger). + + + The files are managed on a LRU (least recently used) basis, which flushes + the files that have not been used for the longest period of time should the + cache become full. As a rule of thumb, you shouldn't set this parameter to + a very high value. A number like 10-15 shouldn't be exceeded, because you'd + be keeping a large number of files open which consumes system resources. + + + + + + Gets or sets the maximum number of seconds that files are kept open. If this number is negative the files are + not automatically closed after a period of inactivity. + + + + + + Gets or sets the maximum number of seconds before open files are flushed. If this number is negative or zero + the files are not flushed by timer. + + + + + + Gets or sets the log file buffer size in bytes. + + + + + + Gets or sets the file encoding. + + + + + + Gets or sets whether or not this target should just discard all data that its asked to write. + Mostly used for when testing NLog Stack except final write + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on different network hosts. + + + This effectively prevents files from being kept open. + + + + + + Gets or sets a value indicating whether to write BOM (byte order mark) in created files + + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + The actual delay is a random value between 0 and the value specified + in this parameter. On each failed attempt the delay base is doubled + up to times. + + + Assuming that ConcurrentWriteAttemptDelay is 10 the time to wait will be:

+ a random value between 0 and 10 milliseconds - 1st attempt
+ a random value between 0 and 20 milliseconds - 2nd attempt
+ a random value between 0 and 40 milliseconds - 3rd attempt
+ a random value between 0 and 80 milliseconds - 4th attempt
+ ...

+ and so on. + + + + +

+ Gets or sets a value indicating whether to archive old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + After archiving the old file, the current log file will be empty. + + +
+ + + Gets or sets a value of the file size threshold to archive old log file on startup. + + + This option won't work if is set to false + Default value is 0 which means that the file is archived as soon as archival on + startup is enabled. + + + + + + Gets or sets a value specifying the date format to use when archiving files. + + + This option works only when the "ArchiveNumbering" parameter is set either to Date or DateAndSequence. + + + + + + Gets or sets the size in bytes above which log files will be automatically archived. + + Warning: combining this with isn't supported. We cannot create multiple archive files, if they should have the same name. + Choose: + + + Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. + + + + + + Gets or sets a value indicating whether to automatically archive log files every time the specified time passes. + + + Files are moved to the archive as part of the write operation if the current period of time changes. For example + if the current hour changes from 10 to 11, the first write that will occur + on or after 11:00 will trigger the archiving. +

+ Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. +

+
+ +
+ + + Is the an absolute or relative path? + + + + + + Gets or sets the name of the file to be used for an archive. + + + It may contain a special placeholder {#####} + that will be replaced with a sequence of numbers depending on + the archiving strategy. The number of hash characters used determines + the number of numerical digits to be used for numbering files. + + + + + + Gets or sets the maximum number of archive files that should be kept. + + + + + + Gets or sets the maximum days of archive files that should be kept. + + + + + + Gets or sets the way file archives are numbered. + + + + + + Used to compress log files during archiving. + This may be used to provide your own implementation of a zip file compressor, + on platforms other than .Net4.5. + Defaults to ZipArchiveFileCompressor on .Net4.5 and to null otherwise. + + + + + + Gets or sets a value indicating whether to compress archive files into the zip archive format. + + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + + Gets or sets a value indicating whether the footer should be written only when the file is archived. + + + + + + Gets the characters that are appended after each line. + + + + + Refresh the ArchiveFilePatternToWatch option of the . + The log file must be watched for archiving when multiple processes are writing to the same + open file. + + + + + Removes records of initialized files that have not been + accessed in the last two days. + + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Removes records of initialized files that have not been + accessed after the specified date. + + The cleanup threshold. + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Flushes all pending file operations. + + The asynchronous continuation. + + The timeout parameter is ignored, because file APIs don't provide + the needed functionality. + + + + + Returns the suitable appender factory ( ) to be used to generate the file + appenders associated with the instance. + + The type of the file appender factory returned depends on the values of various properties. + + suitable for this instance. + + + + Initializes file logging by creating data structures that + enable efficient multi-file logging. + + + + + Closes the file(s) opened for writing. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Get full filename (=absolute) and cleaned if needed. + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes the specified array of logging events to a file specified in the FileName + parameter. + + An array of objects. + + This function makes use of the fact that the events are batched by sorting + the requests by filename. This optimizes the number of open/close calls + and can help improve performance. + + + + + Returns estimated size for memory stream, based on events count and first event size in bytes. + + Count of events + Bytes count of first event + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Gets the bytes to be written to the file. + + Log event. + Array of bytes that are ready to be written. + + + + Modifies the specified byte array before it gets sent to a file. + + The byte array. + The modified byte array. The function can do the modification in-place. + + + + Gets the bytes to be written to the file. + + The log event to be formatted. + to help format log event. + Optional temporary char-array to help format log event. + Destination for the encoded result. + + + + Formats the log event for write. + + The log event to be formatted. + for the result. + + + + Modifies the specified byte array before it gets sent to a file. + + The LogEvent being written + The byte array. + + + + Archives fileName to archiveFileName. + + File name to be archived. + Name of the archive file. + + + + Gets the correct formatting to be used based on the value of for converting values which will be inserting into file + names during archiving. + + This value will be computed only when a empty value or is passed into + + Date format to used irrespectively of value. + Formatting for dates. + + + + Calculate the DateTime of the requested day of the week. + + The DateTime of the previous log event. + The next occuring day of the week to return a DateTime for. + The DateTime of the next occuring dayOfWeek. + For example: if previousLogEventTimestamp is Thursday 2017-03-02 and dayOfWeek is Sunday, this will return + Sunday 2017-03-05. If dayOfWeek is Thursday, this will return *next* Thursday 2017-03-09. + + + + Invokes the archiving process after determining when and which type of archiving is required. + + File name to be checked and archived. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + + + + Gets the pattern that archive files will match + + Filename of the log file + Log event that the instance is currently processing. + A string with a pattern that will match the archive file names + + + + Archives the file if it should be archived. + + The file name to check for. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + True when archive operation of the file was completed (by this target or a concurrent target) + + + + Closes any active file-appenders that matches the input filenames. + File-appender is requested to invalidate/close its filehandle, but keeping its archive-mutex alive + + + + + Indicates if the automatic archiving process should be executed. + + File name to be written. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the correct filename to archive + + + + + + Gets the file name for archiving, or null if archiving should not occur based on file size. + + File name to be written. + The size in bytes of the next chunk of data to be written in the file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the file name for archiving, or null if archiving should not occur based on date/time. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Truncates the input-time, so comparison of low resolution times (like dates) are not affected by ticks + + High resolution Time + Time Resolution Level + Truncated Low Resolution Time + + + + Evaluates which parts of a file should be written (header, content, footer) based on various properties of + instance and writes them. + + File name to be written. + Raw sequence of to be written into the content part of the file. + File has just been opened. + + + + Initialise a file to be used by the instance. Based on the number of initialized + files and the values of various instance properties clean up and/or archiving processes can be invoked. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file (DateTime.MinValue if just initialized). + + + + Writes the file footer and finalizes the file in instance internal structures. + + File name to close. + Indicates if the file is being finalized for archiving. + + + + Writes the footer information to a file. + + The file path to write to. + + + + Decision logic whether to archive logfile on startup. + and properties. + + File name to be written. + Decision whether to archive or not. + + + + Invokes the archiving and clean up of older archive file based on the values of + and + properties respectively. + + File name to be written. + Log event that the instance is currently processing. + + + + Creates the file specified in and writes the file content in each entirety i.e. + Header, Content and Footer. + + The name of the file to be written. + Sequence of to be written in the content section of the file. + First attempt to write? + This method is used when the content of the log file is re-written on every write. + + + + Writes the header information and byte order mark to a file. + + File appender associated with the file. + + + + The sequence of to be written in a file after applying any formatting and any + transformations required from the . + + The layout used to render output message. + Sequence of to be written. + Usually it is used to render the header and hooter of the files. + + + + Check if cleanup should be performed on initialize new file + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Create a wildcard file-mask that allows one to find all files belonging to the same archive. + + Base archive file pattern + Wildcard file-mask + + + + Search directory for all existing files that are part of the same archive. + + Base archive file pattern + + + + + Generate the next archive filename for the archive. + + Base archive file pattern + File date of archive + Existing files in the same archive + + + + + Return all files that should be removed from the provided archive. + + Base archive file pattern + Existing files in the same archive + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + + + + may be configured to compress archived files in a custom way + by setting before logging your first event. + + + + + Create archiveFileName by compressing fileName. + + Absolute path to the log file to compress. + Absolute path to the compressed archive file to create. + + + + Interface for serialization of values, maybe even objects to JSON format. + Useful for wrappers for existing serializers. + + + + + Returns a serialization of an object + into JSON format. + + The object to serialize to JSON. + Serialized value (null = Serialize failed). + + + + Options for JSON serialisation + + + + + Add quotes around object keys? + + + + + Format provider for value + + + + + Format string for value + + + + + Should non-ascii characters be encoded + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + Serialize enum as string value + + + + + Should dictionary keys be sanitized. All characters must either be letters, numbers or underscore character (_). + + Any other characters will be converted to underscore character (_) + + + + + How far down the rabbit hole should the Json Serializer go with object-reflection before stopping + + + + Initializes a new instance of the class. + + + + Line ending mode. + + + + + Insert platform-dependent end-of-line sequence after each line. + + + + + Insert CR LF sequence (ASCII 13, ASCII 10) after each line. + + + + + Insert CR character (ASCII 13) after each line. + + + + + Insert LF character (ASCII 10) after each line. + + + + + Insert null terminator (ASCII 0) after each line. + + + + + Do not insert any line ending. + + + + + Gets the name of the LineEndingMode instance. + + + + + Gets the new line characters (value) of the LineEndingMode instance. + + + + + Initializes a new instance of . + + The mode name. + The new line characters to be used. + + + + Returns the that corresponds to the supplied . + + + The textual representation of the line ending mode, such as CRLF, LF, Default etc. + Name is not case sensitive. + + The value, that corresponds to the . + There is no line ending mode with the specified name. + + + + Compares two objects and returns a + value indicating whether the first one is equal to the second one. + + The first level. + The second level. + The value of mode1.NewLineCharacters == mode2.NewLineCharacters. + + + + Compares two objects and returns a + value indicating whether the first one is not equal to the second one. + + The first mode + The second mode + The value of mode1.NewLineCharacters != mode2.NewLineCharacters. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms + and data structures like a hash table. + + + + + Determines whether the specified is + equal to this instance. + + The to compare with + this instance. + + Value of true if the specified + is equal to this instance; otherwise, false. + + + The parameter is null. + + + + Indicates whether the current object is equal to another object of the same type. + true if the current object is equal to the parameter; otherwise, false. + An object to compare with this object. + + + + Provides a type converter to convert objects to and from other representations. + + + + + Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. + + + true if this converter can perform the conversion; otherwise, false. + + An that provides a format context. A that represents the type you want to convert from. + + + + Converts the given object to the type of this converter, using the specified context and culture information. + + + An that represents the converted value. + + An that provides a format context. The to use as the current culture. The to convert. The conversion cannot be performed. + + + + Sends log messages to a NLog Receiver Service (using WCF or Web Services). + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets the endpoint address. + + The endpoint address. + + + + + Gets or sets the name of the endpoint configuration in WCF configuration file. + + The name of the endpoint configuration. + + + + + Gets or sets a value indicating whether to use binary message encoding. + + + + + + Gets or sets a value indicating whether to use a WCF service contract that is one way (fire and forget) or two way (request-reply) + + + + + + Gets or sets the client ID. + + The client ID. + + + + + Gets the list of parameters. + + The parameters. + + + + + Gets or sets a value indicating whether to include per-event properties in the payload sent to the server. + + + + + + Called when log events are being sent (test hook). + + The events. + The async continuations. + True if events should be sent, false to stop processing them. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Append" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Add value to the , returns ordinal in + + + lookup so only unique items will be added to + value to add + + + + + Creating a new instance of WcfLogReceiverClient + + Inheritors can override this method and provide their own + service configuration - binding and endpoint address + + This method marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Creating a new instance of IWcfLogReceiverClient + + Inheritors can override this method and provide their own + service configuration - binding and endpoint address + + + virtual is used by end users + + + + Writes log messages to an ArrayList in memory for programmatic retrieval. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the list of logs gathered in the . + + + + + Gets or sets the max number of items to have in memory + + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + A parameter to MethodCall. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout to use for parameter value. + + + + Initializes a new instance of the class. + + Name of the parameter. + The layout. + + + + Initializes a new instance of the class. + + The name of the parameter. + The layout. + The type of the parameter. + + + + Gets or sets the name of the parameter. + + + + + + Gets or sets the type of the parameter. Obsolete alias for + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets the class name. + + + + + + Gets or sets the method name. The method must be public and static. + + Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx + e.g. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Initializes a new instance of the class. + + Name of the target. + Method to call on logevent. + + + + Initializes the target. + + + + + Calls the specified Method. + + Method parameters. + The logging event. + + + + Calls the specified Method. + + Method parameters. + + + + The base class for all targets which call methods (local or remote). + Manages parameters and type coercion. + + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + + + + Prepares an array of parameters to be passed based on the logging event and calls DoInvoke(). + + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Sends log messages over the network. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ To print the results, use any application that's able to receive messages over + TCP or UDP. NetCat is + a simple but very powerful command-line tool that can be used for that. This image + demonstrates the NetCat tool receiving log messages from Network target. +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will be very slow. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+

+ There are two specialized versions of the Network target: Chainsaw + and NLogViewer which write to instances of Chainsaw log4j viewer + or NLogViewer application respectively. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6) (not supported on Windows Phone 7.0)
  • +
  • tcp4://host:port - force TCP/IPv4 (not supported on Windows Phone 7.0)
  • +
  • tcp6://host:port - force TCP/IPv6 (not supported on Windows Phone 7.0)
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6, not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp4://host:port - force UDP/IPv4 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp6://host:port - force UDP/IPv6 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • http://host:port/pageName - HTTP using POST verb
  • +
  • https://host:port/pageName - HTTPS using POST verb
  • +
+ For SOAP-based webservice support over HTTP use WebService target. +
+ +
+ + + Gets or sets a value indicating whether to keep connection open whenever possible. + + + + + + Gets or sets a value indicating whether to append newline at the end of log message. + + + + + + Gets or sets the end of line value if a newline is appended at the end of log message . + + + + + + Gets or sets the maximum message size in bytes. + + + + + + Gets or sets the size of the connection cache (number of connections which are kept alive). + + + + + + Gets or sets the maximum current connections. 0 = no maximum. + + + + + + Gets or sets the action that should be taken if the will be more connections than . + + + + + + Gets or sets the maximum queue size. + + + + + + Gets or sets the action that should be taken if the message is larger than + maxMessageSize. + + + + + + Gets or sets the encoding to be used. + + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Sends the + rendered logging event over the network optionally concatenating it with a newline character. + + The logging event. + + + + Try to remove. + + + + + removed something? + + + + Gets the bytes to be written. + + Log event. + Byte array. + + + + The action to be taken when there are more connections then the max. + + + + + Just allow it. + + + + + Discard the connection item. + + + + + Block until there's more room in the queue. + + + + + Action that should be taken if the message overflows. + + + + + Report an error. + + + + + Split the message into smaller pieces. + + + + + Discard the entire message. + + + + + Represents a parameter to a NLogViewer target. + + + + + Initializes a new instance of the class. + + + + + Gets or sets viewer parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + Sends log messages to the remote instance of NLog Viewer. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include stack contents. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets the layout renderer which produces Log4j-compatible XML events. + + + + + Gets or sets the instance of that is used to format log messages. + + + + + + Discards log messages. Used mainly for debugging and benchmarking. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets a value indicating whether to perform layout calculation. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Does nothing. Optionally it calculates the layout text but + discards the results. + + The logging event. + + + + Outputs log messages through the OutputDebugString() Win32 API. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Outputs the rendered logging event through the OutputDebugString() Win32 API. + + The logging event. + + + + Represents logging target. + + + + Are all layouts in this target thread-agnostic, if so we don't precalculate the layouts + + + + The Max StackTraceUsage of all the in this Target + + + + + Gets or sets the name of the target. + + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers + Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + Gets the object which can be used to synchronize asynchronous operations that must rely on the . + + + + + Gets the logging configuration this target is part of. + + + + + Gets a value indicating whether the target has been initialized. + + + + + Can be used if has been enabled. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Closes the target. + + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Calls the on each volatile layout + used by this target. + This method won't prerender if all layouts in this target are thread-agnostic. + + + The log event. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Writes the log to the target. + + Log event to write. + + + + Writes the array of log events. + + The log events. + + + + Writes the array of log events. + + The log events. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Closes the target and releases any unmanaged resources. + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Writes async log event to the log target. + + Async Log event to be written out. + + + + Writes a log event to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Log event to be written out. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + NOTE! Obsolete, instead override WriteAsyncThreadSafe(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target, in a thread safe manner. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Writes an array of logging events to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Merges (copies) the event context properties from any event info object stored in + parameters of the given event info object. + + The event info object to perform the merge to. + + + + Renders the event info in layout. + + The layout. + The event info. + String representing log event. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Should the exception be rethrown? + + + Upgrade to private protected when using C# 7.2 + + + + Marks class as a logging target and assigns a name to it. + + This attribute is not required when registering the target in the API. + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets a value indicating whether to the target is a wrapper target (used to generate the target summary documentation page). + + + + + Gets or sets a value indicating whether to the target is a compound target (used to generate the target summary documentation page). + + + + + Attribute details for + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Gets or sets when an empty value should cause the property to be included + + + + + Gets or sets the type of the property. + + + + + Represents target that supports context capture using MDLC, MDC, NDLC and NDC + + + + + + + + + + + + + + + + + + + + + + + Gets or sets a value indicating whether to include contents of the dictionary + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the + + + + + + Gets the array of custom attributes to be passed into the logevent context + + + + + + Constructor + + + + + + + + Check if logevent has properties (or context properties) + + + True if properties should be included + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Dictionary with any context properties for the logEvent (Null if none found) + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Optional prefilled dictionary + Dictionary with any context properties for the logEvent (Null if none found) + + + + Creates combined dictionary of all configured properties for logEvent + + + Dictionary with all collected properties for logEvent + + + + Creates combined dictionary of all configured properties for logEvent + + + Optional prefilled dictionary + Dictionary with all collected properties for logEvent + + + + Generates a new unique name, when duplicate names are detected + + LogEvent that triggered the duplicate name + Duplicate item name + Item Value + Dictionary of context values + New (unique) value (or null to skip value). If the same value is used then the item will be overwritten + + + + Returns the captured snapshot of for the + + + Dictionary with MDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with GDC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDC key + MDC value + Snapshot of MDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDC value + Snapshot of NDC value + Include object value in snapshot + + + + Take snapshot of a single object value + + Log event + Key Name (null when NDC / NDLC) + Object Value + Snapshot of value + Include object value in snapshot + + + Internal Layout that allows capture of MDC context + + + Internal Layout that allows capture of NDC context + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the layout used to format log messages. + + + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the text to be rendered. + + + + + + Gets or sets the footer. + + + + + + Gets or sets the header. + + + + + + Gets or sets the layout with header and footer. + + The layout with header and footer. + + + + Web service protocol. + + + + + Use SOAP 1.1 Protocol. + + + + + Use SOAP 1.2 Protocol. + + + + + Use HTTP POST Protocol. + + + + + Use HTTP GET Protocol. + + + + + Do an HTTP POST of a JSON document. + + + + + Do an HTTP POST of an XML document. + + + + + Web Service Proxy Configuration Type + + + + + Default proxy configuration from app.config (System.Net.WebRequest.DefaultWebProxy) + + + Example of how to configure default proxy using app.config + + <system.net> + <defaultProxy enabled = "true" useDefaultCredentials = "true" > + <proxy usesystemdefault = "True" /> + </defaultProxy> + </system.net> + + + + + + Automatic use of proxy with authentication (cached) + + + + + Disables use of proxy (fast) + + + + + Custom proxy address (cached) + + + + + Calls the specified web service on each log message. + + Documentation on NLog Wiki + + The web service must implement a method that accepts a number of string parameters. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

The example web service that works with this example is shown below

+ +
+
+ + + dictionary that maps a concrete implementation + to a specific -value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target + + + + Gets or sets the web service URL. + + + + + + Gets or sets the Web service method name. Only used with Soap. + + + + + + Gets or sets the Web service namespace. Only used with Soap. + + + + + + Gets or sets the protocol to be used when calling web service. + + + + + + Gets or sets the custom proxy address, include port separated by a colon + + + + + + Should we include the BOM (Byte-order-mark) for UTF? Influences the property. + + This will only work for UTF-8. + + + + + + Gets or sets the encoding. + + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Gets or sets the name of the root XML element, + if POST of XML document chosen. + If so, this property must not be null. + (see and ). + + + + + + Gets or sets the (optional) root namespace of the XML document, + if POST of XML document chosen. + (see and ). + + + + + + Gets the array of parameters to be passed. + + + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Invokes the web service method. + + Parameters to be passed. + The logging event. + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Builds the URL to use when calling the web service for a message, depending on the WebServiceProtocol. + + + + + + + Write from input to output. Fix the UTF-8 bom + + + + + + + + + base class for POST formatters, that + implement former PrepareRequest() method, + that creates the content for + the requested kind of HTTP request + + + + + Asynchronous request queue. + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Gets the number of requests currently in the queue. + + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + Queue was empty before enqueue + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued (-1 means everything). + The array of log events. + + + + Dequeues into a preallocated array, instead of allocating a new one + + Maximum number of items to be dequeued + Preallocated list + + + + Clears the queue. + + + + + Gets or sets the request limit. + + + + + Gets or sets the action to be taken when there's no more room in + the queue and another request is enqueued. + + + + + Notifies about log event that was dropped when set to + + + + + Notifies when queue size is growing over + + + + + Raise event when queued element was dropped because of queue overflow + + Dropped queue item + + + + Raise event when RequestCount overflow + + current requests count + + + + Provides asynchronous, buffered execution of target writes. + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queueing + messages and processing them in a separate thread. You should wrap targets + that spend a non-trivial amount of time in their Write() method with asynchronous + target to speed up logging. +

+

+ Because asynchronous logging is quite a common scenario, NLog supports a + shorthand notation for wrapping all targets with AsyncWrapper. Just add async="true" to + the <targets/> element in the configuration file. +

+ + + ... your targets go here ... + + ]]> +
+ +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of requests in the queue. + The action to be taken when the queue overflows. + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Gets or sets the time in milliseconds to sleep between batches. (1 or less means trigger on new activity) + + + + + + Raise event when Target cannot store LogEvent. + Event arg contains lost LogEvents + + + + + Raises when event queue grow. + Queue can grow when was set to + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the limit of full s to write before yielding into + Performance is better when writing many small batches, than writing a single large batch + + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + + Gets the queue of lazy writer thread requests. + + + + + Schedules a flush of pending events in the queue (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target by starting the lazy writer timer. + + + + + Shuts down the lazy writer timer. + + + + + Starts the lazy writer thread which periodically writes + queued log messages. + + + + + Attempts to start an instant timer-worker-thread which can write + queued log messages. + + Returns true when scheduled a timer-worker-thread + + + + Stops the lazy writer thread. + + + + + Adds the log event to asynchronous queue to be processed by + the lazy writer thread. + + The log event. + + The is called + to ensure that the log event can be processed in another thread. + + + + + Write to queue without locking + + + + + + The action to be taken when the queue overflows. + + + + + Grow the queue. + + + + + Discard the overflowing item. + + + + + Block until there's more room in the queue. + + + + + Causes a flush on a wrapped target if LogEvent satisfies the . + If condition isn't set, flushes on each write. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Gets or sets the condition expression. Log events who meet this condition will cause + a flush on the wrapped target. + + + + + + Delay the flush until the LogEvent has been confirmed as written + + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + The wrapped target. + Name of the target + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes the target. + + + + + Forwards the call to the .Write() + and calls on it if LogEvent satisfies + the flush condition or condition is null. + + Logging event to be written out. + + + + Schedules a flush operation, that triggers when all pending flush operations are completed (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + The action to take when the buffer overflows. + + + + Gets or sets the number of log events to be buffered. + + + + + + Gets or sets the timeout (in milliseconds) after which the contents of buffer will be flushed + if there's no write in the specified period of time. Use -1 to disable timed flushes. + + + + + + Gets or sets a value indicating whether to use sliding timeout. + + + This value determines how the inactivity period is determined. If sliding timeout is enabled, + the inactivity timer is reset after each write, if it is disabled - inactivity timer will + count from the first event written to the buffer. + + + + + + Gets or sets the action to take if the buffer overflows. + + + Setting to will replace the + oldest event with new events without sending events down to the wrapped target, and + setting to will flush the + entire buffer to the wrapped target. + + + + + + Flushes pending events in the buffer (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target. + + + + + Closes the target by flushing pending events in the buffer (if any). + + + + + Adds the specified log event to the buffer and flushes + the buffer in case the buffer gets full. + + The log event. + + + + The action to be taken when the buffer overflows. + + + + + Flush the content of the buffer. + + + + + Discard the oldest item. + + + + + A base class for targets which wrap other (multiple) targets + and provide various forms of target routing. + + + + + Initializes a new instance of the class. + + The targets. + + + + Gets the collection of targets managed by this compound target. + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Writes logging event to the log target. + + Logging event to be written out. + + + + Flush any pending log messages for all wrapped targets. + + The asynchronous continuation. + + + + Provides fallback-on-error. + + Documentation on NLog Wiki + +

This example causes the messages to be written to server1, + and if it fails, messages go to server2.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Gets or sets a value indicating whether to return to the first target after any successful write. + + + + + + + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + The method remembers the last-known-successful target + and starts the iteration from it. + If is set, the method + resets the target to the first target + stored in . + + + + + Filtering rule for . + + + + + Initializes a new instance of the FilteringRule class. + + + + + Initializes a new instance of the FilteringRule class. + + Condition to be tested against all events. + Filter to apply to all log events when the first condition matches any of them. + + + + Gets or sets the condition to be tested. + + + + + + Gets or sets the resulting filter to be applied when the condition matches. + + + + + + Filters log entries based on a condition. + + Documentation on NLog Wiki + +

This example causes the messages not contains the string '1' to be ignored.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The condition. + + + + Initializes a new instance of the class. + + The wrapped target. + The condition. + + + + Gets or sets the condition expression. Log events who meet this condition will be forwarded + to the wrapped target. + + + + + + Gets or sets the filter. Log events who evaluates to will be discarded + + + + + + + + + Checks the condition against the passed log event. + If the condition is met, the log event is forwarded to + the wrapped target. + + Log event. + + + + + + + Limits the number of messages written per timespan to the wrapped target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of messages written per interval. + Interval in which the maximum number of messages can be written. + + + + Gets or sets the maximum allowed number of messages written per . + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets or sets the interval in which messages will be written up to the number of messages. + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets the DateTime when the current will be reset. + + + + + + Gets the number of written in the current . + + + + + + Initializes the target and resets the current Interval and . + + + + + Writes log event to the wrapped target if the current is lower than . + If the is already reached, no log event will be written to the wrapped target. + resets when the current is expired. + + Log event to be written out. + + + + Arguments for events. + + + + + + + + Instance of that was dropped by + + + + + Raises by when + queue is full + and set to + By default queue doubles it size. + + + + + Contains items count and new queue size. + + Required queue size + Current queue size + + + + New queue size + + + + + Current requests count + + + + + Filters buffered log entries based on a set of conditions that are evaluated on a group of events. + + Documentation on NLog Wiki + + PostFilteringWrapper must be used with some type of buffering target or wrapper, such as + AsyncTargetWrapper, BufferingWrapper or ASPNetBufferingWrapper. + + +

+ This example works like this. If there are no Warn,Error or Fatal messages in the buffer + only Info messages are written to the file, but if there are any warnings or errors, + the output includes detailed trace (levels >= Debug). You can plug in a different type + of buffering wrapper (such as ASPNetBufferingWrapper) to achieve different + functionality. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Gets or sets the default filter to be applied when no specific rule matches. + + + + + + Gets the collection of filtering rules. The rules are processed top-down + and the first rule that matches determines the filtering condition to + be applied to log events. + + + + + + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Evaluates all filtering rules to find the first one that matches. + The matching rule determines the filtering condition to be applied + to all items in a buffer. If no condition matches, default filter + is applied to the array of log events. + + Array of log events to be post-filtered. + + + + Evaluate all the rules to get the filtering condition + + + + + + + Sends log messages to a randomly selected target. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt + chosen randomly on a per-message basis. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the log event to one of the sub-targets. + The sub-target is randomly chosen. + + The log event. + + + + Repeats each log event the specified number of times. + + Documentation on NLog Wiki + +

This example causes each log message to be repeated 3 times.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The repeat count. + + + + Initializes a new instance of the class. + + The wrapped target. + The repeat count. + + + + Gets or sets the number of times to repeat each log message. + + + + + + Forwards the log message to the by calling the method times. + + The log event. + + + + Retries in case of write error. + + Documentation on NLog Wiki + +

This example causes each write attempt to be repeated 3 times, + sleeping 1 second between attempts if first one fails.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Initializes a new instance of the class. + + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Gets or sets the number of retries that should be attempted on the wrapped target in case of a failure. + + + + + + Gets or sets the time to wait between retries in milliseconds. + + + + + + Special SyncObject to allow closing down Target while busy retrying + + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Writes the specified log event to the wrapped target in a thread-safe manner. + + The log event. + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Distributes log events to targets in a round-robin fashion. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt. + Each odd message is written to file2.txt, each even message goes to file1.txt. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Ensures forwarding happens without holding lock + + + + + + Forwards the write to one of the targets from + the collection. + + The log event. + + The writes are routed in a round-robin fashion. + The first log event goes to the first target, the second + one goes to the second target and so on looping to the + first target when there are no more targets available. + In general request N goes to Targets[N % Targets.Count]. + + + + + Writes log events to all targets. + + Documentation on NLog Wiki + +

This example causes the messages to be written to both file1.txt or file2.txt +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the specified log event to all sub-targets. + + The log event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Base class for targets wrap other (single) targets. + + + + + Gets or sets the target that is wrapped by this target. + + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Current local time retrieved directly from DateTime.Now. + + + + + Gets current local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Current UTC time retrieved directly from DateTime.UtcNow. + + + + + Gets current UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Fast time source that updates current time only once per tick (15.6 milliseconds). + + + + + Gets raw uncached time from derived time source. + + + + + Gets current time cached for one system tick (15.6 milliseconds). + + + + + Fast local time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Fast UTC time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Defines source of current time. + + + + + Gets current time. + + + + + Gets or sets current global time source used in all log events. + + + Default time source is . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to the same form + as time values originated from this source. + + + + There are situations when NLog have to compare the time originated from TimeSource + to the time originated externally in the system. + To be able to provide meaningful result of such comparisons the system time must be expressed in + the same form as TimeSource time. + + + Examples: + - If the TimeSource provides time values of local time, it should also convert the provided + to the local time. + - If the TimeSource shifts or skews its time values, it should also apply + the same transform to the given . + + + + + + Marks class as a time source and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the time source. + + + + Define Localizable attribute for platforms that don't have it. + + + + + Initializes a new instance of the class. + + Determines whether the target is localizable. + + + + Gets or sets a value indicating whether the target is localizable. + + + + diff --git a/packages/NLog.4.7.2/lib/sl5/NLog.dll b/packages/NLog.4.7.2/lib/sl5/NLog.dll new file mode 100644 index 0000000000000000000000000000000000000000..2e7f992156f94c68e432a0ce76974fd5861bf899 GIT binary patch literal 683520 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

#JG#v&2@nkq34cM1SdE!5~ zw13n`w&1#$;Kw-r? zolj*Jj+1d{tvgr%5|oDC8rYSZ%A6#Hjd|V~=X5^2rpP0V3EvfZhm+s=ZTXcbfih_h zs6;O8ph04}ARLTF88!}~KdK^1sec^=FkZ#qh!{|p&c6gJ#kI$$bKO-F=fqANgtgNr2Lt#{cp~Pol%) zoYA{L^)srVb_t#V0<6dWnSjdv{;1M)=SKg+C%#K!1ESnWg^0AhDuqhwQdmG;0 zk_lcq&GRm_vMBkSH7h~S3MibG_c=RT^?I2Dk3YNqZ=hJa+MA15a1%-}Z_P@cbjA)@ zX?Ot!`wiyEO%wiY+3{y95`4Xd_7~*q$z;(tnw8OmKl-~g%@a{GhO^2w9+sXaXLcqm zKMt!x?O1y|9hyy~0i!r|s(Nqf*D1LYZ$7|dPP37NS#N0eE)a%pBR%FCH|8DXEjfOimZr;z*@ zB)QGSxlJT(^d!xhmbi=fsokb)yi2>&w{(W5?Q*nptIz#}D!-`N=X4&aE>@k+eQWKO zi=EGYkr)%5gA#r4DDymakydA})|YgKqpGcav?p-1(2zN{auV*kIJ4+O)|V3Gl~*|o zJ((prm%8$@5r@CjrneDrTeikiZ%_hgj$t=|Y9xCh}NE9vO5}rlT}7 z9V8XqKKVRZ6kN`8YrDP{!)FUR>e~^Tym}qI7i^ieBIgeM40Nv7ry^t9Gl(W77xY=l zKkmWXRXzp@`%GNgV$b61WSj@!>&2&`V(*bht4UHF?8#($TLK8-RfX zlJ6sbP?msJZ>Jk#R*#DdNncK6h5wG)#w5V z{q&A#BUE#g?22lwgOV+hR|`}F(J|Ea()YXsTCthD0F{rqZ&4^4Jjtf(itz?ySmq|#0TuvzMLe5nA-chv5rZKOce{Y%LZS_n9^q3Ey`UagNFOfX%4I_--Tvw% z@);u^^d4L?ca>`{NmwAudpflMb|Qfpn#AOZi;8XX5D1y6{nG2pV!w`G2Ak0h;PV^B-#-JQ_UD zPF9s{Dx>+hqJDmc4|bj){vbRCH*S{X*B(f(sLaccU5G4WbS*#5bpfvW_aS}A&$l7V z(^BpU`5+tZ0!kLXze7Pb7x&Xc27{d8$c?trLz8&Hnpm{NQQ!+CuERBl^&jK9U7>ZA?y_aLSUgHAIlKidlI;H|*Q+EHpPYvEJp->60h zz%nqd5ba9K(VhGh%I@qyW>P=zIBzCRH)l!O)YbLku<7+ zq`4_`eG)})C-aIb;6uXUmi=7%K#U#^bCN6z(AF>voGeD&E2#aMCXcHiMl4nPchh6U zZ%Za4Vwev%>vM#C<_zcUJJ-ZH4pvHFeFlS0txJ3JeG_dw_HPnPT6-BaUfr=a>nx<* ze`Vkz>^CL%fpNvKEv?oKVvZA2Cr9*O-#ZjM`n%K%s2CxsbUOFJitZH+$+$u%O0}x6 zzZJ#;h|@*FHWAWdj8P0m>DFQKsz zL`M@|k&2#GNtIRAYM@0L0%8|t)ur0ZL`z8&RCa5JFGA(YP&o3rLg{=WJk`Gnykp4y zD(Vv6?+_P(ce!vEn_5GnnXJsgXw>aAT5b z!F!9^D%zWTt2`&TuSjJ(WLVLSxdg03^*u?y?&u_xP0sI_$l|>Kia$A6B=dc#zOHRG zcHU}zAfUn}KGv53u52(j9h%R81JxcnNU6@;APz?HoGr%|j!c3>-xiLn!y%x~I73!ZpCevHGl`kx%HWVJmxo@Q%@8f6k| zvUqoUcKowcjwJ%GsT5)6y6sz&j2S<2a{3NkD) z*!jPmg_<*&MI^00H`%z9*jdDwBw{Y-e;AOQt`C%kff? znFMW726a;_gX&P{7y3)cT=gI7aQ#l&@+||ye^HT>BkRs{U~_2OSm;YCHXRGtaIwJv zPi~sdHit13z4hwn6%I4hv8t>_&edPgOUew~rHs4Ia+$4L`@qG3Lc2G57rjkOp4$T$ zu90sgTRI^|vF8&dyR&pId0tJPpdJnqtXh0D9khA%0=DZqvHElys*$gkx+W@va2$Ps zpEokn^lqYX3L}n&XNz4EUQYa9dZxQ5t7p3UsbA0PC&8aC>A}yaHsTwArP>_Xk>|_UBX#wZ;%oD^6;Lyg6cm%t zNNCzBa@m;(vdn6b)Rukbs`@|GHLvNd??umdbI-WuBnNO4$+%50n$J2sj*0EBejqua z;-FqBZnbxFcsdyBF994MWMNXo-&PnRhi2FrQ_?YII1U(`r%efKa%y95N*T&4aBLRm z?lK=3S4ctvvSNp7?9G#-bFn>*u8<`9v(4yNPL7W5a~fSCNpy6966{w^j=o(hx_9#qO-eoRW$b2$0~@vhaF zb%L$h`i;U4OMT-N)H_dVj?WaSv8iIY1#9s67h*dLoQ zr426ORfM4J>6L@@^opPFUm3pwv=UiYi?zQ)b5L9Sx!ZKseGp0WCL#x?Gp8{u zUMtXgK$-qZ|E~QfM85_QFW0P7J}Dm`i38JlJ(=m)R$@J-&<*t9Em!UVbUxr3*NV%sw&MfWodw6T!(>g=Z%=3h5Wpu9cF1lTYvwCAb2_lx z)|T44h=wTaX!Q=Ng@o^Wv4kb{c~#Byr0;i_ZuHIS`^~|+(FBr(443^ZGa zReG}NK;=cFW7T;=lV6HA6#tB_qxVkLuamr~F1Qj2rhI8O>-DpS+Z{jQ;7BmNBRZ22G&@$N zkfKKl8B;b1Gc6pal87&Om^5(VW>aYsiZqT5DcM3^%@zyKzMlwzdx_{ZBswY;M@r&& zrsjiubS|aUWROU(CSDON=Sib@1<~_k)2GZS-NAB`^SW?KdRtpbogFkc@!ib0gb6Qk zNl(Jbn-G5 zdz4t@)DKZS&F$2Y`mFS-)KBbeq(*Kq8@x({gWlLusOcdE3N2MGwIYvF$c`5%{Y(M$7$r+n_tDD%<}knavy^zHuqE!GcC z5OEVTYu_cNy%C}=Ty~n-bf6iI9`t!{&;BKJ3oTx%vT+ z4HVH5D`huE_d*^Ald!HQ6Th(@CZF???Zx&>!akI1{%G`A( zS|_*Xg`k;i%#Z)Ykg6igwA&z7(;Sl`^IStblcCNBr_Oi%_;r9-chBLY8Q@%bAwaFe zo;*G;`Nqlj^~v`Q$+wn#>&f?geOLKydJt=YmsitmCr&A z-0LDWL;Dn}YZ>MsdP#tj+&38RCPa`Hx;aU>zAjv@Bs^)?J^8+mcJ)Vl36nflU*_Yt zK~qyPm1IInbrcgzwu&WQTXRwa9QyMyG(i-MG)C9!iwgK#_}Y?(9Ry5WH|81v zO(;_GB+e*kliCmtow=$KENyk3U-Rd3slY(yG!;r0zt?DS{nWjizLD}23yz3NCM=zd z3bg1v&XLKvg2<@QHH|*3H?x1I$X6?4qr4dOH%@H&LrWb3PeDDnikau;JC*Dj9r@wEUv+^Iowe*!DR#t zj4LF%T#1NmiqB)$r;)F-$h#==8!fUzqAL{nKEKYqTNt}BjeCQ|<=#M8f0M;kNc3jK zZLMur;$>~SN>Bu2Z_!sYewQg_?B*2JI}BAtsNPD9fpLXIZ&PIMC9UThUoFqRu9S4r zU8qF$cKf!#0}0r^E%0Chwr`8LT>&$fe30rFE_rF=z}}E!9il(OmmvP1%@IQM0b12{z#ruw`1X-kwbB9oMcd~0Z!=`Ek2A>8R)btqKd z-Yhq*)t;W#+K}eQTqY_c$8O7xCU69YhFsc9%A|shjlS`_`N1AS3yq8RXcCRHTUY8^ zEM8JhW-n#y@(JQsXksc3{bFjGTepgPD``KTq)ZE!iEnGqju#AER=2B-hb~WIGkmQG z?;-B`eYD{E(R-Edh+_SHdr@Rp(oGP^b0V0kIh0!Kbr4l8x`g z(G}$45Af{{^(^jPxT-TuI}#2^{Ne|JAZ0M!#H>5sdZhh9B)B0bGwb%2zQV~5_GDLo zH_4)pGB9j>ci0kKZ z_51l|>K~TRt=X@lo<0DLLH#2D344H#7{#7!a{bn7!5G5K$ge`Q6hBG~qhNq5O;(N> zN)t}!DMN)hQPDW715FY?2qektm*jPq`nlUqY6nTn%z#Xu9XL0vt*8vy@qh7-f^IV^e-*N9|M0^uC%!7KqVeyuqm++)>`prgr)TMy9?~79M&GbUsyX& z$X^aEmEo{<>3T`>4sjufSrEtT!Eu0wENhLhfGVyfUTn^3!Vq9&t#Tr{>+vm8v+ zZpx)QVh0o5#_t|Wo!kq(W4dmA&Dn*}?qPTG0;I-{pDkiJ23NRbZq}lh{gz5s?H*C~ zc2@UtPwl&@n^^(bJ{!E~F^a4!g~jN*a=H2BrQ~%Vd6_1G|9S)y57AyI7A%H`TvLia zLq>xOJfsCi1U6Fx8BIl$44YF#QPD^l=qxUJ9@^b|(4h2!wL0R&;+(a=bj*?mBQowe zAe%ONqDwi`4tnQs)0N#n*I`gvajGbNcv63Kqf{3=+ebQBd;hsg@4}+V%2eyz3Cv@s)JzL!4PgIg*3DR3J zzOR2#Cf>*}8+6wD3grcQD8UcMme6!Tf8nGX%}5@u6J|`ylvd90F&XoWwdr5M!7)G& znjl}K?y5L&K7z9pAq=Ko@pj-vjSklraM|Nd&9VymB|(1*<&&US(Nz=ZvF^bZ#XY74 zO`e+)^etP3zBPpsLnNh-Oks><@qSq2c35}lEa&wuL)c$9zQE6kl|O`5p$;8W3I**enmkWvrL#=DEo3Tl`2%BMM zqvFrf58ZeUyc0=pe6t0K$fE+7sxdn5iuiNtu;KiLTqh~dl(NBUa62m83^ek>P`JSJ zxsfdyho=7YirFL|d1#*O=c~5IUe*kbyM!#z9o|IyLV1on&jvwpcWK3)oyLuRL_Jid zB>3rU`h;(`(1aVkkFFrR(RXTnn7Is)3IEpVupnn~eb0*L3OVf5P>N|Djx0gjsrrdT zkI)sE?SJdP366CTy(Ny}u#t=#tj_+Tz;<2P};XSeCP4j@^v_C&^FOyA* z1d7v-p9%qKJ0d?QO$IohZoF#~LkfumvDqn!0{yICv(MW-?`M-o-07>IPtb70R>iVq(lOPBlJ~UQkXeWO zF^PfMk1~2;8ugA$u`5}E?8778WlFW4rd_x?9VVp0B7Q4@fq(t@P1U| zd{l_oePYBPJY4 zEXED-K$(l=`n=Xq)t4JF{;0^pa`5b7uE@(>=F*$K{e@L*AXQ`G;zBs*cq3%s@0F3leFWV52rJU(j@WH(|{R32PoE&A_-qqEC?3 z*qxK(tW=yYSsaB#pCnGi;3&8FuN%UlA0(>UQIJ{ES=&j={*TCWUC@E|nx>b-;g0Ax zS}9$zZs^}!UquE3e&c>+8#F$mPo{CNJ{^q@@!=sW*NuY4-qaU@D7bN1sn}PQh~Py~ zeFfGxh3_Z7BsAto-){Jr^`E^6L!uCUnSz=57T)K=$>gJX^dQ>c?|h>%_=8F}B9?+2H#m z_{I((v+nYa`S?^SHU0*%)_xYW{t^r&oepRyAD_vmJ70aK{!Ky)^|SDHX8roN@WrR$ zVOwzqA4A1D9KRONrNYbok55BHZpm|I<41y-=-d1Z-R;*Uwro6#r`c5Bkq7&reCnI{ zX*|XccMi6UYH=DCA1hC3R3vTR!##-Uz(_!z77zj|gYs4=F9(*)1In{aIVVZQxta_m zwcqqj?v>@eIXk-j`iR3De_v=*&lByQC*>(PecAsiPuXC4(L6=Fc)u5;9ggWKGUoF% zpLm-%cd4ejL%zLjwso8(SBsOVB7eAVpA+<%^HSM`tK;Z18rRJl|A8t1S)kQ_CjOzk zR{!TxhEHi61;b|rl{13)DN0^ke8RTcqbrDypoesqx6jAVfCaS=ZVRfIe5{yiuEc`< zGZVdS7VMj*9K{#t%-Z)BdC>|-w_XT*`KhgXs1oPq7wZ@CPsyjNy*8S9tE!K*Z|L0f zKjV59`u{VoR{c$={$7@JyC30M|4Iq8UK~>Yu~Jbk^__kAep>ZD`V*k+ZL6-v5!a+9 zDH(GbX#?F2Mak12Th<_LukPA@me<$pKkhxY&ww|ma%DrwWA**g3Jz+LA^cPP80a}T z2^RI8R<~Yv`DGMZ_qOgsoVQ;tB zc+)AO_fT^hIf#izuQ<$xd8v27AoL=LUCQ_D+4XKdjf086Idx$6R-JrWX%hLgAN7*( zzmig`Ui8=B?_|`B0;T0-h@P9Q3)%xdr2ch@vhCGdQIdgoh4wyF6thzvq&;i@)PnbJ z(nT{t;pY64NPCpp&Mjt~NOTR>roSOQxNp2nCGBV&q7V0639PgN4+YvZg4CB7L7M5a z(UDo4_!m@UP*if`J>9E$}=q`$aB_L#D`hl3G8`LBK#Fq z4*yV1x&c*i+yCB+EdI5gPzds9eQ{J2OQPcgq1lxVgG_9 zGXuwal~(qbZR=d#pQl%&1&TD1t#pwR2|_>K^3FNLuEskdOlvcdd>wP(hAD>3yKEYK3N5Tk{Y5o3|7 z@3dBGye$t008=9OuT63!TG!-c^Cx?^jnwhR+CS$tE_m^5^E98=%{EUfRIsWzqqZ-d zIEW-aEsk(x!{f-cm$rc-K*Uh z3BI8TRv)zeb#u?;80y46Dw~+OY@O6KqyM4lF`OR_(0S6$vv$WL6TY>fk7hIW{8d+W zI%vBC^_A_}tO*11P2phsm2<6=Tv9M3KTIAG5zoh67Q>UNcCshjmHaB$u(WAqGU~mb zBgZCoEOVE5es{lH0Ol~xeL)W6+^6lWT}KZ4+}q`_&%HOU;g{^a!C?Di5UYRbaB=Uq z;SFmy(JXEkx%X8DxUC5&uM2B;wS4DN z4Zt@eo#SHlJ}Aw2*?eU4z}~mxkrjph>dHg328zYi|7C6N6t=BzmbiHyz3VIQox@~7 zu)4CSIAdD2@`^N<@=LOnrA^Q7xk`7oGTijIm#bZCV67p?2Equn zb0AkB>%hzUsqHLg_=@&CNqTH^7kz%9njK6k2g0;QYu|$)5?d1o!pt!^br@0N)vS0f z@!>W)v!!A7K!FJ>x+Z9>r~)Zn6Wa}%(aVn7qdW;@*NxKkddU)RyCT@cv#Dato}Ece z+`HPO!+u;CsaZNFwfspDd*#2;14_T6f<5*&Kq%R*uw?7qQ9wogC-AnUoh@>QlQsZspV z<3WUe;pi%TXE1UEfD1brd=t>5jKVlW;`SXdPe6%gw+Ei>o%hC6b`Y4%|0^0ZT$SSZ zI%qsj!)-~h%a}X#%E0L5M153o9c2@*@<&f3s8X$uf=G`;JV7ABVL=<;7gCgvFG)K{ zL*R)yzQf^sZCmzK&!p&`cSTC8Z?b!i)sO>-igx*zBQKxy-HBNY6Rzz|vUx{8bmh-` zJC$2FnPk1K<8*b~E;Io}6Gu;93x}AMt>Y+K`)CWAX{gD93L2HJDXmE+V^8TT@7}`w zO>lp;S?2aWWM!^&JbMo@T!*NPly^>ANZqFpwmJ|7=9GWZi&~Aisl7#)xz@ta(JaIi zY9ZRMEt#rRcQ`7&1k2MyPiclv47TSzrE6}bZS&qIzTnDvTsrw>I_ez|-dGK8jWGM7 zMX7Hb62e+#o*>Rn^5x`9Bf_B+hTfbm73f>j_a#h;`PTEoe{zEVRDCt4nuF(uc?{!J zjTDXL(EAcK`!&^lYqcrV$LPXHj@w{76GEE!X#EsGkGw${#GP{Y#$9}ThNvddY}}16 zp3YBc`}lRFXq-Y+KRO9#5ydt6vhn`-x+eDRhWp%3@n`TeQMQ|?Yrjk%9GHcbkt_;R z&CqgZcEQgAOyOEoE?jjZ5i?|witTI)Vwv6B?jmnHp)mKAUKzH;?ghaxd0*E&aH-7$ ze&b1oEYrbL8oAi_9#2PZbfV!C->H4!H>__eCyBQ7#fn83A3&s}r%%k5QMPB3d$D?s zn3>EJBvW2?!2)k~O2;d~`Au+U;vNdUmh1dJuOejPnfNO6YF98(JJ0&PrS)+oyO{bc z!aC`SR_ncZGVyGFb#Y>~h}HXBcY^m@Dxcbqd2UpkKrkvEAQ;u^9~VgiT-<`S8MAG( z8HxSoVYs_+I*xp>(W^;u}b0znb z_V%_r)a!HYh5Hn5ch%EUM@*F?N?Y?$Z$4XW$Z6JoB@7iFu}CXndH1B(F^Y<^XV33NXhAN->2wTRy+ zBAh4@l@#c`R3Ta?e@A52PnRapF-^yRH+};aR<@o5Heyq;a=kDa%J=;pk2>? z8sA`&=0iZL{^mZHB6=_ECEHAt-wT5i#lhOrdg~%seq;T9-4tvhnm9kjayM8iGuTKc zSU-q=iLj2UI=PKS&2mNj60jlQ5N!y_9)h@V&MK58&xx*4-JWiJ+HJ>OiG*j_LF^K1 z&yloFaSH2@x=&*x;(14U`4wJ~dtHpf0dM*e?`5g`*o(bm&#*BWdIu8oQLCdjgNz+r zsXT2ijDpqJJ%AAE^qmYqRBb;eL`eptCl-1ykn*%ly+o%r8O|Z#`i|jJ7Pz7_AFJ%uOmPjn z{rRJcTsfw;k-U?7JB%LU z;PIVgG_hyxq4q*rxYuq3Jd@Z6Fq>AxD!;T{_B%#L^1RRNGQfyv zlG9wZHd5&GA+*jdGg}i?ta_j82N~}ims>)!B~|Gv2ROR@OH{t-N)S|1tXH#eO{te8 zzpKb1skTvN(}6W&t3|627+|M_G+e)&Nq78gVhj!W#opfNdhn}#I+`}XQWhY3CqYbK z@6e|sx=9~Dx|z?_3t0;q=Yd3v`3*qa$;j;FNF)||a0aH^!X*v(#PfmKNrgWKBUOm! zsT!EJ-k`Xe*vtW-mIBNHpq>KE;r1|y47~5P;q63X^JdVV|8^Rt%fCdq@hZvZ?RX@+ z~~`TgU(z zvc|r2g}x7MwZG7c(g`-tsAJK+JGe;DQe&ImH>_)TzymV7`dRFUv@Ifp=ss_l`LOYmioEc<&ds-aoe)a_HN8s)@}tc8p-;R zM3$cVZ*=#-S3t{C(BiU|82x2tSF>`6my5^9d}5?_LtFjitY^4+6*X3y*Ka49Z7n+@ z6?t=?W&EH5|D8_}GjKCC-CNgeK(7MVI+ke$@)P~M$fd5?2--PVfftaML9 zbN!9Re`Oj^!)L*xzn9EAbxD9_bY6C!+sP(7_CvxsL0ufM1&+XLU?mL~VVet+rf= zlG<{fXp7o%%SdmFv)Z$V>|DP!~_c_`z_-rf&29veKx@AZY6Ed~U!wP*q zS>HOnxx08H;(I*IAJ085t&0v1ro;OomFCWo zXPvtR>D}mOYZp)(4piLGn+(gT{rHOBp*w5qiO91GHhzwx+jZ#5l9rv>v*R78;z3>? zr^b!nQX9f0_OOs^S#a@a7458*WYXFBaQ!;cjlUka6w4ihgODx69;LW0*XBDF*SHD< zTz`vJ)V0k7S1DiZb0mv+hWhHTbD!f&E9|?fjV+8Y$;%mcF*H7hH7r@CO%{PIZt{C3 zmA~xfbtbY15hGnP^|x*Ck#x|XZncA^>7G^pG|p!d|H(~_w$4GvR_Dl4#fBvW<8?U37l}gI%D6Zpmu-&ORc2#pq9u|;R z5(?EVWR}8sE;j~GblJ7?+ma!)Bnd*P-$ry1_>tz9y&nXgI>ZD&h_>? z*71ZR?c5)+bgt9ScS3bDaeG~`Qo-KNU2+=bx*3v1l3~aHURICXX>&|8@QvL}3 z6iP{jf0`%u@TMP}x{vp!pY7az?ov$par&0S(N!8nkCTbGzfqM?+@CoBT#^FJ0iclr z%mH951(*ZCr76H1ebE=04}>%Ng)))jc{!T=U$5qZ(Q#505FaIcBc+%J-zX@2V+It3 za0=fzHJ$N|+e)WwUr6)+)mHMqY^(VT`r`Sw(zWNmt#rBv@+0eSE*+=($bwL^L!n5# zL@V6YM_V}E_m9vW|5e1Np1-ww{w_~n^ezNHYRk)^-P+O|Xq}n(gSWyIjT0B`Gxgm; zoIfXBV<;kKqC9t@MN7uh{!o7|p>%y_o}4Ntq3SfkdR^(P4~0jZH4ItRvodPt%ZJaZqnzK5Ak}` zSDI~vQaEk2G$~Fd{+am?_eZUZxU86F(Gw3U3xaq)eUPUv+e6WB4rBIGp{-6+lYLq* zWB&Ki8UA(a*(3hgUUc)OM}5BOL7TGW*|*)ZU%O}jriae_=5&;q0|0VYH|)$oooJnj zG>$aSMLRRTg827X7b=XsiKwUvAx4uioU%q9ibDEu);6T?hN6`&ABJtJ+Uu!lewi4^eOkm5B5fE!bQIc(lr)XZm}ZRN9{<-49r1}?@R&am{JFaZ!5pUnsp$RvSw9}Zb-421N84s0p%fe2Oz?m675+?I;!^i&g|nJn~o)e_H>N?l-)j`pYgG0l9CpJ+h)v%YW7%;J1iAFt)#;>(-0da1 z+x%)e-($2ncY2)SxN3+0-TdeNj&xw$!76^qSpUHHXU31I+r@)WSdCqI;$77c(W{|F z_ZZZ763{V#7GYpkRF{dO@0?Y0kB9hDHX5f+qf-HGk!JC1A|%m|Z;#i?n|VKNcMQa< zkC;Aa{Tk|~z{~EV7Bzx02`_fzOa9j8m88jcao_f?nlx=&|I+Y)KM1@(@_o+AZ{-^j z!ZOb=MrB+&w@?Oe1a_6@LFz(W3^e6} z1!8Kx5HIFukf0I1)o0ujT-^9;VrbU*9QNqe3`6dVIusSNaC?TCzzj3Z2jzsaShX{l z)RY<&!Gfbk9+za%<5YmVJJRLtd64TWKBqR(70xaGS8~mtQ#YB)KFNxQCikrordQG@1P$}D*6AU*wNy5@hnz00YmULi)5BtdL1udjy*$q_35E63 zJ?OW;5G|8N%=Pq&>O40f?NQE5d=nsZF8w*=XW|X&IOx+9C#Td{!!~jO=+x017MI>d zQa^ePr814y>PdmIg$~5)5r3kKSLe0^L%Yjn{9<`gcA$Ih6Vz{IFmHF*x^kiQb~=(+ zREMT51^PYBtQNVKE-O(m5OXd;WQEbs?x4n^tEr)AgIo{rV~jBt3){=!O3bBHo0!}Z z$)HN~=iC>i3i+8e&jvRqDzD=szTi%Jr|p=`0pJ5Ez#Q;jOVove=)5GsU1_*Es5R~3 zcIEp#Z8i2Fq1w{=?kEH~@w~1}1!PD0aI&NQvD^1;CC!zPc>cE2bYN1~^M0wZ8yys| zu08-_-yY{`d{oZ*r{Mq_A2+D&{IC)KV+o;Rh>tE-$^H87l&A3_#qsNV$bFA<-$!uc zUgzFZ@cZN*`#Dp(NuQs?u{qpGFRJfF@W8l2>enjA`(3KNmFmOJy^q`%95Hb2k19Jol{c!quyF2=3f0B|RI7w%;{Xa^Lb9=OH@|^|``byl@8_ax zA-5@||JBfOV;>}juFOR5AY@=%UK%+4j($vjxa5X8XlPNR9w1`$6)o*wktDwekv5Gg zdo3G@REHncUGIO?7C|*{%~1%;xj^qaGWx7(lv=5{4a8+09+7D_8e4YRsL)n?+`j&( z8n79$UtE(xK%w?D%FRK4^X=~a0qiZJ`xq}{A)|gt);$C?*>(j6^R)X0S#8rOrvA63KZRjcW|YQ;4BQGm?{s(ziW zSv&KIgnIN;X<6Gb7EfY5rW)teeIxilhUPUd3$&}ukhx%bEu4+ zL;Xg5&@6jKU#9fEO=C8%BmYgyQ>!scI-7ZJgnM#()cMrwZnZ{~Eb?#_poRp7m_XYE^loI>VdQ>ZPj>W|5F>*7{mf4a7I| zi!8luy1qq_hf>K^;}dib)CE7OkM&Bu%btlJB36AF&D;1CUdhJZCCJ;f1BOn~02}H3 z&dR35(GTeI$rI!5&PHbo(~v(ZG-7@Z1ZU_B@$4V=SM0)laYWtqHZtfcWA`_@RW5rV z-Vw3{J4F7>Y4EC|C~G8v>Lqv}M(0tiU*7N4r`&!18Lg~4pB*PGuv_}kKFHS!+`48w zJ6T(ITf~V~(L%y)r7x|x`dL+E;=84D;(*#!beL3R<&Ub~;u_Uq6R!D2%{M1-y{#Ry z*KQ~O_~X3;P64^-7FX~G(VdvIFND`r+v|-J($W$tr?|l?WoQcuJ421_lam+gtblqq zqOFMj#8SNzx|pJsZsBb0|FakqUURnCkly1s#N+vc5tV^{wUNf6PqyB}Zg#CtQ$=*G z&*;<9_^dvzhiUSw-_Fd^s-yZr>T91Pj{4erruH>B74MJM*M!YklPXx3i}b2}iw*Qg zmCv>#bUOBnn?YOaq{?5LfP*21mu|wWQ5oFypN^oC?iwbvh$uMG2$ZNh?)3bu#mGZqb@uVXu_-!%7()Msw`sdSG`sm&=!KNt>dy za#22?wKiS+ye?O(FKG@(n3&jFuVgZXiG$kv{lxB5+FtF`>cZxm+=Y7!Jmr|2&wE~9 zpSQc(e4X!XuOFfodl^5?20zqFFIoPaPmdC!3&dmjGCVP?QX6>_9k;k9OW78p&-{!!;8Ad-8TUlRWre+1%Ka5{a zrk&;fYUAc;zGA`jyVTe<9!cD@j)f zGmTgAH^+e&{dzP9vgTX!d& zMUi#Hvf)9ER}(FHD?vpGG+05tzhm9_HgRy zAGD`UtqkmMDb^{(>MWysb1Dvw&$ZzM!)f^VoX#iSg?3Gb&{OS0NX&xc0cU!ZrEUy8 zj3Dk2@J4%RrrWWjGPC2F%5>X|Vz=fJ)`l5KAw*v$J`zR{6gF z-#=vR1E%7n2V^!XJN^D;2J8xXWG`1lgk1jw)Ax{HD;+_v;?iM(cMpH9^n`MIdM1`6 zL5=C9CB*%L;%19T6VZQx1a2qzdEUwUvf%5u)#}$jCnq+@T8Ta_NUvJ|yJ|V3x5Ik{ zU;U;1r=dXB!|&IEAkK0$mU@F^1U*2{Znlh{f-1I3P@zMeW8m9 z5IsWDsa8H*zsY;W{&er)+u8iTwv8u<*FehTYc5IuYsV9q-I2}0GpgEYr^f(H9rWyS-`Y>^L9zg7nog5gsTZ%lkVS$P)%4OOfSKjKRy@V zVEg4OOeWQyrcYs%`t#JU+ZY{1?#8#LdG5L>%`@Y@6Z%o~ZSoBrb~retUOKq`m1KFI z2=FIfoA@(v44}QvGx2>`aB^a6Y}X?rj?Nzrm}CRfJK}X>eEtX_euovbqv#3>Egd#ajh4*TX-VHe;^7I>1)}84EovhT zp&rC9u>kQLC34nD6nAirVH9PIBJRS(5#B&lX+Ww&g+30POD8)jpiB>ByH_v|uU ztE*kLF-A)C0rbK2s?qbRp>P^(#V*b>+DDt%W25%!%5XO)cJZ$js|ZeaH|Qzy&XRY1 z9VIF-O8-na%EoG(Q9y&q!{|X)_HenY-=(B64>A{uOKAkJ{&m)WuGG&2p3u+-4Y^{S zskPAfExZOcA&K5yUdcht7_Qu?pz)1d?o58T=&GVRKkw#9$4<@Y$h(T-0^x-u)B)7{ zNKyTYJAgX6+55=Ay5&0v@HQ7)-LlnBcJh{;lJ=7>@4R&>&7t=>XwKW1;4LOv-Ob>B zG|Q^JR}^1H4HU}Uxr;8x)fv?O(Ke4}H^$$kW&a;-ZvrM)QT6}d+}qRL(=!t?$)qQl zEEASYE&1#0^k!d0+MCzAK=j zpo}b{h|7zpufDGu|DW%vdvD*KOpxF2dH(Y})3@r>sZ*y;?Nz5v6@utfe1iJIiFO|w zhfN;LO}pbe;C4NzXb)}Hib3>kqE@-D71ZAVTB7MxU zr8lbR>OTdc5PpZzyAb`0BNjb<@r)u#_p`mgHE~}_46AI^DSC~#tE=y{F;0X11Jhxx zdc{4Q-los3o&8Tr`0~A5;j0I}!YiS!ed&4EH7ef_I#8fhoq3k~1eTc6SB4$(;)1!OHmH2iD}sXvg=Xt$NnTXKZUgU?N? zC7as$xtRR)lAp#^5^JWFV=pTnIbm%~hx@lx|E#VA*y|cT* zO+r1Ljdk4D;jaA_f?Zq7T(*fT8HFKTVV_pNa4gC15#Hi+68FvC{7)x&_dQfIyqV-Z zPHHnWxtg=I%08-%T|VPRtq`85m2s(l46KDWOV`=P7B0fu6g+yfqAdqHPhH<&wgDZS zHlY14Pa6==AgBc`>n*k$j!R>9{bh!BBjPK%cY@n3>XT%)qeUg{=rvyVCEhaEzEAd! zy~E}2uy`8&14J3##}BfREk*{8uukWkfq_+t$ewGUke*~TA?SOhl_oCvw1DE!4Z{W)+erFd4 zz&iodH@}ehuVhWq9X-MZvb{;A>h>-IYhQBJt(BH?dxKf!Jxk?1?j5|&Z01 zu(EWcLPAddM<@Qf6X%D*d5_^JB>V|DjZZyI3wp72Tzz+~Nd<1Y`edQI?$g?|~B+%+ymxpY<*{XA4KTU*bxFjz9 zKJ8Z|UZ!jklC2J7Sb6ydhr3|6Mt$xZSoN*sCA9p+KRUU6NDMjIE5u|!@y|}2hlS(J zJ}bn`KATDB@J2SvG97@ad4%T!tkhpjl8ym`PLDO#_$IVBYI&>o!_F4DARJa-kP8>_ z(I(6z3e`TOIRH#10CUjcEOwaTLVYjy^+X9~kw1e(k~ci=LTK^QB9`mf$n~!}W6-|- z>{wG^CkRw$v@KOXm2PfbPj;9Z)pt9ARlnt1+gwi?biSp?C4Hr+&93Dh_fToHxc>X9=}M23U}bDcbYgd3QS4rm)PA z++*<1kAlg;?bFOrd;b|FAv-o(DPmswAS=|@pR4FUsQUT~wFED(**%T>Um$JG|3aa+ zSW8ey_$WBxWBl|KYJRSwqeA+>E>E%^P#s2%-{svMS%E``rLwU-)9_YE_1KK=g=8nl z=QhzwW`wr^E}MpZ3L;n=jJsy*5!mIkBL6jr=bGn$HT&66tLeUgrv;bfu08Qn2z&W*tGU?gV)5^Lx z;{c6gyLz)%yL~l4-rBWZnT;_Z4O5R@|KXW!|ERWS;$Q@5Rp~?yecT>^ftn%2%@H(Fbox^(x#) zG-EZba*v&B^{zaN;G!LEapG@>TG6F6ZF@cZgR|7QxZOH=_*X95a~+OZXY?%Db5|T+ z-L)^j+NOP7OV*8U=v}>-B8?GN|B9qn{xLAXJ9m3<&7O-0`P|dbhO5tUSOTuTQ&`_| zSa-jrJ6e4O01%bf>T^L{`LQ_g%x`_o68-HXi>_SVbR>>`$ICynTJs!Y+zrC&Pl((G z7h|8jeto|sy8bQW_pkn%!xC`y--UIO!@7FqSDsp3cI0N>arGa^4qv&iLUQ#dRj@iM zTeY+J7;(_9s}tzHg3fZ#l%-RDwEkv)!5_&2y*8Oc9|IxnH9 zy^787w?bNLk+z>JZL_*u6~yp@ZBq}wCN_=Y*Kw`<8&z*gs^K?Mly3^f=Iu^+*-7Xe zt~%H(Vbv!^1J5e>H0ZY#O}nsDDgPj)d>^jSiRUVzUgbrSjrwqn9zTWFpcPDM6lLXU zOI$Z7fvZRHb+K_HU(Mrw!gC{DC>0bZNEaTKl}yk)k>};Rj__|3G#0} z$|&kL^_!2b1yDKA_EnghklBmrw65X5gj;_ai$^Je1@v=_e|Gr$F=}9IN5%v2h^|@8(`d#Xg%=_T`(3)g67DaE|OwQ;r;V5^|SfDqAstU{eFQ8+fb+@UE;H z0ArNVjP3!U@d4p zrYLh}aW7t=pXS5NZ>BE3Y)Z#EhvoJ&d}g8NzsZTx_x|MVTu#Q08Foma^+!;e>>A;R zVo2u>xt!NUSzxau=PjiSY#tmeuxopz9CKh6RHzZSH@WO-N2j2pxtDaLj^?|N^2*uc zkh$&WMved(KovTw%C0~DG>RB|p3lo(? z;A4;pdw5XdI5=?}YYsi}V&gH|>fR!a$LWkm(+D@?aZ{b>GZb2BC5I@q$j{=o=L!bq zIvvixKZoRU z(K`_LWQA3bX4_UHXI!V%yrh}8EyHXz#L{9?2j_BR@74){cMxd~tF8y(O^{*x!#cLE zNGkA?6)aqLP|q3lf>GC91Xsz6>pSc?4i2{I9~jdQ!kaVXxn4CbdB^;A$fxbQTu$ic zJT@)8CGbChbx5wpBsH*a^mLZes(d-R8uh29C6LsroK?Qk=sro{1XKIYK;9&9)y744 z6{fy75)M^s;@5g^oGi6p>&aUhSY|?wIMfBuO$_2BisMr?Z1^-fd}E8+8{lVnMpv z8EulVqW?rp)NtCvNo278B6uu>Pf|98@Co{0Hy-%jPTmV5m$zg5Dz9r8LG&&{(KMa? z*O1@+=&szGb9!1mJP88ndev?FvviM_t9zy!U2l?Hmbz`KkDGhGF7woXZ0-eJ**&iM z9|7jNunYo=X`id}pq-I*{SBL`S)J=mE$*f%*%j@QJyMmYSluy~RTtplZd11EJoi^0 z$5C9iLz-dpmV>?i6Wy7=w7B*^*U4%v1BR+*TRmTU|6N|h(gK}AYj1k0hQ5DrPFHzO zeqavgw`t9o)4lQ|bZPx@BP`7>StCr;zcr$|#avH+PiTv|-u~VtPk-ex{e|qd( z9D`@)zOY*7@+&_tl%Dz>Dk@upJtpYw4th@t{ga^AJLp$a=+lDQ5|LB#6#BTJuW-1J zr_iSaMa5F7{W*m`BIrI2ntOA?!vlh9F$nIg6sr09O3PqRePIek`^sC%HnDIkDby%D z=AiqgP@M*@!l?V#8^z;)@Xj`*j|1GPZsr|9<=QECa-;_>?n{l)MF zas@b!!O_n}f&;Cs()T0HFH*4|n@RK6?;!G@$77>P|;z7NRfU=naad^%bufo_>Tis#mC@cw=*!fJjFu(nb;M zss&x61*~*hvcXK=8k(8oz7S7R7$nzK?dckBx@VAfn>9064QIkz{4CN!B8s;@;ma{6 z7a+0d3P-wNdR|6eDb7Kgj&oS4eYq42$dg!I%-XJ0lw{o8-&^!j*O$FDzI?>Azc+A0 zNaJB$PLcjmg^Mz{E9WIQeK0C2nvE|ahVa)En~f11Q(gY%owuxy&s(HL z$cZM8Dm0+b9sM6jjGmGnx-5B%jTS{6wTzn^tF_V+b8Ee#^NgZh?QVMv+3YwohH$}! zs$_Gnpg*@hy@#>Uoy&3pXk$soT>Wl<>0G@~zmRm}4MRUy2wzC*qc1OHTKHhLxtEwd z*cdaqKM%R5QNd|@+Bgg9*MO3pVAs>uRji_LdNHYWj8q2M?r^p05KYOmBNkp3=XH6lEjsXYo^nn7xn z(=)n~6^)ug(dHp2_G)GvH9_c(zC?hPMzL(Ok05#-d85{TnSi*_{GaSXyFH&f$UEf9 zHoy1NjziU}dCB3~LGYxbx#RV<-DWqgPAp;hoY`OAs{Li1Wi8#PkdQHBR8tmp&#poZ z`gk?>jiIg+)jLB2y>2Jss|5CCsteuqt}sMClyhyc4us3d7#liWHo0}en^PFTM271G zYYSP@Ye%_$4h;7fOf}xFlhC7g$6<4H(M?F(P5`?5yWIq!)L&Zil8-gkF;d% z4~(q^e8jhx|7mP=E0=+#2ZLl#9&^Hs%DjWN464G6NFoD)C zS-Hife*K-jlYg>uQ9uFV*U+ z{I|y}-#ZC7)y?c0TiaR>$sqa~RgdH3{`%Kp#H|P$c1qm294)^s37u}en2ZBjL4_5! zUR>3M9d9xeL|-Qf^_h9^{qRsxe^FPvv&vrTst$B<4I=smSf*JzV4@7xApyTPSa&v` zK2t8&!XwjXuoJO=rtMhq&dC?6JNOhJ+XDmPi-=HLz!2deJbxwtS_1uDx$wofV~N&2 z!&XFAoNg_6xOep1oCvkI^=Eh=74PAB#H=3ankb{_tMS@-ux{^aP~rf4$NGr~EMMQi zuj$vAOtWkFnb=c5 z!IG*610jcY`RbwR5O@Qr)46qP2>hwJ=YyokS~mSd5T|IM0>}OjyDRZ<*R_786mA`Z zWwSla#;#Xwm))!2q}G?Sj?=9{_v>o+=e$ywteY_SriNFT$@!}aWF%f3{~|lqND3y_ z!?qRctS*11yA#k`tPPrAXLe1IEbK;{^s}F=SwJGw>Z#io=zcT1Xp}i_0(=~KJTK`g z0fgdGur;NtC#K_9qWG+iH~H2ir}p}+G8!)^9*HNP9Pwsb1#mh$_k)5`IX&|I_~Fa9tb^Z1B*Lzi@HUHt@C z!R%NUBhcSOfaT?Dy6yCo&R{;cq}%^)pY^g+n|FwM zecW&dd7Clb3p&~xse5*Qs`ftuiyEzY=rnvOr0F!VDEg@Fv*l6RQ18S!e|Q#O^@o!4 zFmaeX_xtpPp%f)tL@XV#C6W)%1l7_L?vCKHO-;QKX2~b~G{RB1FziB#eLRul>Cps* z7ygERsgeO|&J;c^AUp(S!(+M0`nSM%=N%hBM^IG@6%=aJ&ybM}u!~Mi>xk&vNUn0& zeL@YdpeTI1Ra{xm!l5h9EiTJ$j#bD&RDo^Fcg|Z7%PJ{Sdd4IU@|J|$9C`(K+F#4` z>ZQ?H?ViK+(s3PsYDyiSrSjb>>@IZ9#+zbg8zhUw<3YihT?G`Ul&- zKEM8@)W;*hAM@*vrG7L(>VIwfz+LpNgbuiu$F)eyTJ$ijFe-k#G%CLe?1a#Fr;e4t zj`92ico!wm_zpjItd~H)3t&Wd!b9zMQ1eYrhw;^)Z`LJRkLetBAbb>=v>ul`zRulx zLY~I=pwar3Id$W;^`tqaHsAUs&dO##d=13er_^2whO_x)%+*-vQ(l)T;TxyH>55UD zxd%f#ZyGd5NeY`{M_)^ouNa|TX7A2wVVk|H8Vc~d@6L`Q6Sg$je^wqk=m;>~71ek= z$ljfG@4xP~eL6w(ePlD`>a3eDbbEtKT%Se$By;8W*ZN9P)f|{hP$5N+Q(Q8j+%7lz z9p9r<_Vy<2#?ProoFb`k%~nm1?cbP1jNZ|?h2r(R7heolGQEq~&n%f~{AcWjEfR z`kyn2^7fO+2HlxWy?sT|p>Q8HLxs6n!9xk$Lm2%HwnfBkW z^8Cw~gt^o`Or5*1pH&rQ;GuzP{i73A4QA1x|d&ZKJn$eAnWdY%%h(QzlP= zRg&v<<3Kenh<>H2Mn!yDg@v5dH_LuWQF9*GS+r|TY#68|?f%9cC5=8gIAiHjdj7`>uCCwI9{kD8^az0%2w+n^@9yTtG|S##?f;QxS2Q_2pKY4h zELUb>?iZkH&Kr2Ihi~?0kb^ScVcS3ea32M?nj7q!JRxh*ASQ+B1JSDPNzbv4Dtg>@ z=^PvLhniKvcHTl?!7NcoM&5L*jvRGc3rsn(yA015q9l8`w72weff)%V#1 z!5naKi_(#tt|8y*AMKr-@OHrY=y8$>KZ3J*s&Al)U6QTjopEf<&zQqj@)KY!-Kdc8 z_cX|frJXpwaDHhx3JL!Jjvw9z)$qU6e%*UdMm~BHwDHSaD08q#Y#6XM=tqiT>SkfZzJj5hy=J7zQd*LIKj$Kr$A3U~YmZT=Nv{D;p>%hiWNHi21(s@`iX zSwkJMazH24*!&f|_lzzoM8C$t-oGS^?wID_T#YM6PXUfM_gcgS^jloRJB;zjw_HPG-Oe$8#e7WusFZ@}cZ$c^ZYlf_ z{!vWv3U!c2uS{~mU_-S(`aQrP;ud|Wc8AvcUEaNQ{7Gz09cUjm% zo2YEDtw#EMwYz-8**uJMo36C#G!CAEh+A%~VqCq{UbX&w6Q7PT%A-B?f1JTeN>^05 z&%vTE`V%pdu+vC=dtsgNRQXl+{{#B_Qy(d+Pa&F`AFu~`Fr!|Ha}$3g*AuM!5lhsi zz153~wvoNGch(H9qZaK5yy_2B3is^-La5D=6(x2Wi{WP>1ei+S0sf2w*QS6!?ZEF# z!AsF;yH~(2cce5oSa%wMOZ%!l-O!I-g3M;k2-r&1b;c4eoAAV6b;zwBgR%bLzH&lq z>kKZ`($FvQ9jR`tO>wERG|JW;cPUGol&V&Bwi2DGN8z|WS=uBXF?$^THT87h{7qnG zPdNXRdOC2p*I3#l$q0vAjIoD)^W`2)Cq4L>vm5q#+cutJI=U3& z-c0!NcElh33rKhxeij`aHdJB@WM34ek97t)GTgne$qBeOkrq+0%{7tJINLV&AaDo^M)RQ`5pO>Ay>h5p^K^mXc|w z`fYjdd9GX~DPdAZDKHvq`^H%QuKbL~HV#iK66&#&2~jMz@^>twbouea>0DP;7g4T(DyVENDSGfV}dyZa+lw z(&qIcWV{gGPbyfE6EC&_ihY{K2Y{7g*2?u)FeI2spHa5u%i$vgj&}R`0q69cy=q4% zAO4Kc$=CM!&bqZhowXCG`WEY-g;uiQ$M}=oB+XtQ?W$qO-+0$1q>gzmqhvI&rkjwp z?)Zk@XlW4b#u?#8FtDm8ZCU-zlKa@Np8+fxT(^U2UrVOgbnZ{(A zN~$p#)9eqAqMqdKqOqH#n|0i|W*v8e{Zo$i!XI&Rlh{!me=_dJjv!6z$E@B3;S;1B zbyEXsdu&rQToq^EndcDlZYn}gB@s{4pDp#~?dRH=<|kTn+x#Te!6@pcA37L+(hMT{ zI79-Q2qt>@JKUI@=g-X7M^jG^hfQ=Gli)koFXW;>?($wn8iygf`kun>)bq@wVs{Lq zj}a~Wt6E=){FJbx;e|c8)T4BTA_|~aLXaH|THc-M{RzYt&qMd{79a20p6P7@?`95G zKX=>oEw@h7q<$^IUEv5xB-NG{r6!*<(dVt*dwx>`NG|Gw2Mq}Cr*y-;i8P6tjDn(> zgp8!`M;_)ac$qy*!aOJEodPd)o%Pi}AZB(VUiFYT-VVg0qF5v3DGQ~{1xqlZS%gS; zh4VZMuAx5cjT=kPPS zPdr~ZlKl>JEpnVVJudi;g=$~D@SX&Ja&7(9=Fud(@dxrZZ=kon?7b`iJ1f%pqlNPY70M`~jTxs-Q{#S}J)vsedIsn~R;mjAKKUR{6{_Q-7h z_h~J81%-sg*uhpHRJPPDN>jdCP#&Ez81@jml~<^RZ9bQ2je@H=EylTs%?@`jIECVP zzJR6ore1v=lp_mn8{q!0BSDgEyT>;7fWMyqB9cS zMcVzj#t5JFDr(6DfoY9+5OU*UY`?$xT(+}M$(_P`H@oMA)Un^B1#;JK4~M+bd2 zPzy!FI=MUIPJAhT2${XmCuGb*^mc>ZQR)xMC+5m0`s{p;E@YP?DuYg+ms>k{@`b2FG!0uW8-r8Ka10rGpui7$@j|NbQw0z~fo56j7G7_Ts|m$&umxs$k4161Z=91WcIQvln?%o0eYY5&3BB=$ zV|qL(91}J}jq{7e&FA)aoicce1NV2`xTS5G@$sU17kd%W=|!+Y^^SpOUMgDJyH1@| zwYzAYR!@OpHhz&X(sqOG?d%G^#`M8buDV0cMJVJfLI!;^{djq6PK)nYemg&}cpRj# zKdd_P{P3~1piaT8FS~e}LT;g)Py@GOV&I-9q$}MTpC_3r_kE6BT8qV67KR#1w+f(6 zrLMUU!hg3J|LU2O{Gas-Byjm&Qlfe-9cVp-hJNCz!#xTzE|L+JG-ygj_XzyMvsNsNy(i#}otEMb zS+toezTmvWGou$6qOuoVM}C6ncrr{MVUW!Rc{k0hHz*YIjc$FT;J&@!+C8>#}Bf zu?%-`U5R}I4*P&Cwu^WiRBB7=PpQ7NrL>7V&c4-ACvfWfZXm|wB1PhCuiOEYbmynS zJsO{rklkKr`~?AJQcox;($I?4amX?F*xF%nH-?M*$XT@Ez7@=|tspJ8`LGI7#i~gR zpHfY%KcEA$zrZFI3&Mre2c9Qr`~!xL8?3ks1Z{8*ng-T{pbai0;Gy@W;1QSV@D5f% z7@mzc<-zV>H~yKVu;U47oS8XmZ|$(T9buY1wZk-(iCHM+1`@a)W3X|<_s%3|$ES57 zQua$35#@)+;wv@7?wCAWMCN-@K`f5?#aC?l8NHWLt;E6Dg2CKrEhvoog;&_Lzy+)R zvBL9CP+DQFoy>5Lt5`e@mKF>RPZ;IKUi`)dINZBkyumEqqV1y1%c3pbF53Jo+Hm)F z@rF9^O54R-;PCR5tuBZ4D&-%&ket=x?qay#MdrPoiaAU2EiB()|k#QGj-Vh=jZ;n|j0?HlS(v-HNNqbFcvu|i_z_uYoxoRl72 z{0dMtn(d))J)Og^#LL*TN}sN9Ux(D}QxDISpk)q*pqUB48~}Dm0Oq))eh{hq;oc$> z9%{e)@M{*v;`!YQhKNOa8qjD0iR-FC$N!CVg0JFCKHsWLSvOmOzQK__p zx5JF^05Efh<{e?%VNf9q@xLekBm9pZqjM&1rO1Y6rR@$fZa?F;$w?c{?~IkJ)K4d$ zxlL%v#y#jS7%kSrU(RFC(R-2F(6Pa>V@3biYA!fdX7Z0U4YpF?zCHQE3K$6whV_E| z_7->R4f47i4XD~z;U00`xo1?;bGUm*mMMPT6n}NZ^algXFT{Wj(|Et9maS*pWS^69 zMf0*Ca~d<``^UP)6DB;|`NMI8rAJ0U4enE~;g&6JG>m1GtUD3fzsO~9AM4O<&^Q1s zZBl^HID!Ff%`|8n>y|btKxlUx8mrcAsByAe+N1!XU1Mkurql-0EO5wLvc3$o$#a7H zG*xx{w{eyUM*+e)D7f!ODGpDW#-h+V^0@j|glhLEL7YE1cci}i`>EBONp7W-!@p6T zCcUyO%pJ&ndGfaxg46$80E-}f4C~4RRfUV}kja5+qx#rE!gU@#F^i_deW)meFX;{} z;fU{2H&6WpI9&MdZ|q9g(srRmoTB1SODFcH#Sr^bdB^@#u(3atVC+w&75h`kn4fvu zD9JXe{74UGwhokz_@BxD68_aj zM|Y`Th&v(Pl}!M z+Ri|$D%CS~!M&5M41~;K;LH!S(>c}Bc?rLz{M;3qkgTmW;i^Juyg;?;g662{%MwFOB_)?;cRO-i&gTkg~)oyR3NSx5>8>fS6 zFTwZJuc)mB!~3o{+jnGmuo-Hl{P3C;3;p3 zx*th$ChkU7tn4H+qCC!yQSVAnW1PWC{a!#$&cX18sgXA*@|-yG)7wUVCKGwTX*19h zM^*i@b6)YO|zbf#2F#cmDqHOc<=r?_{c->H|}fv3B^PB%OKBkk5X)R%|zo z2d7J8F=?o+b2sMx@Dn=MnB7s;C6XuEu4rmti0)!rBK6!Y&sca8Lf)v(2=|Q;h}dz^ zj!*N)yx<#zobRH1!_=9QEmbBPlxzv>pL^(&YwfAe(xyJ)|1hXIfFIpTFV@-%=s>hL zzm;z{2C1jS!zWvy`{=W@sZaPC7;pf;wGzNUG!NX$mmBjH#c!<=ZqQooqUhtI$h9>; z1d_c5Qeo=R=L`#kLb9ZbYd^yC3a5&)F*EwLs80lTv14gG4 za+$a0i|%|;&NZm9GFl6);Yj&%4_a@*@iM-k9B8g@rV<3RmAvoU=KiN-t7MfWZC#Fn4# z%UXV_KS1&1!>g#qjgP@`q6@f(x5ulz5^Q;AHFk8h3XxNLc9JA6RH2>Kcmc^$-Hze2 zHUC0>8^`h!uiuU!E*eJt{@l6IBK1|l#GNn|9tTRb;>67UPISEdv-2#^)_`?xbOL_q zg5;wUabeCrdJ*42X~VSkq0zCqxJqr0NtwL*nt$^SUbr5F4S2AKZ#T9KYmWq)$F;#3OE>q|4TKm zbqBf25CM-~LQlFlnlEZ?-_rfq~++p0{UmbZ(B{BL*ORWjNQ}X2X*sK4_epDINdGkFHjomw;@WkXF)O_ zk=uh}mWRQf$=;D9Su^fUT5ezR0B`WcUa!_MV-tHz0c=w88MF5!6ZbwD_^OP1b;iAK z>RvTqgka(!kxIM+&U;??MxfQ%F;etm7>$G4k6K#9%?@)xjG1n|Zj$h}gg+7SdmPR# zF;4O}P2g}ajA**~G4g{BxfUa*2Vzr@m(J_j#CVw`k#IGI|M&sU4*myBYMG3qmalte zmYwtL9T{cZpdAs@=R4z!>&2NW88^)BWZZDbxZ(V}j2ki;H{|D^aiOCK*TH|xYX|=W zraPF)xN1y0<5$HcZqSa1PU(flX1f#oDt#)aO_ zxZ^+OwS)hG3H5ZDjGH&j_%(6H4cZaWw}|bG8zvby%`pFRiq_C&jy+C~EmO{{VAfsOVZn%F<~+IMJT-`H#4p@{=xuYDQMG#6aP z_e{pn2_;nG-nk!M3ELNw$b#NW1!Py_9}KxAwq+l6`zO=Hx#~IM3{4yqCv4xLiGyRW zeJcYR)U7v@Gp-k>`!!wOoNPk3Gqs|^VqZ51g)_efLe*F0Q1%nD^%Tbx*`0Qge&F7>Yy26ugwa-0jSm;eus~6 zY@X}Rq0XXySq!G27H39fLQOw&LoXkmLM7p+V&m0^xe1a-P~G4Z|v=~ zk8>wFY%f<@;sHg#X_ATQ%RqX3bC30jTL;ee`geA;PI6hI3A{iv`f@nRorTItE{8ym z$v~xFApI5n`Oz2n%tIiw#~F6t;cW7N zQm|#Bn#=c0?mpR*X%1cxKCBgA(P@|FianD%bRckl#$+X)X3g??L?7)wZ|-vEmaMe? zc!kml!l#_H?A0GTp6;3KOOtc2_c$481HOCE>k~b-KZbX2`L;CLOAgmQeu_|R_3&JD z7mYf)tltiCU10Oj_vbRsC+aWqx!f_x+Xc!INF~{id>?pq|!h`&>wHiv&j`1rW)? z{ibAqPao$=D2yusC&^6coLu(ea6ig{t}S+Z|IE)Qss5^-ZQ=W>?aK>8Fx}xrWE5)6 zIJ3G~eVEHpe-~PEF6GnaplBjzfBu7Fe-2V}-Z#s;b*_G~_19mp+$FcJi{qc7R#=`o zDo6LW?5F&1dWS3T%X94$!!a~`{+Gs9v-hW7g7no(YOaydyoSncf!UkW)hN8yJ1(?osyiJzV%u6=Qqz+RQ{u4^49SpL#db$n)q z>lKAq8<#sp;=YQ4BCS4e2d6X9r&s&7L_s)1bhTe{oaF{`_oc^%V+Z;7?VB9dj_v8+ zmmV;Vh5miZ(~t%JeY>Wfnf`tIB_7+2VJG!WCBpXvCA_^aDt8K}fAe``NBcs@Qt+mh zV2*ZpR~&v^5^j#Ebldo)82|VL-y9>lHr=ZrRP*ALXW~UYf&~XNw_)M;m5_{7bW55*ft+8it*|Ro;kL~J0-?z zBzWf77VoqekH=AJ zc7$scq3wNh9RI2W-5hOx-%2?AzCA{}IzclB$-F56n4?YiopFR~l5lgh!{4Lub~5sk z%uR8uYm->!Ael`Gz#Q8X%T&125n#OZ&efcxx@^hUZd!PmE*uPSz{uM(rToj5un3-U zYRN7dI8E~LC+r4q>+Ph;Z1o*V`YgYxuRAwrDkMHPfVRfa1$@sVjbLfdx+j>KRCg%c zsxRjx;qA&)nQP`oBCy{Ta{{B{+wV|_9zzM7WBld~(8fg6cR5vzUZ&C0_BV9)$;ljZ zSqn$0=q$ppYZZMP#C2#IV?!vO_r3&NZX(6F(aS+>oXrpVgNhuz0(W!{Kis=OkK>i{ zrc}7;FYTXK0VM2PKDD259>=rZ|B;@@rDsh$dAlCv&f_?BHQMJ9p|aL*yqa%I5I2Wc zh10a2lc0A3)VZv_(K5RX+qeq}ZG4vkC_&+&dX>1`{>}>W^cwQi_!Oup5Vmdxo8!&* z>XU2Tq)*d4Tl4pVVkdOb=P)3pwOZi4o%k1+Ol}0VV=W*+)IxoycXTmFkQ2E2>eXAY zp>O(p-DZX=+{&bt(2a!F9&!hi7pDU8n?~e(GM$|yvz`y?>!D;9vqnqxd*prx6Ena0 z9#Re58LGRJy~rC)-*4~sPJOwXlO|Ho+Ew}l5qSuzwV?h0q>_z6-*Rr;vbhoaJ|^Q? zW*^mWN?68XN5)fV9OE^x-(eldZ%VE)m&y8Qjkn_&oxCMH)&q=mHb0;!t@rWkH{Z{1 zbb-jG#d%3kogbcMBG^Lcir)I-ThXeD4_(I^pI24*AR%cC4y77j74+6D^!N#`C2{AI z3ZyNWu&G+pu4T6i_X59p2jALkE@sK$Hw6x_(!`vuC$5kmQb?|KC!fkSqvSw<=y%X# zL22%%Rdbs{*!{7Tt-Ubo|6xGkU$i@u$N)oP9|0Id5xGvG$NSBX0?n0gyja)8Is<77 zlvOUeP%#p=a;=N-(p>6-x;|zv%Kt)@KYh%hEVoe6xK&?x6IMQI@XOOIezD>=6l1t`-}jsP23Cj6#A%g9s4#-)VsYR%6{~|_lI7%k zjoyVJwer4vEaRwwe>~HPqdCCu+9>#rbpg~)rA*CtUjdQ z(fkaNoiDlstP$r9du1NOZ+@0g8WZiDB>#io!Ba4zy_K}~`8d+b*H5H!C0pVSJ+y|Q zW+HrdYi{X0`Z^tAoA#?~H9QukTDn2BL#_;#YG=j-5KG6C0uJmq|I@fI{37i2PG(=j z;l&(>$1Xq{F=0B)YuhSc|32)tTeWi6X4ibbCu=U!DUNk(;i|O~)IjuFWaQitdcKJ* zyw7+$J?!2tNJ@Z#=JQ0L4u3(3l$88fV^YoRivZG+S{z)gEu{5lWmcJE)2xX#{z<2@ z%gn{dm@YfLU7;;)^Wkju!z7)o2Ca){T+5p-b)7npi+(AU!(H6BUb!u^A=mtpSakiF zcIB`$wX@&+GQhkBkdjOQtOxGmTA%7HLm5uAGbrOf@S9&DLX|;L-wdj6j6cIq z?>4&6ovB~B~U>VuwB%O4}pwk)THy;qea~NFdY}2stB2t{UVr~Xxl)|H^ zB%LGdE>pAACX&t44@qW%IhC{iA<1pc{~jUQJYnfZg+yynrE)25lg)UqXpVQx%cdXu zRG0Mt@P)L2K>gOwpxFE|Ke3?d=daObpMf6)Yy$V2595rXKN0kmNFw7e@17+U7k?(4 znNWr#OWOPzI(uv-w9{EPa0yTR#-Wl!{*;zJv<-#lPi|%8^iUgBNfq+E zp7Y;HQAS5oi1cKCQv>-q!D)NqF8VckbcgTe_`6Bp@jyCDLHHH}VjEPEj`#gwEC|qH zGJnf}EJGf56q`@P-(Tvh>oev6;mHJG4gkMO0OlC?!+*h9v=m(|OzfB^h(_ci$m=I) zG!Bv{h^q3P>W5wU%-&ZR#4dEA{P3eN&9Z4LG|>oL269U*;;zYUY~JgKw+byR5R;cB z!){S1a8`1yfoC}HVEAT9;1WOlC)C`dDQ+ioX{~^|st&*0T15ScyWf*w4vuz(5^i;% z9lH!ng0Al3U_o>vJ`8Xv66=>=F+5i}Z^TL;F82QV;lu7vNSE~gf@O9rIz3tX_`+ZwZ$B#*6+N7xpA~B*4m?E86E8MYX^qiYd6SA~6KyA^D z;plRH$eo~hwGvC26!H+?HU*QF^jCSXn=>_&&x`3KqDRTw;0oGD3Mxmu;a!RjBGjEy z&Sh%t4At>^3J;F8G<)Y(=#?+*vw8*b8{J6 zLMYxCMC6)h*YxmPk7KNooY4d{^7XSb01y+A4nwOE@}2i4tN3p{)n)+R?}qx(`;dCoMOw7DlzU&i_{D~nKl{a)UF z4Y!ZvbF=R3%My3DcjcSid`ok0*1Gl=7j_WsCaIa0LQnkyimUN??++j=gVUqcW1rz(-IQivGzU zQQ3*1@G@dE)oJXk)cJ<-cVYZp5`XuyZ@lRSf11Z%!}s-SCsl6h|Cu!W=3n>?!hOkX zg~{cA8|<(Ay1@)}e#kViYh9wd7d$@@T@D8$lZRlMXz;_?#heIstTqHFgiJP>;A|br zrdY5PO$o#4{tS9!hkA!-K`K7ahtKs^zr|1xT|tVh4%*fZv$O^rtu^q|dMAoU7zRg;OZqTc(t0hMm!}YA>M8Q-Zb9+25*>~G7jG$4zW6hhqm^2KH)OeCFfKt z3J)^BFrw=y%+Bom1F)N;Paa7|9_z@6k!!DcvKdLqxs5GSyS7)3L^}f(Kc+D(mMc z`?Mab{S~}dCTpo$15-Oh2tP)$Rn#fu*>D00m(MGo7jpljR9#a)@*`T4I6R2OPCZqH z6&xZ&+|ek7Txn*tlOYhkQI*u+P*4I|)y4~;p#Dn;wl`u@!nVC?zA3bmoz^0hFqwy5 zgA>m*pW(Um&e&YOi?qL zjWhLnGUYeB!H*te!V~UfJa%$cGts~fZ+%A z?;K0vN3shQo+e04Vi7_2r$Ocn*Hbhnhi8Bl&)W`kB%ygG!0LExFBSFIQ}LG_ExWtT zU@DN~D`I>o#gi%n)Bl`J=*D@|=*y9I3ipjf2L*JSb|KozPmxqi&2I`4eHua?aRtQ&n8-R7WC$x?J)qD$Po3xT znFZ$>Jf$T7TP;dBL#?$y{z1zPb}n7EcmZY`#E3O+zIV1CehnVdHAF}0&BO<` z8tD<`a{dgX`|pWSgtFGYO0F{0cpq|KpLpqGoP8Y3U^0)DV28J^SmZZVCha0x(Su-2 z>ZQ>+<;FRbGV>-Yo0bX)_s)D;$|3H>a!W9{m&mOWvJvQfVp2^aRg z`nqVG45L__Ge^jJwUntojOZQJhhg2S4|xeZE;V|WT3&?4TtyWJwJTR~ENZhth*gY1 zRT|&?6C(iaC0?<$HGd%-HrR+RE#0V)h<#UzzlyWG=97?fv5blXuen*!G8g$NmP=i* z-;~d)j^$(tC>zI)-%g;6SD*@JaU9L@Wz-sRn<3N+!g9qjzkF7=b1kQy3etz>-zYbHh07^}nn^T9 z@y)@?yp|5Nx%Hhs&f~LqS>KN8dj~i?jmwqpQ*@_0zmoKiNd}Hl}6j z>Zb~QO8qoJltv5X#zk@cWa}l@5@Xauc4KlaF>LklwXPnnS3P94(XNN5n`H`aO3M0z zxm^#ZmBv+oP*kWNPks_@=3on_Fjp(!co$H%V~QYr6EHoO7KGPqFWR-!MB9``yKZ~Y zHcu1n%@%E}aiucEnyH;3wqtE)k*zb^%nVv=YUJ2|7-;Q*!|h$V_0te?cKc`wSz4RL zK3aG!6j^i#;>HW#n-AWX*^g>43D&~y96Z`v$Hd3PbUfV+HFCvnF5M8)gula+cSH( zcnkF)h^|)+8Ef38bPwrFH@sW2J}9tnEguZO)HF%Q8g~l$@J?h`bH*AURoIc!g&kJk zV8Z$vRNdz3VfD8gq`R0v*bt000bT$J4#tnkQiACh;*SN{#y!^I9w*#-O5r32eX%}W zt&vX8U@vRb48t77xE{pHoN&P-c z`>h*Jhk(rmSG^mU-#in4^QHRv2?h;1c6`#H4G$7zkw&IQ@SA54H~KbgObv>@3XsS2 ziqY3_^cAD8%g>7~vI0=7J(WF_i{qXKt#~HR;#e9=SoM7MW;gFlcgkCDQ$DR9m43rz z){hDnae7mdxql9MN}D7Szu5uj9H_Ku2Xt^6Z#NRqm|<=Ixo9w@d@j6{rjBFY0ohHb z!@Ja#Ea~0VC=$^Vy^yFn~qmBG}#gXo=jTM7`JuTj>Hj?(tcmh9!0PhqU9k^+j{ zbWUY!bAD4`saljP_O5Z|umr?eLuAR0HNL9~#4F0}3dFqlaVl4X=gMF*2p`LOwiA-n zufzNeuYy+i9^yIzr*f!;C3IN?{cnA`WZIagaQ$YKa<^HR?uB>(AP^M-;)Q&8og@Yi zIPk=4fVv>96A-I+g~>pXc)g{mSbF&!C3Uh^k>eqAG(~+KN^J{}(k}S`1rJV)O4V7p z02@N%oO50FUTm`P-1XMEaxi5g?!$^Jc?aHEr1b{Unm8XqLG&)lhWf4aWb9?%Lh*xZ zh}PHLycke^#WKU|ZeC>A?*_X%K+i2Mx*L16lS`j=`$C$qOYcb1!^9HvRpm_@0lVoD zCL>!k3u8glLAKaf(I%T(JpN9Gtm&|!sqSHziL;TPlR1o|(m3`eVvkWSG>^i}Lrl3R zS8zh+Hl<%o)`bOc#VWV=T6Y=F4ls7}&Fpf+hvcexkN#Xf ztC&HwdSJPB@@?!%!i;p1b@|PbaENgQ^19uFhx;6|0- z;B_Liv}|+0!HE;hw8a{tH|Ai8x$!6jZV|>t)wjyc)IyabwbByKwHoqeYC=neZYC<$ zDJ0jrM1FYISC`{lUbWYV-WX*nw7`B>ywqVWt@Vzu#XWa_a#9>EY(BSf5%sea7>Vfv zdnlCiKtgjxpRF_SpX>bkY@Kli%AhBOw=*LRXRx4eJVw4YzE-S>AK%^!z8Zc4bsuUN z{rTvp$f&%$h{oxS>WwDequ*8K#(VimaP)e>^MJ4byo;gLIx-kT(|4VMD6{8e}No5E=Nm`IJ`_rP}a zDsrvP9?L9xXab8R`Nqv+*l%tGzq;JtaG8j_5190Q-p_Xm=mUV7V#-BqpuJOCufFCo z__$^Y9}Ay@k0i~tnFPd}(o7G4!(G|EPkmD`Q&tAb4Q#;VD~=iX5I>7q1L`j$mwi6i z_DdexGEC(Zp%hZu?NAPlogf`T_*aUmCCO&!n2JCgbp|4iNUk(^id9I5Yh=T}5SOwr zdamNKlCuOY)(6RHOY&wRC-Gz3U)4j4Q7aAZq#D4*3I8l=m{=@tpQlW+yF9<7&hf31 zR58%1%3?w&Z}nk<5OJxHG>QR1 zUaPv&mIe>poBS$4Y4m^$Ja&pXp30(#wDn>2cSf`aVn+qMsl?EycJX7Sw9axJ|0ri= z)^&8V$8>o|k(8bAjnS=hzrj>Tt@2qF1%0Kyo9JnLTg5#iD4~ChL-pNsFnvQiv^{yf zTxFVTUBL%RO?jh3)yPYO$qF~#h>1Ve-=B(X^yfDfQ3|4p7(_=YW=v%z?i!tnkz9o* zC^!BKR-#*xv(?T_&|qhf3PIkHo0P0%$yj-?}qH< zt%%0nmyRzBfvN3=$@iean&B3FO;CE05Xo&<#jw;C;vPm8ml+TOaifHuZf(9!D*LPm1 z3dkSh&qtw_YrYi{)gkv~-i>d>cfQugK&W(8L*#T3c3T(lrpLztT_!gxvAe`g7Iiv2 zwjqoRs^t1sXS*-@-1wrKlw4&^U^&j&FEiqC=MV1&B`un<#yxm9enPPJX!%KblYNWB z$ybs6MZYPq)yl!K-EBu%0Dr?4k_+FZ4DZNTAYb!s{Iou$(7~3FY|Bj!+pddBa1QT=p>?=$jUKo21#MDSUCg2w0gwEjb3HV4@mer>H4;{^_n$D!sP zg^2T=_%pl^{7u%kik|KY=o|fn^yxlCSEKBIDvbWQjGj}@JBB#dZ5szg#BJj2GI*UT z-qLcL*5{$6*@Bjkw&(GMnLB)J_vg zYa#yuI$@gq7Ja%}A5@oox!;smwa>s!!)Yok`i+K#vBrzlf8QeHWYK^=?bC#5e}M5u zqgm#FO(=>PgbWZRv@tsUm!<ZeV0;W*M{%+qSJ;G0*SJtPR>K|D;V)=gdo6_q{U_@0-)M z;m(=VcBY&&S$(l{rc-H`ItTqYNG(-=+;_{Z62kpaxy3N<56i7;VH4aliK$7#rvaF5 zfH?qsCIOfOz-JSHIg<9zxl-$^>I%pG4f=*?qHFW8?b&2qPZIpKEH0|^w$Z4Fn~tW3 za(kW$ZQBdee#~1;7GHsZX?4H8N&pvm_#Ft(V6i^Arcozbm2<%fZh0d-U7z7eI(QQQ*CEIyAN&0#zotN$U3G9L z$pXK{Z=yK2rg3r1?Dv3*+3)f#H1)eJvseR}!YsTb{0=Q^>vbJ=Sf{Sq>3&nfFfsWi z38yrY2%B)FABQV(7e3Z_ElF2XQxllme)Ce)M%!4Di1Ze_yVlgd>%ofaW)UD&+723Rg;xjW@}W5O05*4}r!o zb)`6dSnf0|h&CpXznG0IYG0oU_+A!}&f&wiLDuZ3Xbz;muG%c_WV{nFv+H;884Y<* zo9{q4&h-ndm}(+k>+{@qwex9z9B}t zZ0h_Lgp)geFPCG;wo%wtp(+1dqEX8=2Y^QsfH?q6CIE8) z_(cLR2Y^QtfH~Ye_zKc~tJ+1-dW>Ky#p8T-2;7d~OdprFv|3LnZcsfWu+dSwDc@8J za^B&y!^>C)_V7O5U_L;#3D2C|>|FRQa9&ojxA6+&Pof-WWPIB(=E4p%ZO7k%;n0F@ z?sO%5>Ca(F*;Uwq{l+))x&8wPmfUw==Z|(`neIU59An%No&$xCYF3nmMBi5J%|ceN zchydeSyEC?x<~moWTiX4-1Rm)0{Y61z|AW2G8Op)I5z&01Tz&mjESGz(Du}*F7pFG5B#Y_*uZq9}^`rUtVUwY)ek{)VN&MIYBlVZc z`v)#FIPY0_-C6!yC6KQmCQFRTgT%1JV*=b*51rQUCA_tEeGL_V6=3uoF-;|q;$qGj zF8GOdPfm3pyXj_NvtE&waZ;+3^&g-!<;uR!oG+tZzMXnW8s8<2>cu#|hr_Jjmqw4v zN4LQe%5KjPzhH)yT{>%M+0|URck&Rw`NwwH_eDhDn%{i34gNs_F2}obw`a%6!3rl; zjBB$r4wt>t8g5+EI!I@3`g07p+(wqRod>$KrIZw~?qZp~=U^%t zUGx7FsEzwzjcR+ps_mZvq!=u4Xafv9F226f1Ff(Z==wkL{0?N-_lV9}mMm4$( z^-+w<|A3Ij{iF~U)QopxvG;(|ljDbSB*a-*eS}(Q3#(Ws;COIePFq9;8@daeDG}~+ zi_w2&85Oa!)o9nJ`U*2RKFcn}0{q+^@$FeHw-+T8-ctGJ?mhY8e~it?HO7|JqOq?0 z;<28JH_5Q{1WEneo8(mBmvUJd*<5Ky&)?ZASh;wko?mlry$!x+;CVM_OlXQe^#+kK z%Q>_JvLZ+~c9MVg>O9mFy?62dCH@Df{fs5vlUfFr9(jfjnu(STUPgt6ol-tj^e$`_ z@Nv847c`p4r)vtU^vkWHpiTWc^)F2On~xW71)HGhwtV3X8dct;VtJiOLs-#|D3VsU zuv|1WtQA?EX{`|MPC7jK+bRj6so&Z@(`%UImVQIM`#K!LrENN7PjN0a;vV5v+jhoAi-u>Zev^4wdxUV zhqy37RKcdKsNibn_$;9(;|(c)+~SYLK?uFoZlalT$GS}g8Gsm z$Edr5TKlG}p{(|d9I3cUU=_rPA-=H2WZlHDVhRKQa14Z52D<$IE|;gpF$0sY@P{2{ zHudkgR*|G`m6S@doFqnP4D@w#KeoF*|86?{dtla49PUm?&W>fo+X6JN$JD$uEwp#Z zv^Ao?Ds4&s*3j@@kjhp0%JWo@(cr@+W`MSZ}tUC|EsZEKwLbKbqA|1L{kc=UC%`1Irt zCEFShJ?Wia$G>e28L5J6`2j7zg~By0QNOk=ReKF}Qa&el3>%eNGleqPQdHY@F&YkO zDTNaqsc~%2B%VN-G24o-O=eyv8C%thenzt9gDEr(@Yl z1}*)VJfG>5Cra%d@*KeL^vAf@6Q45(M}7NPK0kQM;GQMx!~X&u*N59UJBMbP^xJ{m z_qfq`Ra~mpTt4*MDhJiS8~E2=5`FVO`A`#u7x%(llto|nJ`X9N+cofogsRO73p33G zGzDt6ao1}v5?WKgt^n6L4|f#+#ogb_C>)1}qI=wv&r!TVqs}WG7bGd6NiGzPq_s*K z&0y9WTeNvew7t`411*<;v8cXf)eEGz97<#~aDiPz{gY&Wh)K`tmH?s4c3jTKd7w^fuR$^l;CY zTSCLVKyFFG>eT-blS$7%_-tGZFrD;_2lY#@qR-k%GoQ8b45Yrdy0QO{u|I+Hv3mc< z@#|h*ug2JBFo-N;8T&HXmm+J{u@3j_mO@#|E=$88DI!a@3K3d}#8}D}p(r6_r|hJn zg!Fq}*E#n+_iNtY&;RkC$AjyBKF@WobIx_v``qWgUwxUXI)w17G`+Mx4xS@^BI?$l zk05dI7yl2z_Ct6@Ue*BcvLhO+be#DP@n6V^f-e&93*mXF-zgoK;r zc~f~U88eRsOBs9t0C_uwUy*)*hF`dxcoST;O&XALIWs`4N^}Rjv3cuRU-^nTw{VM^UfASNOTT74Yn! zOK|hp%4`L5lqB&Y4#)!!!rh>nP6vI)iXC_ssv?RHlp>}*#;Q-sv?sYKtaEdwrCCC0 zYCV~BG3~KG(JRE3N=ibeC>JAylUMyEz&_93UuwZo{Lk$#&%0g|*E}l7#ZzY{c~%pD zN;2G&q-4^Q2D=4Tx#K`7joZz*EWU0gFl$`KSu|azs-JNi%+}8&Vd-Z!O2Pe%>wYZ% zCw(Y4SoDVoi1ezQn0vQ{8w6gGA9WY{Kk)_Mu0IJa+^*N~E2GAF9!!ShKYUsan_!5b zPuOBF3_zV|z(G6#TtcPfeb?m#lyqo24t*5-8H{Xms^7;t3Fu`I>F~W3KZE7ICTZ3| zro1%k0$^tXuMqK7uwZp$iWR){>H#1T{*g0ZBK#vElNtpCSrbf>|q*XRb1fC=?} zT#z5`oI!|+C-2p%{Z4hyS%?Z&QTLo~9rCvYaqdt4upNe|qt8kF^YXtC7jT*7-7^Kt z4nD-=s!DqFRkeg1PJQU?mhs#pdvvU#2;D8A?h)_c~?W7Gs*R_>5 zuWM`cv&evKBgzH#N%eajEt%&72Nls8xcz_-Rh z<0Cnv+p)=la>}_4F3~MH1UuRiFx9kW!)>ezLtdkJXGT;CDV23NW5P#JwaVzhxQ1Q< zOsPuG9zBGE#U8eN_($0|nK+e92NqFdJFzG*wj)GEPpN=XDlk@*3MwT_DWRPF9{OU) zB{GJwPURB#2s~RFEip#3RXO}D=bFRMjKIqdtcIiZN=-5$Y769ya`+iM%;roC!iI|+ ztw@tz7DDv^r4D9?pD8=I!n&-tk(62Wt~8&R<>T66@~dfXI~p~L%5s~;83R7r{3dJg zp>s~4Y!yELF5|Y;<GZ5 zdWwPFW#SK}s^nFNCHc$|9}L9n#C&FwAs-K{I2VuCufv`><_7*(N1E`Rm9t!6ekeKi zCa0a?YFT4h4W$wq?bDRsr&RBvFju)UHfbS4-fPK5u{Vd@V!QZ64FqR~-JXTAG|)qS zgNk~N+DRE=|416*A0F>2pv*a>k4PSH=1Rh)<>NCzFi@E{NDJW=ItKiiP|@JiS)wW3 zKo=4XvPtLGP4K;BSjF$k;@|L^RjXI6QN2cNJ!S&(O^)?1SX6o(QOOrAx`*?Pr8^HD z+;3o?A*@mOpiL9kVXo@hnHHr72-QucTXt>L4Du7;m+-^CrJM90)RUF*XOdxbdw)Zv z96UMPH)`<9Go1QU_z!)Kl7d8C^Ak#zNH^xZlrSHXX8e- z5(1V2{|wA)O9=Ln$nB7Qn8&|DxF-5(vkE~Ip)NCso(#h$XKCbY_p0SQ_o~#JcsCqd z%=sx-4z|fTNSI3$^A%sUL1=!7n>o{sF%MQQrLn!M(}{MXPX(ze?A6CDbdYu+HFebp zR@7Az;;O4YUg$*cs-UMg9H}Y2Yp|zsuyLxJ?uBVCm!}5$h2*dBIhX4RA0LOmgYb+#9&HQC60|<6ixTxQc66$W0?*yvqepLKS)?!o7+_ zH&k2&F9)OZxv34upgQy|^`fmPCI4Oa#VFMRqsxb! z?!W!r`Y8F9TaLBsRopz(VHQzTChL9YmE-SJH?@2ow=lubHQf$3M9P1GdalQBu5-En z@IxIcG#qV%ukuiaE?bb+qgGXDv%>Dx2NWY;)aNIo98ofgKV9pA+t>y7* zup)e*>U_NCjWXy>iYtKrtgcFb>E^y6YFg#KKdh*$-e{AmY>l?MR~>$Eum19`#=;v) zZ`t9enb_+8YVBuuT<3m^;r6IJbY9m{LAr%c zXpKOR#P3w;Jm;Z>=w+PKB6J%&2bVA!6`@4b2VWJWB@^+TD#XY`qrJKu;MGx;pWQs; zWdU8@hBMr@cJHvu{X5gG>CT4~mya&YA-aJ2$VU&nt8{#uS#dW}KTjX!&<{{*#hEP? zSC9%^RkjU;g}yXbg%+oa9#(+Cn?Vv;tLk9wAOb2< z#hD+V-uN#MJ?pi#XW&WI7o6Fy*D8*1xlR+@tIy8591n z`rc1)y{-9_^i^wEVXhPn(8SpU@TGXxdFyvbycXl+ovNBxv4#egHOQABr7vEDwfe~kBP^*wk}dG|SQOiV>v<~r&{tq!XC4bqqJuJZF{+?uNz41D5p z@!m-NS$>xr2_L8!&%WStExp=$8Jx0G&I^6V8_gmyo~pRtdgIkiF9$M!d z5mS}2q^`jr74X{H%X{6_@OcG2j;Empc~lOk)S~JNU+*5^rhB8Z%hgVCuiEMuLHg9o zK^?E1j_~5{yyT8ZBT>Jq9CgpQmfuDG)I9x-SMn>X-O#r4-K)i)xjpX|9zyEb3Nx&_ znwaKZ?Zh%raktUS)YaSFl$BC+7k%|_l%*6cd(ykYXi*gPTZ)q57rx3z?=&=Il+Q=c zdskDvt1qC#b3i`Yg)1I?g46*$p39bpx_;`G_Y^|a3Tm3JnSzuDZAi@l78bIqSsU$&|KiMOeHEl?UagkF7^dvKkD5__j@jjw{Ky`Xk_YK5 zdI^WdP)cv2ckl4kF8GD7(6YV0aIUb@D?(S11MXX;s26UH`kv&g;TT!jlX>Wo?(uo3 z8TyqP1!ih4oT{URaZAiYN4#3NjZac?+#s#=T23miR1f&Yu3EF2-b$h8FRtEh)US%MOP44}CG_YWPWj;%9`%A$2V)7hmm<^-eO1lG zH`Cmic#Ah)6@TQ8L;ZEHEkc#YxTDXEEp9nxd42zsE(h0Lex#uO)O}V2)yB-pV^cd~ zW;||@8$hQyT9JeMBfQ@VhQEmCGC65647}D!F??56n3jOK{f~;pOmSf@V$S1O%#;vj z1Lh!?c|$B0K-rb$0PdO=LwDMhES*&<7G_&F)xEQh*@4b^DaE(&52uwGXiHbb&->EQPI2#1&uB|mCDtD`4PnX~9l@}FHsLW3>qHo7 zl-FWEPtiKn!9-eI?{~1KWF3c|r}DUqkDxEm7!}ips!FWU+D>)jMXD{#ac!qE7+yDF zG=AvD8bD2;Lo~s0b2yB839|_!k;-!hGe~Q!m!H?bAYq!8rgVrl(H|D~uZoYdn0vx} zqSIm>yte~8yRc$YdEP|##quNEwJK&a{VRFitSvjVlk#BJh@e(F^(Tz|RK#Zg?A0Z$ zY#gS#qBG*IO5LHO^t9-hTIV6Y(Ae4@4?8brD4i#alN2wpe)0TsntC7>(dO@zPCerW zO%~?7$J}NHcK8v#%JUt~%-3m=@i$GA)bo2e{D+nav)xPUKCP1c9Mn1v-KS4Pry5rJ zY&kO!W*nEazQZ`C(h4_DORUYBschsiE(`M$e&&~To-pzmc>`S168|VWm5uyHz5ti2 zC&mrdsRyR0Fm1-WOc7xssEf|wLn;A=>ucY9q79`CYGzb3ng!CqyowQ$8HcJHZ366# zcW)|YhEdZ<6w5>5G1jSPG&aVIPTgCsPBYEy@?t$}%#>JjyjXF@aw$c3)EC=%!srBs z(`pQlF_UC;Ha-?+^#G;gP*-D}FlRi=-Hc3Oa(StDH@+6;WvsK=&UjclEKD?3z=}yW zjtcX$XD8J-E=(ma^`6EhVeWc5y^L$Zl=9N*ZQK^7ix;bpabK7hJf^SlpOiG+D`{UN z7-T;u!_T*H59ClkBNw)qBIt)nikWQ;FmOTvOf*I$)|qV#G;lltjOj6h3>-cHGYTsq zWoNKaF_;c!RkER(A;y!UleE&+8Di8Drn_fni1AdA+fNE+@MrUJoenjg35LN=b$Fhc z6EsRQ5m@OdW}MMPbc%aA>0ojoRtoy5(wSg1gXIY7Ue*xCp~*&@Ah)`bSUa(fLsN}z zDlJkvCuq8nDy4|WYE0?OHHHVdZ7jts!^|+6Ym5+`VZXUL^Nd%-@;8{5Rjhf&tHC80 zwcf99(C{Q&&|>2)VJ`ZZnZgumkfk$Am~}p#Ig-|U%dr~_I}Yrul>9v1T*Y!|iDs%+ za+wuIrs$kLpkmdgPmJB-jYZmWeK323Ij9*2%)ub{?li0!IjttN+AtntA3oGNEoiM# zN|@?8&+Wlf#CC23)x{`L0;|fJ=33)PVP4!x!Z@_fXnv_bsp#-0KRH%2 z^Gjx+a|YuxGxdx;Mt9MfJ=3+bUo$=8+_VlDeIDaH=ht=|I&Msr9Dawfj_qUy&Ks*A zRa)nbuOzJiMmA<@n!jphx0lux;~UZG>Xr1Waa@>jxFc4U zZyR@oIfuIyX1bey8WhGkd>egGS-xY0p;twatu1#qbC^#HGv!a5$tZ2mcD#|$B8)wM za-L!`1CeGY(P{CAs}pH zVpTM!2=kE_tFk#mm{>1Xtobe&qIfS>thrcpZhEnvG?xie8lG3>deZz*m^ZvwHO!BM z>FrsrV`d8TrKi)(ydX@Q+pe8f=G8Fn%VjjP*lcV5Da>Xcb4Ow=_bj(H?~2Dx^e`kp z^^A7rebG6IzN~WCMKjaAwBk)W2iI57D@AuRPY$lrYMOD#G4to(`s(|(vXdD|#t|K^ zoz!Y>TFGVwu~W>;PfyJ}<}tm@>Y{VaD|>IVmWt(hb-3vWGu>lGn5n|t^hz<(d`_5S zUMXHN2MY6_r!&?ZAxsC)PP&;cOl==CL6~8lo$==D!Yuc6#+%cG8RL~A!<-{!ul9rT zMm=MqIbU@4dOEK&1OLpc>iXwRbBX9I@zR>1nR1>t=9p_mC&km5XJ!gxd-<7XZV_gc z7i*rmO_-;AI=h6q>DgIeek(O-Uq_xWcc)v6%)`PoxS^Pd)(7SVVcyp|6RlCI-WR5*wv%psWSZgJqQ1Z8#`@TNES%fVW>06enO~TbKBgcTqTP)Q zNvoc*+I(DedV4x+HB-_n#TRC2(IK6~iPl$U9bp=IdEQ|*6y~bV&qQmd`HV2*JC~xmFsJ>lQ5?}X1Cd0m~=1oZ_G4d61>#+n|*~@tSwKpzB304v(1Zj&>R!a{c9&y zDeTql=J#g0Fmp7MZv9}sF0p!ev3@XTg!9Vbtw*@y-auG6{AkV#=aIh#%Eb&;@8%+5 zrogJpyeqK=uXke|H5Z5T*z)2%H`Y()5@Fu@#$}G1ABvrUxF1w@&YC+!=R9^eU1q0P zu8mz0W=_yK^RUFq=cRt$JSI$-m%|I@abfo2j!fCPV4f7qjXa%;=2_AC6|B>W9Ah*t-VtGZRQu9cAkI!HXj!zqmOInAG5f`s_v!!uUSc$iMS6^X+1KlN$Lxe zT*k2Kh)zGxa+uXkESG=iTE+*fMJLI#T)-M4Iz_x#1+3SFxsRs@oYr(IYRwmBi*BoL zgIOTVGR@2dgI}hBfAEb#ox`HmB4N_B&H^fKy@xy#J-|K*Tdrpmw-$>|@PZqwjAqh2 zrmVG8bgFtxjI~Ud73bYp<*W~d+2b)4tdE2ljXg@`v5M9w!j$>eWhz_ib8;Vy(|JBY zRjdu-pMjo#s#`mSnN-B}b9HM^&hd!V(9@}5{UAEOdo8?%by(6`i91b|dQI!H#46>* zs$*S~SS`KUsbk%cSnup`W7V;4iB4~?{WP@x5}i5)U7e?`f21YEdF5(iMdsqVi1B(; zGpk@OZqHwNcAmAK$i<~t?=kJIGP!tEKQe zq7$igR@#o$Js0=5Ydw`^hf=Mc604qboK zlKM5wur6cdUW|~)ud;N4_#8+CjXRI;FE(S#8CF9^@Qkr`WMj;G5Az} zV3JijH_vEgFsCr%&=jj;Zf+ZmXDKE#@VZqE44#11GeoDJ@w!!AV(s+oyak3+-}twR z6%m+W)et7X$GmOT6XvoPYqr%$nEjs49P1fjN_)&ZR!d=y=vWbf`Bpp0VZv0r^@RJ+ zcJ!h3oG_>6W--qTlNY6Mb^3^%d)NbErh>K7>M!LQj!}!5NMn^XNOYQ@mYH#Al{G}{ z{QS0SXQMSQH`nR&$f45NXw4U<@Yp29&;`M@inmOy``JS~)%KnA+>axH+>+3u``aSVAR#(Lg zx)FG2{VF=84l8CDJ+f{{Nn>{_#sTx2#CmFv8;k6_!d&v~81{W(zV$Kx3e(qPOdG$T zh1A>mm_T0kb7|z6^OG4c?J&`);nT^Hm%ULBI~c6vP?#Mdu}aQXvD$$tEU{v|9ERDC z3)4fF;zl5cT|6(hgbjyOtYMVXE-OqrT8pxr(=IQu=6b2;wrhhS?BuJ|>lu-DOVKIt zuN$kdFgQ;*PBHb2C+rmD5WjT3pD6t(k1h4Ua4G(Z#yuPuhw9lqMW@hrSvoHXvpF)0 z8Jd^(54W9A%n8IADRx?8b)oDuuwTu)7^6fUJb_|{sDYgU9XtoUq+&T>CW*&Rpf|D3 zcxq-}m$Eng)zxWb|1Qi(w9KLT4O(t=u>X>hwnKZqgXd)6uqsnf9j3bh3lOyoWJd>2$Im6Xx6um+5Th6lOkpfzs(} zM+&pYixqE23G=F_6K@w3rXYH*iq*}2T$onq-HLJSXfQZ)8ijphl)avjXjc&CLyzep zOa%S+x*O|x&7^vz=wnwA%MCosee9~jRGsd|>SI?ECeJ%A)7P#c%zDpbeeIgUO!MsY zv+D|TWTqRdpIuLwUIVg_}v!53x-lx+?nCrgO`wCOv^Ybvf zpD_8nIvs8gP>feQBkY%i`O1qm!hRVH&K9Jr)aw}|?V+O6(5v^cnrZCW8EX%dSQ{|f zsFpd-9x1U-cs(vdGqrroDAD=ItFH|E6=9ZomNV?p!Zh&eE5jZm%r>8$vBJ#rG2?`} z?bTq0{i-lOdM#m+JyDn(UfCzvlZ1KB>w}Z*$-><6>T8nynlR~}&SZP4FmpZsyk<`m zro2~*DfSFuwt00i)t)2F$6gNKu;&Rg%8ND4eovThyp}M{eqR{VOKY0FSePqbxu)4m zgxTnMY?{3k4AB#~^W{GWPewn8$ceG8iUS&dCup|4EW*M7SQ6_x{&Q%qy;7KCSP?1a z9sAP=3q#Pu;x04KUK3%#4u17X>nyO>2~#V#%Pg|L5ax5sW!|?p3bV=6S!`ztQ{1z& z)ZUyetq<(25hk+x{&8g|(pYY9%cis3-X(VC;jWhd99m)Tky5;U%Vk#CdqpSBcA1au z{leg9*yRt;ckJ(k8Km3;JD=JIg{k4?aJBt|Sbjg!jkU)9QJ59qxXfDnh{XETOKZLT zlQ6$~W#3>Q6XrF~KbiIkVekv;IzM09C$p7wn|(UMM17@UX5_!+#t!?O#KJbM{5iD4 zz9`HcFVB1IOWD%eYhTG`dB1&4bY=uxI|uFGgsGdyWqz=43)8HC%lv5nA$X%nkhB9b3LTLB(nucEheJOj(^)$*`Mt4T<$oTW%b7 z+paA-r*y26VZYn;B13z@?{bwT&8qDcN*t1>O>!?yZ%h9jX&}JDX1Zz#PeQG0%q$1M{-!JQY|ZIv6MA&!MJ) z53=br3oOsZv<$4u#tgw( z#Y*V}jS2iFJ-3lJl8g)7ma>oF$q;`9a!d%^7baepotb}ydH$fX}JUvh%8#5zNDjV~5plm+& zbFb>I4`&C;XVaM*s36@E-*A(4i5%~ z=gS3e^uSpo{yRZG1V%}$toi*&;1yv?c=OlM0RNnA1l7VFEC2mt9t(^WoviWsSm4!s zJXgFjN1Bc~h7XxD!`toeE6P$GtM% zTi2ZrEXtPFFM-9PGZN1f`0oT=4lF|sv8Oj#2Nkb>Yypz$cRW zx45I{zZrq+fz`s4z3ehK0_%iH^q8B04Z`H`F`I<>&9ieeuvM5LKAmmC)b}wvg?Y+r z&$j}5B!^k+s9S-3!j$qne>?E4Fhjl8@@L>+HvilS{2)46W8I^`$!t3R1x}030k7{E z!E?gs29A2q9lR#YfLzKO4&@8}k@9sDnwPHARPr{%r0$_4HGp(9e& zVBY*(?@!?Vi~mm0lfeS{Io2CqAFLUS62?snb7ioQFj*r~{ov!mZ1!R`3>FpUkjFd| zEGA4=OK2J_Axze4xp^>Jm?2)Q7Qxc_v4KOC3%NOL87wQz(4yHH)h@XduFj0Y*>#># zgiohSe!mXSo&!rLrl!eunEA$IS_LcN&_D!b%@=KgvBG4HNbQ5QviZ4lu%VQzqc?kY z2{sZY*(+(+V2k`b0(AFg87J5-o8^RH9GtPeI#J1ru~Z*#vt5skq&77Sn$#|mDkZY4 zO_k9fqrz*@b*y2hfj`wu$u_0%wg#4#*PbJ~ft=iWUda#fv}9&GgI1oycOD@Vv5K7r z*&6qB^C6pIS9KZll~nvKaAH)rLDiokS_QsJBce|sr!^*82YKa5wi`>ca6KUqN#Q$j z!V~!@(Ac0Y?MlyS0zudy2qsw^8w4guDg3qq4&P{-k8nPgvHV-men_jc2jl-VepBObHNIF*rJok7{5hs8b}-v_Oi#it zZ*qm&)F+9{Ra@ShVcG3xh4&p*vdkkT%WqV&&T^Kq)CePOzV@+n=y8_OH17-Lj|(F> zof`B!=88P+BkAiLc%2`54WvE9Qd{wFEbUG*s0`wjuc7LrtMDi%-h$$G@G=%gQQ?tv zp#xEs_Q7CP3_{5j;?w)2;Jx1V@#!zFRI=`5C7%^On)+NJssn!vOU1hnkSFKkJ7Gv? z$Tqw;0vYi=Q5*0X>v47sI9~LlsQ^}ZiQwDe6lEIZwic>AE!6TvM};qGJQjAj9`n{$ zd;#RAWW{LO{|in}BL0Bps$R!Qf51t=1`7Yygr(a*qN#p0JRLxL|3=r(;o7SG+SQcZ zp6DO!kLIv*!-}T)eTYUQ-$NnOA@gHp@do5Y?AWuMDgC5ldY82vFP4to!Yl^=ud0f( zG(JC;9gVk-;Ku@|mF&At$v`)}iv)fs7ELVkqns=|X}*n?{k81r>T6j|OGl)tx21^R z9Q|N9WSJ#O24QzO+Tm=6^Vu=|d>5|wj_F%s7)R61Jm_=qV_09J^^k90#gke{L)Y&Y z_mp4y=T+^cT@@wEy+rgC^wI|@nVih!FsKg}9vHz=K?Bag? z_I4G%5_T9*?8f;tsH2uCZ54kH;|z!QsiWkUXH|a6Xgmh(;sD~g^`5()3Qz8& z>h?1a@<-^uj&Y0a?rx>zb&bcgQ}McYQS#I&)&5SyE|;rZHPw!auj2j?Nh{F)j=^5; zD#}hp^m}ffeYav)Un4G>&ZFNIgM3udpvsW0|CSzex9Ykbw81>U{rcO^_zo}9*{1n5zzu-i_OKT9);KO}{F{7`_0f-> zSMuY}S!RXvc-;Wujp`U8*E!0bTW+_!uOdI}pChQ-=DM7%A!GD-m0sDPE{sd6a{Sm+ z$!5Kkd=ueZ&ijYdym|xeA_e+xI;$~`vHiR7`*n={%NnWq^e%Q0!rGUncVVCE}-w|g3{{4!1pVP^Y{x=v{)ssOgUY1{G9F8}{k&o@@ zw+kTM_H+*A;`TcX<$WLgDYO^HBanZdN8I|ZE9Jpj3H_Y?n-}eq^@>$h@_V$K2koQj z)iwrwjP|!-KGA1vPx_rf+U_H6;|K5q=OY7>{X(#J&X?{f*gdDyJ%@B+F@F6D`4LW0@%Z=({LS%} zgXery!o2Fr-&k*>ns*25au!7WO~4%3P{xgDnv3!N4*a+T{d7F$r+2}RuMkN~7pwN& zRNHHZc6bkZL%+iJb#QuZtHejU)KaYJQ6hzI1ujp51vkSBLoYP3!TEA;`F8O76hjb*>IEbb180 zvlzNkjmKfUr96hiW9a9u_<;+^pKvxR5?}txC;1D~+dt!}J9vIOrvN0sxAS<1Xgv-@ zQ$CC{*JGpg{1Ht-jJvry)S&h~@Qn)S@%p|r^ln znT$7HU{9@=I;Ia4I~~(YNc@iJHPLT5KWg0-pZ?}i#_{PZKW5oEeP9AhgJxA$>Ai>Y za6YzbxgY(S+u=Bko1RacKnP!X~Pp9mIIf`b8U{T#zNfvwyCFzhPzNW7B31 zk5BKiQc2Di>$~|^^HgaXa|(sk#v4ETfB3!^b^{MA01M#C>F5Wc*lTE{(y6JzYJeZS$` zUEtS4u0{J##5uM}nE%G0{c`vf_0{jE^0!7i+6}wx-|r!n-T&L4jm3^Zt1xbG{EO(voWFHiR(n!m*YD~+ zCab@-)cx!QZRa-`f3P;exWsmbY1#H&W#^mbN=BofaC-AlKU}YFySa_^*9nyWu(spc zE4GW{Wz`dZ;pqhG=~{o*k56Cw1~4FW7d3r^d+VD zJ$%CYeBaCEb=N<(jEB**6#guY`0jm2)p(-n9kc3fAnxm`cZ^RTet`M-^wT+&ES6u% z`vsM(x|ikumfy7-)lud5a~YTZw_o#mmCKX8fAc(93+WcZc*t@F+6~J`FSAtn7AgHS zmR_E~^Li}hOXTv$(u9Xf?!oxVxUb-7ioA{QWgz~lN-ABqKaR!vgZVxm+xnIoqt}pTh(s<*FWFrdJNa~x&Yr8-J-to%NX=)_K&)Mwy5a_wGKXj`H}rO7X6#U z-G13i-=Det*KMyVJj)+vYhw=r{s_mM&GK=9|?~WbQuj5-3+^@%$WB z6~P$H{c%q>-cNGpmuRX~kM*MILoAHe(q*EK?WXX!PY1Gd|A9Ymw zD=eQw`98up?Ur|t_$``NVZWX4i#KC^F|D1--%BX($7%Y$Vkg=M$~*HjqBSU|yRX=* z57Fnq+rPnYr8QUkhO?S?Om7kn4(X`!L}K3&>w}Jw)F1h|g?;W(@z}FRUpST9p#6v+ zpOe@126a1#@52CphjE%^n}6^P6WD1cd@OAgK9W8|x+h@oJ+#kj2w(U%?(-qb&BA?D zr&vmxj`;|(|5V&RK;A)kB;?L{LaJ_i1Cx#Wd_>WxTevx;7go& zgKu}#Ht6eW(bOIFy}DW~1+k8)20#3Y@rh+sjnANc@%sEQ`UCfa(~vdcr+0Ka2!9Tz z+=27N@%?8sbwWRD3S1ZcxgGLQ3%C{E+APMpRM*Hdqsn)|C(|cgwpU0E7T29k)xX4)QQIg9M zOM|p5qh%hE(e$~jv!dxF#xHL7`_`%bmmlEw!SDy~e-B1ER*zKvBz?9^*cU zXj&ePwHCtFet2!UpI!~D?BM9d_2SNNi2bOqk?;R^ zIOb`Ym$KG>qp|K`zg0tfV%ew@w=2xk*#BYNRm&o1KkT1z?Uhvfo)~8&p1aQ(P3Qi` z8(U}(-=P1ULOv2|seR0^wI6@)Lg=@V^lCD`+F2)>e#>FdP3S*`H2;MB3;P_@IhtNB zjXizH_c6}ogKUlQs{~{vjJstZ_l9BbtFs~d_)kL~NB^6J&*#Q{$lsSXXcziH8^~Fh z7kEE=$pF0BhIk(#e_g=`AQOOH{-sUKN7FN#v%-6I&Z?(N&*M#*&hhC9s2`Spq$}Cx zVP7WfskQ+_VoNn|wEw;1n%z58HtmEpn~Ya(Kd4Rod^HpCF1N-vt0D6pC)xu!xjWhqWE$3O zKf}JeJ}vO1vQNxd>=Sm$Drd$<=Ht`Twfqu(V0`+H;)iPfIgzmxI}Y;{(wTl1@1h_-L(xB*K(-V= zX4x%;xwHxFRM9dY^ce>}QSu_%JL9s6O7^ay^eb&s_z5jn9aDI=mY-|M`Q`YZY*%uF zmJM4eJG@`V;f*yu9zTE@X>`cAiFcU^I>w2J3oT;TDRpAU3EeKfeI#^07& z)`A~6yrmvT-F~6Y6<}XQkIT#Sc+tNK+r`>ckH5XpZ{lHhJY*tdD9);Pex4Z*fBlGd z#Ip4cju)T)&Uhtvhz!+FM0f-AXO=rkqVGVi7Kwd5_?hR8%V_5;XEjig`vKz*;V&*1 zuge&__kaKY%4bop951_c{o~53@I#uf-|+a5hJ4O0rDQVZbH+tQVr>Kc=Y0BOiZPB) zAEM>^TCNa@eK8sTuy3vX{Z1W~uhuP9J-GSc{W{L?aIL>p`kksL=06p_hOrOz0iWBMg7*F#=9fHp zKK&Q$%F4}Pl{;^F_6O$o&+%KV;3q%J?K()S&hhj2 zAa%mHvJZA2cF&TBp||1-p5L)vxPsr1g!JQ+2yd3ooS$! zTfj50zWft1yIw`;@p39HI`1`3Z-Z#1*xbYkK{J2j0XCu;^L8_j1 zp`VUxs`9fHe3!@2uC={yA%~;?v47qAJ9STC*FNX>2k5!suDq=EIQ%HWUHunOUmMZR z4(jl{lE3)$Go^X`hv#)7@%*W_@^`!ToF3MDB2_+rMm`6J5uJtqS5HylSDGRYa9Qck zICGF!wTr$Y4QgLS;Z|C5zHULk62kvP{$fNLlp4kMR674^fBgSSCwu(t>H6)N@o3!0 z_ha$Oegtp|>LDsV8i(J|-{P_E$9m<4rNYZ1{2cmgMT9@A+gaGZd_F9i-bDL*L-*@i z(BpPgKi(aGRQ%@PYaqSWkU7wPx9cz-u{npUt3be8w7rzg?0}4 zA<`eJ^E(!JIQsbnji&+M1AZIwF|^-zA@joi%J>-K^L|m`F|>XX*CT!drX-Jt|HFId z1$jQ}iG7*gbq$d@5w9oui`rko{>2d0ziO{zsq*=`&QE514SGMB$S9}!&&P4@_!OiC zx}9A;h;w8pCyx^c;LnQXuT%~+Hwo)@c3B#wl~@p(uu);#wf z@Z<0c|EkG<;B%yL`->sIzxoIGC(*A>TTnlCw;;U;yE(e4^5^MRkPaZf`5~*K9@q}& z>w0VqP3(d8gn5ehJNex08-zK#BleZctMRN5>=f_jhDXc(AMac8JXjv~xPMiFd=l-3 zCqV zFZRJ?AMYxjXSP)OV|4g<4(~sA!&u<<`!|ptuLEX4KEU|cuT!Xfo(J4EBOojIu7;p8zk#5hJShdyI2+dvm4f* zm9Sp~*#YxaH`x3bI&VFjwVvgEG^%TS`o&dBK971~{19tqmb-A@!SWSU$S90^`-Z9h z$@9qy)EkeBpFq0nsZs@y2h6vd;Xj@S@}mE-{B)w4k7mVVFA3`&?pJFO&&52CuhsRt z0e+kWe~xP!BVT}EIpJ5H4`XPq*o~oA*DAa2JkfOr>npokbiTGjy5ajVaPHFM-)`6+ ziSchg{F1Aw@}Il^(4(f>w|iI1o*g-zXtI(1IHZ4IA(uaf3QE6I?d=roaew-`b3qCs z-`&t}d4GlHcivy&`t0$tl4HK-bz5y2f6k-4JPuvz7OnTOgLDS{jn|t$p+9kXZeyN_ zgg@t_POqap`yuZ^Ug&^(`tB-#bL&{^~`QzaAnD zDui~(;rT@3xdz%Hr+*KAa_5OzC^wJm^B}pMe9%2eZ80wYj-NCf+Qy)@+V5W>oYzIW zAbDMM5Hj3i{D1jNnNkP%=?!i7uC{w$+q0a4G#d2~>BP_zcX>RB zp@!r5zCNqpeF9&;iS|<90M>_)Zhu_5QuPz&OW-H`T;9d*`pVVwhqE2G|2$0OaaQ%O zAHci!N9!J$!JfK~Vf{9Z&KjXwd#_p<3F!E@;iw2Jp z?BY0K^tQ%NW4Cg5Fb6Hr_|qlmZ4u$LRO7Ok6hiZIcl8qN-z?k+IKqctmv9UnT7RB| zXW`#+;)E1_Tf_}7mW%7p!+}4lp+^4pM4_R^oF4>|Qh@M-6%5PaEb9D?sU%{|P&+B42+ z6@n)@twZp1r>%$Me`J5O^DxJs?Zk!Pg-*v1yv*qmg4a0RLvR!&hTu#Gl_Yf~=vfa6EeYauw(nG%BIa!d`u+nhH;@IL3Q z5PZm)8G=tcb3*WCXI==t>%8k>ej9C^vm^vha+ZeR>CQ3_Hxhp=_b|tw?W_pF3!POV zc$xD_2wvlS7J{Sb^AMcrtPjC)IW~mgZBAwg-sfxy!H1kLL-1*5M+m;`d>w-CI{Q4# zZ+VP!4us%I4yG>o+Y{jM>CO)x-YovWAmR(3?SS;*g$|tL!^@oGA$W~*Dg;N-*$|xR zoD0EmIWC0YZO$(tc%O4Q1Rrv)hTzlA%@BOqxgCP0lJViV9JuxN;cX5k zRUh8x#0b63e@cIduWHoLD|2Ij% zBF7irCZSdcj!(cXyDz*~!qXvmU_z4+JS?GE2yT*q<(@D8xCGpa`ta0*_91w70&b6e z;Y$;63+ltG6L6%)hrdclGm6L*JeRoq-z7X})YO>g_u~ou3^hg1mA7k;C-gVQ>2Mxj zk0%T=KG2xQr{f8OjlCLk|2>{C%($sBx4+{FBfazo;HjKhX0(T2z+L!-gfSubYQoqM z{8z#_4-di68c0kx@|EEN%?b;9fUoN&PBI=BJTt5ea3SDm!INdZi~BXBiw_q|oNV;= z;j)RZ8@qkDR^l|{xDP**__k3_mMD|MS{K9H9M(Len&9zayc7!1Jfp4-UkCr#;q#5g z8gB=VOPp`C()bXD*7(E)Mn{cL0w)3|2+jx_@(ods#Dzvr!Q;c;0PX|aUxm{Y4Angn z7a22k{AkqI1zKeATh&pKQ7a8dqpB8)X8dEgB0USl|8nZS2 z0!xEs!S{?~8W(*|;d2_71CFBi3=`u3=Ra5mCm9moH*#ql1^g;-RgKG^!zq-+#YSz7 z8vsuQj?;J*hSnL0ON?$Be+4`T_$7^NNcu~S$r^u*q3{ANHNMcedN@u?CN4F$3(lZj zsE_5qm1W5~KI};hT^DGXF-Gv@us@N%^@+=j>l%;74%J_!ml^j3&!v2L3bYyF5f!+6 zb7|dVy!{6Jgb(jcTwzr9;iHM47?XYYT;gZOEFZp}xZYUe!}k(58J`KBOpo?sw>@c_ zu}SbA;?pk6g4>NdI=m^`Q$*5sqjW{i&t$4}0;g?~b{cgBXVBpHaCe!s$5^THYry4` z_8J8$vHnb2^*m8*(te|z#{XbxQnie}Hjo$@NrkR(p%Vqv(9i50@h#vLz{NHG4)?(q=!_Ag@g?90 zU>xjZe}$d=iNnttbu_*K90A-`I9o>NP2M!DuLW7JY+u+0waSOc8v^Xg!JB%LU^drBAI-5p7JmV7%|cUjlE{ zxEAVrf6_&RPq(@C&-fP~zF+L3Q2@7;Zus{IuO+vbs{I^G`o-YWncRQ4J)KVa)kyT= zUy?2veKp>Jr4P<384mHb*joC;hf`Hr!u4uX;YuUFu7O!D8xGL1I? zaIKD@>$Zm##?D2g_}^x;gWl=+Ph zZ*$6+Kl<=Kr<{4phYvXw%&R_p+NomR@!`u(b<=9X(nwMe0VF>GavWi`N{Ro z(muR6xuIF#hgT#wGUI)CO>$F{-->YUm!cNti$1(D`B`(g4{u9uW2XD??&Nmn8$Ns> zxq~^!hYu%rG8g;s#b8(SBOgAQ+|B&Lhc6~4nA?2#YI2gf--mxsPBoAC@ZZTj%(FiH zUvh8rst*TJo;UCKaPE|T<|7}@pYo!aqiI(8i=_-S^ZRhwl$XqMK3pYbh*@9bq$F-% z!_1~WjQt+7oeyKb$Bg&kh0Z9mhYv4v#+U@m`t9|&i^Om{Ehc7#Cn|pouuJew0)Q7jyLi3Cd&re=tUh(0@$?uu} z`S6P5C1%lP%Af3?HOb4(7#}W$U;C}@!yA)7G8_2tw&YLE=03bTd5zh@hYuvLGZTFH zaPoTdIUl|l+-MH+;giXm%vXH)V)9mVq7Pq9{>psIhksArVb1sAzms>F%Y691^73vME2BH+;BC%2D$_!IyHV{p@3Ap62Y& zOF7hj_A#@V#%e$Nm|0n4wV!>=Y@o5)&pu|h)>!RlA2Zb!?j=L*XCE_PQsIIpImgY{ ze0aL^v$`+~NygK zTsB+z@G|F`*~^EwIk(I=eR!YqyLsM+4>^CDku9^*JMH{!HuB-i&V6%~58rkEGuLXY z_OmT(uMbahZ0oEKPj`Y=j%Ss9wV(Z%#a}T&{TLj7jg!NwBEPd zHr5UwKJCO=zxnWGr;}BoZI->ePB*KE#%e!1(HiN)lbj^$Egzolq*$9YR{Pnh)-GT8 z8mEVK(ubp{xAlh)XFAVW>JiB$gVT%4(Z`Bzr}Crr!~0qFe0ZVrqSeudmpKEi7kzk} zGuWE#!~2|J)>R)qBE1GY*{@kY`0ylWignqC zr#n-v$T($R?PtGX71fyIuW_bXHGDXVW>~F#IMbPF_3+`i9J8!ZK0Mo*W6kv8h0Z(H zDj#0vEUxK{SbCy`obWr)@{2X#VuwM4z)6NR(eILH;d}N*Q;k(WnE3%`C z&-;DjoX@TDK0L`;Z#DAa>COhLpT=rGd!seP7rw^XWWC|TQMA=s>cg4Nm)0g9j?1yl zI^@H%ogLOyA71F}vW!ky`CI1fv5NZeHfO)p%!l_m2dw!%e8~CU+ULWkox|4OK785v z$%^fqW&f^o(&{I8lHM;kYmHRlIn@64S?e>6)&BN5>sO7{{`Pt6rr_~maRYh(>%8@s z4p;l#7pzA*{4MN%*GRcwJ=TTOpB%>fQ}t3VTGa$!GSq(fMXQ4fr4`VDQ!ZJz1mpfA32#!TT(Rt~syw_uTqxnH)xn30C0w%>`fyCb4Qq`LS4+5M?egLJ z3BOy{G*~eMoAHJGU-hRo4|4OJ}FB6oe z@!?(xv38iF(&O;{DYfjnK3pxKuHD~<+axrwSNd>#LL>X64-ZReX5aPUaVahA0tswC zgTnXYel?|)y~q`EodQm(s>QE!e%^Y-`^ZJd3Wqj#F$YZS5o2 zXXg9aQ^)c4SxN`HG1kG1XY9b+11VkX85%djqmpk^y4!X#htCZwRs>%cNlCPGYP=PX zju__?JYM?K#pFc0yx_@Us=p-L)dkNAtBL$xNlCWrXxwX)!cS}ctLu3`JlSp`cy8E^ zG`y_{{azX$5S(gfX#Ds#LU<2*i^dHxzTHgeW&fpdc?o~cu9~9q-$}yz*!>lzzF*)= z&ME!uBN})62wy=dFy0KH@n()jvF z!nbl?wufuH5dKP|!FGnmkuTtMC=IdS)c9f%^j8{c&)0ZCemq~GVfKd_?=MXB3eHG> zu5l6MC!I#v+clmCdy{FTeL&-$@Xwnx%08;`{c$)=O|RJhYP<*OEu=Aacn`wgd1EZn zTS8;)LK=UH^j6R~yNqDBeZFe9@5%ae!=6aNep~9Rc2|vg|27ERQ)Ax04W_2sgEZ#- z(FeK4+oLt+{n5zO@%9vrd4IHE>I8eX#=Jk;E@^_jL}T6`eUK}|{#0Y$AB{}Sus3VW z`=bwXO|9OxzGmHntj zsju0E6%OP5)GH}d>@phjerog7DR!*Jyr0@8^>w?G#=C(#0;d3n;rRsbhj&k%Y7dg| zS=0}Y7L$Re=+*A0CxD-EO5Z z?~k^0X4qXd=KawLsWa@JKKy#>O#3Ato|QVw9;Y$yUoK3YV^7tX_b*#IbL_bq^Zw+6 zTyyND8uR`khp!gwwx2mR=ibu$|F;4z-eZjGi}siLjt<{r^Z;IwI?u!1fIm-Nm@WPy zFP!7!`Im<|{+wc2SjAs#f8CpNFcZ&K@VqE>iG5A*Tq=q2cz5bj`yU@Zkh;tcdye(p z^LroKg?zY;v(k>ySe>W)$gbwY4V;hd#u}^hbf4O38msektL*_AtMhcL?a>;m^K@(M zsT!;Ebf4Mt1iSwH%-*TP)p@_q>~A$z`B`Tl)>x(gxqVV&mEL;$qQ)w{FYN0YtMoS5 ze+X93Yocg_Z9LEZm>iZml>NQY&LMbi*l@@*xi;Dn8pq+${?XKpb|HnSE!x`&;1U|Q zI?4K(c8tc&ML*N7qOnRp)2^v;yBr3cOU<+!Xj~ab4}Jx1qOeXs(~i?vrJrfX3!X_m zKgU-^px;Z!SNYjw_xIsDshjOt8ms(mu^0OAgVZhddW}_nx7w#PZh`0VM^m@jb|2MV zRQ|Wx1vOUr-)fiiVIys;-CJW-o-gg!1iSV7r9Dfq`@HN+d!Y|U(UX`w0oE%+(@xrLG+vALGA`}3JzV40FrH3HJ8Mt$;n`{D?PVHI z#nF@Z(k|Lx`|zr?U+v=>-~R(|N2Fb`@A>emv}<-Q%)4A(4&RV=({AX)d(&>)y*2)& zJDy*q{b{ckJd+q-OZ&_I&KJHR?Y{j4%Ek6L{C?WMc0Y|UrVo)`593(VEHyx{P_`x=+NkNK-duD}M3w>`ky z);;nBe$e>mZ?Hb^5fKPOx|~181A62O#0lOLwtOU?*N6(lD@FBljRqF*S$sp0ul?tZZM|8aHS@mbVv0KoGCcbA*IjLK|5K=vL2GF1>{ zBU2~>ZRy@Ev>*sCqavbGz%peP1O!BevX^CwGGuQG6i`r*DOCAA$@3h({Q8G}z9e^- z%jJ?>E|<5EQ9>E>()J~kP157(`LKlYt8@-`!tW5 zm1i%-FGcCuYvcKrQVK%8Lw@ihZ^O#ngG(s}`8@awaB*q3e_GnzUcvk+t#p#%Zu-k8 zJ*D0Izl<_S+O2=fC{bv>9zGvwP_V3$ME(V=u(HYsat#?CsEj4QCBp-iPs!H1V*4Ov z8o3NuVL{4V@=dvYIVGE1P!r+hlr`k;(ErS3<&~4<2(TA?jojrBL^{v;(a;%YLqfj+Q+)W)Uq>!>nc-HM0_6$ z73nEiU&)ak#|psn(xt%-l)kAL-WKk!`-2-R*M_01%Jeo-W~QN^{Q_S>41PmlaNmjj zc@D#B5eu4)MOUwelAEf(M=_!JVYt z`{PX|#m@okO=T>aZ~aGH|F@J${ z4bO`q!OA3Z6Y%hmfyxx}b||l7Lqe4Ep+sX$N{t&FN7$p+J*(!*i6%wn= zMa%2=RY;t2)6cLTq4Lq}RQk$x0L%uV=EdjEvVSS?M-T#COYYijw5#0G6VR zLGvC@M0!(|iPAnk5Uj9NC6mH;LccCs9jeTt@FU;=HdM)$&XM&)iGIVBB3lODv^^!xQ|UWp}!llP$~2& zy5t2JT^2(8SLjtp?j6_(wXeN3viUs1B&?dU2(qKVE*Ea(4Ul*Q-onW4$fyq z=n*AH+Q)u?^lc6~s>Ehu{86`HK33>)Ww*3j9#1Goq_I3~3_YRToGRkG?fXgPFz>#xxl&@5ephO42@-08^I_g`QSgQ1}>Vw{qcE+1it*gT3JC- zbKsw(^K@?&F@Nox@+*ax1AD>e$=%M2{hwE^kz>FxzfHMA?gQl{mt9aEl1G5O;D6ol zog)0AqE5&2i3G#^Hl-pt)GPV}my{ahG_b-hDGjCb^xYH1_Lr6B6n+Zq1-F&HqIY^t zgkMoQQ}~3X;Ls~dFYL)BuowK4e5I%e|4k|I zC0>vFU@zDtw}J7^T=u(CjNBdU1(%i1(>K6;ss;sbE0rkxC|F^)m0A=&sgDT1qco!M z6<~$kQCgETWO@2S2`4X-<>?P4l{|bgtnyj-Ph})|9{2!w0{I!tZ_QTkDxZ;y)PXPH z*>`Tdvg1G$~AH`c;E9d^e^Q$xfA#qSkJ=zs3z~1`$`dV3wgiXS6Y)> zC&2vT&<9E%a!>FcaFQDiUt>2Y_)r<{hJzLMP{|@!gij+H6nv!2Bfkz-*dt{N`N1++ z^)&3U@*`Pa4$s-(%hFl=jep@Q?yx7y4RU920QgUeKkr9z{r*-8&cO580rrB+OXumY zR}$e*m8ulp4(tWjBR7Swcyrk^r75{D*b9D3dIJ9k#&5ILe5ISTk8M~5tCEK0E0-}o zJK>1__rHpFraZoM*Z%)1ccpXK^zx$r{9H+d=LS)~=D>Jz#W1GsNAr*5{mj%$RpJ>D=Q*>ObwL2qCY5vt}5;J7a%^gEC2QXn7UEg$GX9IXaH<~nZmLE;8Cy5 z74gTh5>S6G99Tf@2JNWWUW8W*E2swhIWVM<+IqeS_p!3uV7_*kqMl!Xz6Is&%`mPO zf_g-RpJ@x@uVIF|LORE@bBNf#t!^a$3j6OF=BV|do`K_ep27XvKdi9Yh&*>Iyx$7* zs(r}IVf%!z;%bDnk8P3Ruc$r>pA1e5E3J;F@PlxFj|nTQo+k&!z*psJc{Lr|7s|DW|IP?#Kf~&%u~4qXc*5&YKWq%EtIm}6u|F0-E`-%r zYpxLCK34oZ%nuEFT|ENF5w=glTZ^z}YCgGi4Ak#oE!3589wPkE0$9Z^>@BqkluO~b ztBmD`wNZ;hy)V2H?pJ+C2elo!EW~?cbyY`_w?aMz4C$s8`WE9KhWKTN^iX?}FAj%Q z35WDn%df%k#?b$$J*1zSFP+I6L3oQH!D`vH7@ogC%rE^w%^~aSga@e$;Qt~$wV^yh zk6&%G9{ph~tcpG)L_JS#3+LBs$PhJq1BUkmS6~rpKDpK3;(A1>4Zj!RuC{|DT@dK*}6eMp?TawEDv)bAe*NmNH}LKiFUVMB%_sWUgDo2cUX zFj-wn?g363k^=t~e|v3M7#Z%zRM$!)NMHJp|9l?K^O2SIBHV%caP*M$7mkGd{dCCi z7iN(DuZE0#;Y>*XRdvh@WB+-qxR67z>~mb$<1Z^^NCuC+zuSTK2d9t-y1CQ zW0Km490vA+TapXP{>P{4JLJ+}_+3-AD|yFtvHfJV5BVq)Ds6#QHrPW~ONu+P=8XnKDBLR~=N`2P0`bs2d>MNz+hp{|j}_r)-xrEc`| zRR}*KoyEla*v&&S)hSy=e&YM!T|=g-Yslh#@U9`#)g#jGcvzNtnjAJr^oO$4yJUP{ zo28b4dR06R3I8-?hT2@(eZHEh?vi%<*E7}M{2ah$s((xG)f>U5i`nWd)dS@m%B%h^ zIDpMk4e1QNJXt*N%~p$&_kjc0Y_$wI8S1fIHb<>Uo(T4WYm$pV`GW7q)Q03LU@y1@ zIkjHQng%7dC{^zR^vQ@rAlAis38OC(=2d{cpfZyy4%f6L*X798d3j7~cm^ zk@m6gt3mq+K2BC)|967FQ`bO0Mbuw~p}l-Je64Ek5q7Wd2K6;R2e1ulLo~1X3aqFc z{=M3q%-f6d|GnCVTnenP@6~S7?(_Q(>Q@*}_rpeYgP-?=Zd8x^IW&Be`qa-c;ak)a zdu94){={~*92w^uZC9(3zxWWw!?hi1UGhwDQ?^5GN?tHpgzr?}B(DWGWjoalFBY zEJyvq&%?s^sLQ0?{?$G;XrDNLC@+WLdyVjYYA5L&78eOm+2Q-uY(J0ge^6a54dV%Y zVLUkeC-sQ5JAV7KdQ}>~Pdql{XZ3fCPxr&m>I3o;Xz#Mae^G<>i{tzF4)6+a6=`?8 z@37j0Ec$Q91|L=*V0`w*SMYouend?_Ahyr(V0w?K6aBn7{J1JYAzTsRqx+v!56N)1 zJf2cNI4Hu=0qm3-hvtQ$e%TRvS{+I*1KtDvh`ja}QJ`YU-> zptyf7s^`cn!3w*mUL!Z@2`dVQUs7+AyMqsaACevDS2iekS^bAx4y>@ts```6FJ2nr z9|^yrI^=5Lli(6$eE!W<%aQTeR5x2L&o~xfx3~5^}z#m7rEnnQGOn(2grlLUhr`=-S3ao=Ewg#egJ!< zc0}_DL1O#IYG3j!uooOo=4V8G@>JMaG&*zz%L&o)do~g&kxSmhGdWnqd`Q)p2q%*i!${}0*M}10;2M4f! zRDMF9FBjia?+E=@74Jnw|4)2Ry$4*8EZXCy5zo~c(%2ri0XL-ZkU!!5Xav*Vl-|qn zdNA!>GF}g+b)@(c!bN^~v>xOcU|2s&3r5rRD4@moIe-<=Mo7EuRY7g4U$}=A(iZwT z0KDd<_==VzJ&vyngYnY{RXZf@y z4EKnoT;hTaZ9n<+c=3M5)Q(8I-=mt^W$6qi<}=+1HnrGO@_MpfHDLv}ewMaO+Q%Nk z``8lwY%TG$Ob`2bop`_FXyc*WLVu9H-!7~jk5 zMf_@ErL~cM4h$)ySy1nZ`mZY7M`MG^YL%qNvpLZJE77m4c7(hc@+&kVP>Y3nP}HXb zXTz^dMU>OlOJ}hjPhmVFqJs9TpGQSh)bgaqvCeRv_O^XZ`%~KO4^-A{s7KxUF@ROp zUP1HWcSL!qq6LvZ27AF($c3PPkqc`U)*%-Id%;c6biY;8-tu#3cr`77;^X~LLrWuL z{aZsDL&p2PrZ$m`_j^q(lZ^FmEo~MV>)%@1BC_Ta{k_`S3UWzsQ&wABC!I(2NgZtq z8TVgDyCi)@KWmETfx6laGPlI@Kwa&wbOy)gg?idQWPDzzr)-lX zWir;k4YUSitbZG5Z%SuyR!-z^L+xF1VXznc9vSQZM%q9!*8h#PIP&uTV*A&%5#)Vf zFL_OUT=eGW&o(FWZR@qKJAd>?Q*qMbHbdORBh`IQyXN!v-@1il;5S-VT| z3qtx9MRd`&-o)*@EP(ly5#6+zw}f*%K@fjYL=Ua%Z|E-4y|j(wUhv$jM)uK;lfRbx z@2_?K9pi^XxHmFb3nurSE8-8-_DQ?>8LC~9-m7DI57lmvu{?%qcVCJhrai%MD!*Zx za$6j4FUR;{T1)8+{^t|X{tnSPlAnV2fZr!qyClNHwQzDn@E&lgw2zMugjIfuE7_c_~^e2=$8SAK>#+v}Tdt z>nHjbF`YXv^UA)zyT~y>p70k+Hq~Oj|?o3&1$kvdGW0>GyE^k1KoFn#j*J z{ujDVM-ST)nW>eO&Sa0H;MaO0r)p!+v>r;9X51I?v44LeGE1wA=Fi%T=c}1oy7XS& zez3S6Gqv$(c5fEU7mS>#Eqfrg-^)@~!TJf2v$ReR|MTt0+1hckm~RTdRi=qhh;QTm z=4y2x31{%?O~mo$YE8(^zzW2FlPsRcvIc*py-OC)V{^eh$qlN&uL?!Z(HHjJfB4`jOVlXCEt$BeqlVHrCPnmBK_mp2USFWXQ|eKtk#0( z&B9-6(P+BgmuaceKAzJCRymJcrmZAjlwPh~BM*8?_1ZgR%w_AeRd-)+*Y zrzg-)Trsw(X+DL=|DKbMI5S?ek7j>r9?jgrn}32?mbQNL)@DICW;4r@&ci1fJE=ZMx* z8rFk?^n2J*Z9Vy112G+KNpTVrl|$x`O5T{h&rwn@pIp( z6Ixk64~jaaRrPaJ)LCsHn&bS4i&_L3=SN)B63MM#{1fJjXzAo`V3;qW`N*ZfFkeLb zgj^F0^F_3&WO08Cjk=`ID<{BxCu#s_{aYf0!RvwJPp zZY}LTpWf6?OS|I%H??bId_KIT718ARQ2F^yE9d8hQNL+*{5&@5w$=^J&r}ilbw}$< zegO7@2TSMB{MSFUSTdgPpISZcf4sX|Ge570x~p|Z^MB#~YZLXChD&BHpUWO2L$ zQBSpFWO2O1;B(UM{q#&L3H7qLU+{dNX>I%*7?Q80OJ}l3c>X;Z^^f)q`3dara@2Ee zkFvt=vAQ!*7E6QhESs$ys1G%@Xk5%4-Jmm*? z-yNm#{^YN~D+4tiMt)Wc+B<`D@f;-fH=~`ne>fj4?c-~}3gdjDw0r(Kze~pR*Leaw z*NF1G6ZY?62A@b4>;A#`4PPOR=`YdG;G59==o$E)At{KB7uPf_^YMPj~>%`cI| z+r#(}_=aD6Sl@}?^>c|Rn?Ln);V6fff#)`Het$qa-zLh-E0P(s!yUji$)CadXC=A_ zZz%2KGr(SO3u*WKi}Dd>vd2Cc^o+#~>$1?n`UpTD0&!76aVRTt; z!g1a5)HkXeZ;Iw$LjE==_$q&syacSUS9vFCcmEam7k=Br3>`kl&n==W^3{GG6jg=) zf#&#qL3RF!jNcbj=g-ObeL)Ql4WdXN$L|YjaIZAhH-RBF`9wd%{Cj?gjMt+!uU+K7 z^Ml_38b~ze; ztuMMKzbx(EKYjUQX}o_bu)Z8RR1kkJ!}Rv!<)w2N92aoq5FIisL$A+8|@7F%!uSvVt z_aoj=I+M+W{BP*}h`%q5`Lj8CG>^pibiK#$bTa1mIQ|70kM}XpCS!S+#D5@T{(j02 zNoTPJ@$lj^jnL^ zY~i(~uXuhd0B=t`TX-|+4E{De-;{&!cgcb6M0>E6_a-0SAkx2;e;_@MuZHp@9Eq04 z-}wGkzRAy(W480#(wXcS#BUU{i#M+((v!)`Li*dq?BTu0d7-d=Y|K7B1WoPXLH?mM zj4wm}WUB}HIC5dQ?|R1^*vW%|M(T>J`>d%Z@){KD^|*@)g^ z|Ht^6>X<$r2lY$LF)rr0xbXwnalTqQPZ!_!O^rFhzn8wEe+PcRPVgTwoYqG@!7q>p zy)NG8oZ$K7ce;!I^$9+{rr5uaUHe}2pHA?D`}^>BY5ZHDjJV$SgO!{ z)W zelFB6F;{r`Mq+#P*_a#rku=Otf&97=^E-Fox`=S$2Qhbfd+AJ;wiM=D$3EioFJ0%D)@G15M^9P+JPY(bsD zxSP11pM$H%a$SXd68DD(uGj0ami`L40OVt<*ur`nY51N8!rR3b)yI%KpM&?$vBmYO zFwaWtPkg@<8e3XFPZr@Vm)2ZA>THu%5rhA)iajb9kIZ}P$z-psX~QVrV6*yb-R*4>^O+v0`)t}5K} zg-sdW>V-39cJar>n@4)~3@Ev%*{x4jaUtZjgFT$m_`uP(X z{ZF%J^SiH#_P>)}k^C5}uughS@;gv}Hz?RyZ%FO~R#<1f1vyoQchTFDGh}!dy$kt3 zka!;Js`nz+FSs-LK!6DEtM?+G0Ph8VK)ws@#Luzs>*3^Q;N###v`p{$ z*nav-Ki`P$uWv%j`U+%0EX2ma4T{S3cHq@VTkRW(?@=I0TCALxJhd2HYy{fRX6 zXXO1GqI0O{MgIlM+YtQ~=^WM@?uUD^;d+pC22Y22qgi;kURm15CxIVBcpVDY`-t`{ zLT^mrCBR;AYYdm?=Vg(4s-ORjjnY^8xlmk;e$CHjT)bYkwY?c}#_7+=SRako?Kj2w<>`;A!1^_T6ZA4uF@QFSM?I{5HvpH~*9#8HH`LQ|hQ+*`G$NFxv z{t1O+d6=xvpzyQR#PL7Vmyq+MKiAihvHtu*-$~nl4f}^0R{z=0D+9mK&yle{ouc3L z^Hw%Re}vYte$Uhky@mOM_4`!4DEXhtB0bae@?qE)d{>;(Gk=sp#_qWC7>Qkg)eRF6};fTN-~zeuk~wWEPu=NQf+X5Sbmo44ar!3mg^yC4_>bodW@g9vK9I)@+Xj=@C2(b z^7B^k5i;iYO8u;#dj+l1;bh>??N5CB!dU*+>cwH)RPf=?QU8S88C)x9i$0xPUdG?5|4J?f_eZIqZTbZ=1J?@Lsox}T zt}5RL=~bX#0ACjATV(%Xw_b-FCi@S&^~U6Vvj4DKZzb)v&%5<@eunwidN)5`Re#j` z`FTX(9zD#@V*~f;@zQSneL(++jQMp)pDc~_ce%Kq_33`wLkp$P^>YAtiJz~kzv$ok zc|_n5eUqQZ1|HLYly;AQT>q7f$3LZCk;db{7I#{|<+r_uo!0Zwye2%y)PV3p?d0|4 zO~9{%z0x^sN*DS3phrsoSU|fXzGpk5CsR0nA9qe4NyhKp&g<*R($98z_H*4WK2(<-i(at$J+ z_)R@h+Pz-4^zP6u!|&G8^}40^m(F2$y?)mt$#}hP>&K;itV&l8ONskKpWaby?_&et z{Km%J*Q<6y_bUeLGsQj7XG^=+^Rd29+P$8S^<#bx4S%d(@blETzjdoK<~NSFF(gBEK|a6dC6OYDNYb=X-PGb2831Sy7|xd-D3QeS=~CQ(SRl2Dy8+kwX#oAT68&B`3iTH8^E_faXyL%d#u(`z3u61y#F#8Sj{STY-VesV zVYGqg7%_kQ9=LOS3uCr)jt8%AD`TDX6`GI!rm>Zb^U>cja%lUN*TSoD|xWARl zM1SdR?)>RCMnyl5ifC)R zE3z|@VqT)LmJEYzIYiDDhG}adZtg~@MdKzm7 z_eoNG7h`LGkv>?j4)*_Xd=KLic_D;<8Q;seLvEPL*zEY;M)6>bKTf)jafDp?D-qt; zs5t<`8_j|16aT(Zejs}MVEBG3zP~Y(it>gHP)C) z#`YlAm_x?-sBy+(GR{YhGggvuK5M+Oo{aNZkrD}GjCy{4En%F|RXT$^Q151| z8AcyzSnmoPz%q3HPYi))ruZAIAMyB9wGMcwtrI%9x1$+VSPH) zI3(>}uW80pAa_F*eVV0+huz=+c+=n_D|*-H~btL zKG*om&r{>(8MR`>{@nG+7aEPo*q>WybR}bdZjlj8#`|}X5lzPa++rh*jQzRA#sqRl zs2}0?CXLU?*dNO_vd~oimKfQ74h>&otfu(b-~8J6o{Z`H+SoxB@3VG053*k;eKuG<=1T94qo;94`j-TeiB=7(uQ94qz*d>Czdz_!eHdaad_($NO;O{A1^cQ^z-x}K~T=W+wgZEK5=GPkIFd6e}jd7Zc z{k`vu%Vey7zB6u-vHn?W+#_TCv(|V@#{S+qqd**9f9&tAGfeVb82`;y*Biyj#xQaI z>x~fd_cKKJ1|yn$8Vuiy8!6>M@PW>xr9x|5o!1S+GJ$Mi}P{sr%lEhY4`rvVmu<_{j|+s2_n9a zrONwfyOExV{uHj)l!%?iMshm~)~`+2Wi(I1@HMt@j?p(6JsaBJuM_qeELGTD5AGMk zEA3;s^|Ed`mCTiaRlyvDZFRs8d}i&np_>mnY)H6=8xp%&4e{G7ftV*b@LBt zw?5L%d_RYV>!$jl*gvcfAjyZ*+J~_wiABvrqwxBK!1hxjiksJ@Gg;IE z@q4rZruvc0ADR9D_KI29&oG0@tcIrXmJ((?GS-hJ%s0qleT3GDCC#_UVts^nz#Yk$ z-cn`{GN!kb86lm+jzfRZ!%CaO$l>IPWIUhJ<`ZcjJG)z~M^o1PVlDgga%Q11|K(SY#Bydy zY3#4e2rh5d#Blx#%y-IGUo{(&Pl4h0AGBD~=3<}os=qjX z4YLe+8rTc2Bz;By5}sdsN7OVMO1t?{(|k(tMSI+!U~RL&SUjF+j}=ziG|3^Y#PREx z#mI?Zh1D_3lEr$bJ3{N4mB?bf(>>t2((duvY!##@TWxM8;P#ZB=4RUec?Fu^@`>LIZf>q6KLkf4HaEAB@qTS#=8*Az zZDD%HV}6TuigQ^@vm|*D*b9DD+D&gOv!3)7&wa?hsQ5R{x5$|Ox6Mw{nEr(W+n7(t zjWS?;+{CtK`3W*VSvwfF*`vN=4wQEH-_9H??e70wGe+8N4?3DDxIMKO9nH}%ZQs%S zOghhl{o&5$+?TfRYG%I_zpJ_RrSR@%4qDE~g7@X-A#$f};(qRKo_=Zj_smimGXLoM z^fX^Z)Al{hYGmBLr&*tj*Q1yD1{tqMFY|3OUeDfUM>1Z|-eym7-!-Cq^f3pMBftTy zkC`a#=4W3sTiVUfe&!l7Uaw$tt2E4K`bu2S0jBq3aX#+#8)){IcJqIbITFLEKQ+kA z{=e{x6R|wu`3*Aj$asE(O!f(ekE|n}=LVacJQ*Co2AdVg*xrVi)ydf2hL{b=cVv4U zYBnSD=i>ZB%{Jr_n?!vQW_BWf307E`*^B%g#LrfTm;=Z^%k77l;bh-YaX*Bc@#JY> zFF1|7v#N&;ON=l_OZ)gCun#4^!Z{wZFsWatmfOH4K!lRtv}eVsVe97Nu7 z1ir6LOfzpw=Xmm=|GFb_ggJ7u*gnS-3gdY@5=WX-$gxm=?@0W}oKGITLU@e1ntbO& z;j!j!^6fFgtWdLOnXNxmiitJ>CkltF(K+tTg+PvHn_ZhDy8V z|E)QdEYkOYtug0IyX9ex`8As3@z~^rMEaDZjpi+BH+`GTd^E57P?VodW}z=JKU;zW*e25} z?H+%#*;*Q}$6twC%^?_{uE#brPTGARu+1Eb@oD{+ZRQwh_xWwRxlP(#&tYX+ z+s(i%EPuEj%nq|M8OPsunzg0f^;dS9J;^xUzROG{|9n}DkMA;}FvDMtg3kj#n)_vV zjt8F~_Lv9B`24WPJVeIdbJ$~^k{-`SUxwdXNZM=uP4>&GIuudfoB*gJvr~ zkBa!o?CIxMlYTbG__=n{VRNapJ3fEZTrG{)D}Ws}e?ZIf)H3Oqxq~dqQycJpY4>{l zYDUk*{KNj!33DhJ%gZTqvUH}rzd9zJHm6Iw<>QPw_y3&j=KyxbT!-d3UV7HtLdNmZ zvu2L8o1Sy#uYTLZ8!_{;pL--;Fh|Z3>2;syE}E;PGiW`ki{=J0u19sz+)l>vu1n@# zGLCm$G7pn+y{gORDL4KZQNAymm&rJueZ{;<#_{Yc<~=fwXXl!KlW{yd*DNqwq}Ls9 zziJv}9Phen79-<$*EO>Y8OOV>nU%;m-hSPzNyhQ^>t-WqcRi~-^DQ#2XO(AmBjb8j zH_X0dT+ix;Iau0#9=d6!OONCD{@|uLhK%nIZknH%mlU*f;!Y22Rbujl4vG{@(Y=jKf^KA$`{A4t3VXV$VsB0X+>T)^5Y zjrC)EVj=5_w0l1()-5!(SBiCyjO~?TJtbp%p;`qNwm*aAY=PvS|g?1^qAK8|MLtqA976OuW8LEr-8lTW#nmH+@B{vP5>+B33Q(3>jY3 zYD8Wp!;4xi$=JUyX1znk{(Uj4o3xvr;uc>jj+e<2VZQzAv9DOKNxR{ttOn9<`pQ_% z(EP8a;(W_kZ(JyUZ&H5Nk<-3~o1sThCHEX7{yZ`FeMrpS^ z)wD`36X|oycP*>6w0r#8Ru~ztXI(2!+D(5wYtsLD7MgRYFJ>myvlfzzf#-o&O1tT) zZ?##D7M%Dl_j+ZpD!pS&Z^12mI#_^KZt#oPkc#W+U z7*6#=Q)})2`7CWO?$@#`61yl~2a;u4Y!D6?lF)-qp;q z$yk1yTLEM&zs;>6GLDC}uqu;rJgkLPN7}9bTUu?T-ScZ{9g)std*J@uk<{8M^bKC$ zdXWADNo}l&o z@eQj9S^Q4rm81x(HTf9$2KZgF=Y1%jp^;X1vIE`&4kmx2i1s1MnoiyZR#=pkEA5_7 zw3ScB{(ZFd${LaW9JYD8cpngLl_IyiCB{c%toG7A_AZPMPl<@Nj!C=aC(gPq?bdJc z)&n&E0pybtUJE8pSqR>JY-B_vq2$dBcGuw<*QbS66m@&8Clv4)T}cph74 z549#pyT==5%|Y{PgT?WNS&PZ{!Cvr6@_RBo&00?mli_LBPBPAqOSkgKI6p4kdLW&{ zFulXAo@+fazc9Tct-jJeRv-j^pC)OPHBCB$uUI3-!$wbN6Z6FJKC_mPuYtYb)wDh4 z-{;nkWIUft>mbIb^O!uF0pEmAAyH^mRJqR7omLSvZYpY@*iL?xGnkeUiiJVW^nGjfCtJNm z__tP=v|FF9v6}xN((j)C8f&R^7Hb0QH+Yl3v(`vYlP;aS!J50#|N3pTvZZ}YbVDj8 zZ?rbP6u!y&3C-VYCfch_*01CcFpN)G=cV2Ib+grN6Q&36*KO8&(r$gU-Reii`e?fq zM)9$H@33~0vApiK4q$vLZ$DZ`X?ro=u_N?H>kL_pckBV@N@ub1CB%4fj#Y3orU&=G z$Erxi^zFB*N>7vV|42Gu4U*1eH7>wW>-r6N)eLCn3y!u|LeO!nS9(Ob^Xx_u56IuTg)us2xbg;}x^3NxR1@Zr77`uXk~~ zHJX1vSlr*m?e^pxuov8&%!`Qf9bmst4g!0@VbbpX_lmuqjOSmc3G07F}ztODAelg#ulFj$X^s(mP zH_S@*6!JLeAAFqrnmv9mhU0psmF-M4wI`MBYzluH)|Z%)T-naphw*E`_;ktOYW7Mr z@0bqr8T!|*;eNWoQ!@&xxWk03x2~fX0jjnAM*e~|y)6F8d;oYsavi%YhO^c1e)j9+x^^3KFPI;+I=P^EW*@*`*y&pk- z9xT|@o=n~X>Df{04f_I`*MjY{)n@i}X&-+R9Kf2{e^7X;?9Vi}A5r)xvOm+@eooq&5&dBG%jCE1)8sy*89SZa#xC}gJU_Z#@7QIfvsk4kQ2vwOv6uOU->C7f{eyI# zF4jNDuh_vpK*sfTI@l-4g=&cVr-OZljK81I!M;M?yAZ>#k<0cM_frS^9yz8K?!V9> zk-j`#tmjjpQU|*>S&SzqRqbfELwhE`_e4omJKKZESRT9Dapaa|Jn(zuUF|Vsy&#O& zSM6p`C9i_?Y-Qc-rR4pm;IJv(?N!q5`a(VI4bphO@RT0*b~F?FE1c5PzE1Ho3qb!3 z{MSp{_q3l&yZ3KTyTs4p{HAg7dpIzDW0yy>*OSoQ$eEF%ztz+3A)Up3zs^|slwNis zndiax+$p{7o8;b*{+cO$>~DV&`_E#l;QCiidEY)F?XK_A&ps_ZjWrzr|V3$22wx7mCcu2}1d$Kg<*HVzN@uW7yNdomj2$WMV>J`R_e(K$)nj6NAM2ec#xvq< zpS1fuRJ=V|dK~-Yiin?J=Sxpx^Wk_~Q@+)%{2ZQF8+z02TWETJGu-CK#r~(UKp0*E*3_s0`m+xR`kMEkf*UlyC)!NablOtiyJi1UH=1g_7YDU@tk2&^6GUne`cG=Sy|KSzUUzlfyNxS#k0(*@#rI#(RPor7g z+3>xTv(U~ygWLCo@i`A$YPCCKv^&3kv%Oq8 zgX4I}X8Q;k$3r&Tx6!O_2>kkb>K42AWwAdzKUi>7q2h4yGw>H&MFw445e_Gt{K z`|F^6O?n!$OTzpb`=I??I*Y|ufz>R%Kig%mi~VJ>j{h(g?fhbol6J5E5qma9y zkAjbYk6?UO)AX>vQjgi)Zi@Z+*bNze++HK?wx=iTD`ad>Puh>jqW!gpp0@ubi}qfa z-;(>|^?!l>3Aht^@z3Zf(s?@e2Tt4T$k@K0w!cSHdwtse$CkKTUGf9CUQt8y z>=k$Lcr~H@FCKH#UMuaEznk`HG#m39tdc$Srk(w#h(C>Wg8OAAxZyo?GbnG1hTgW{ zCLbIH>m3jM)9y{44_=je*Uln`!u`5o=skOxbSC>q`Y*fWU%0={m7qUT@V>o_T+Ju8 ze_&se&Sc3y!dE*(AKGK?i};zWHu&eEPwbWCp>r8KJ2c<^^Z|xXp99}>4`t2<^89(i z1)S|<1@iCu&_d3B@fDshV6QD;tnaXjPWz|0zqU}nzB=qRXN`0g8&t%@J{VTjxlLYN z#RK_S&Ed~P{4ACT&li!ysyiFWBcq{zI;@5hnUDM1+tI^D46EtvByWK55yR>@56I7R z82e;ceW&<87(ZhvZbtR%wUa6TY+ zs4LRj%n2uNkm+yk#FKyiP{eQH3?o;Y0{6?XmdUOTLnlkMj%!&*CA$VZBKSkACF zonOf_`+3-}!`^nzk>lZc_583l&fnzXkl$B_wRQNv;(RmsvF>6#w4LK6UjYZOc1~sT z;*;Wesl8L1ydE6D+B zGm|XFw|^hj$vH0#{Zpv_J*<-x`COzQe(ycV!|p-&c*bVvDZH0coF6eBry`_nm3vh2S{wT)*ube9+JN=B4fXJL{w||6n~i z=K#j%-yRm@2f@x!@>a0If}OKuoX%nv5k2Nmu>4ubV>W|tn| z1d~5s1=*H1&{-yp$G;Oi$k~Wym!W-p!yN4Jf?|I@z6|QKOLan=veIt*7~=FHWBVB5 z1WV)oZng_?iWd^w=gIa`Ei}Z5AY=O&?tD%b?W0yO+}TYQ?VDCG!pSF#_Hkj+NT<4j z`xEV>#}n;zl!p0kP#S~>O1tf4v=b?v#Xf=d&rFMU&ilD$TC8*1&t1~uohho=e9hoHoHZPG-=aoKKtRTqb|~x`*YZO>*j*c>HhRdEs8#XU;^j^M)AD&vZ8W z`B~aD=bCgT+tnWW*Xdt6g)B_(39y!)<+PX1Vl$vUE1W*d>1gBr%jd%LV)`7XC;9kR z#)8u4Ivhv)yA=?k3cWO02Pr7w1vgWFeJ0_|V=5~n6PufK=2O<(2&OJ}l1P+q#E zf8&gy@O7|#uk=+;j-Lmlf9oiP#r~$T85PC*`tO{o0NEkoQPuk{`EQ-gk-w&SG z)g4ZGas^2Lu=JhIS!pOQ)fpR=zS}8MOvKM*<6aTo>%1a-z?{=8lAxHFk7`t$qwNoN*W^ylkTJ?ShZV}JdmvyP1Q(Me|`TGl^y!IKVq zMI0aNqxklxot|W@kIpzV$)Y|woPNexN*4Wft>9T_Jz133bLr=t9O(=;7w*3sH7+>8 zC2;>(e_eEz`T21ACFcQI^v{C|UUmwW6!EWkmO=e>D?Qf{7(U=@7#|z{#5qoGa{pH6VtB#A!^&a!KBzxVrl^JIOHX5uLt*@5I4``6TpH?=gyDMO_2kpg9;6O8 z3g?%{?M3*A;a1_`SJ6RG|Be{$6wa2O#zgp-;s0ar&EsvV-oXEL&bjwGruN=v?=2NF zWlAXXkdR6eqRewLlqo|lmwWHI=T1sR#)`G%EqUcc`BW4+$%dDc7+XKh`(yPT9y7pV}RC&rlC!!Djarnr_$JVVK^)8-K0 zUJBkDA5&U;MKSkZWwkFAPZ8S+!1=+Lvf5SUrT^LCwUGWpqMTNYc*E;*|Eru<3Yq42 z<+Pg=$HH}c2E?ml%4xNUTLZ5KZtT*xMR~2S;yh6n)(h*$+@L{V@V6yV){o6&D#Uqr zX(6`NtQ2RgAC==gLdhNe3dZw~##GV74Jv=sd*Hjr+^7{$d^CXa8#PTa_eWK=s}*y8 zRMpBU#`&i$s%p(pUwt2be$q`^OU2Q!{64%bZqnM5d_9cE@cU$~E6G0rhTkV^eNirC zeTN=O8$>MAbG%!1Z4~iTNYC+ZHMCUXq8(vBbv#}wxYj9)WtWG5;CUmE^VgbOp&e9-$MJ6I1Ke^&VUy2^kV&Lsnx42-ABb}7(W8y9<6j0 z$+$k)Q1c$Gj^ga_@3jNsr!lRy#)^*yu)ej{?jgqd*jnpMjPJ z^Xr(l+H}RSuza^GRI8o#0`Xqpz}R-$BE_2nry%_B*!J2g#qhm7mA;PJ+#B8L@2Krm z4BsOF{W$|VX_cyC`f5~$`PJAiTDoFxU){8}H%a*xf#us>>!ldWr}WtF+C;_K>i3WH zlX_}XiHDSd^;V&t+APJfa0YOju06FkNM5j~l=srsD~^Us1GnkgOM8#xt(E)U+9xFM zq1^Y@_Kb^?jV$V;_vSclo`a-?YAQmfsH#i2iZL@^bif z2(RH-hyQ^4FLwf;RsM5(>aQhMQ~9gD2LbP6Yr5i0Q6J`~ZN?7JYE{Slt)uv1EuFaN zSQ-8xZKvX?qSPG$(Q)h`tyK-F&-ptO zf4G)HjPW0?%GRE3O#B?=^OmHVEaSAgmA9iDd0*#YYQb zd5qC!pgfG_F-Dt9@>qBHnpEGh+G3JF4gAR1vD&L7U-hEw|5CI!N&Yr)qDay5Nd90M zc+axrIPC&)isJEFt(r3aM+3he7Gn6=RBgNBs3>^^?)!~R)5g_8c@F5?BC2h4aht9g zTC3V9pAK?(-&@Fu24UtV>7j?b&*3*Kc3gjvT+Q=y09#UU}*bUapYn^$*L}agXKcFqWUgSY8fec|FPLOT_YeD$ZCw zPkXpc*GX~4@|hfGEDwjVJf_6uSRPa3jO8&c&Wkn*v1;se?IxA~+`eXNbro~_dQPiP zjP2_=tsybCujjP8h_QV=r?n-<_Vt|BPBEA7Y^{f44sW(Lz@tA$%Ol3{=4o4qvAxgJ zwi09b^EA;w)}Ji`!=ITcj;g%;7E4Rw>5t){h1Eja2;>ufTk6^Vr4O2;v6^!F+A(5^XGTWoSR!#=fLQ z6;BV}@GiXfIQC`jNySGC4gvRYKUSNjI2uj|hWoMF3nV}Hh`JxEEhPC>;6L1t)s~Yy z1pfE${))Dm1%GHol#9{{$+GVN26pMv&YGqhaWOY&cU6UB1v5Xu9) zVgK@ru`9IiNPk2<=uf(=&`uM_6u+unAon%zl=78Yty^XOzw!R* zRoZakmWp53#*zNC=F|#znBi;XVqG(-Kh9z!Dm!{ zuG8ufH;4S1pR`W9gBbH`oz{-{_T?z=Oq}-)oM(((r}b7G3x5XOe%LzgVZ~Vf?T5Xs zjY0i@RW%@ta_hAy@kS`G@5gT7_E;3lcVnEfJRQdPIE>}xFqTi86R|wvTolX0VJwe# z;^AR_zZ+-F?@e*W^ybAG^Uq<-KZh~D9LD&^IT7>2Va$)s+5}hrogTYIo9W_nW8c$G zBZrs4eX-vLzOVg;ECRcr8l}9i6}(NBceWU?R)}!Q2U=C)QzPKMUdo4BL*k=wzd}#h zrnPkO)hQooLtK1)$|u@%7gtL8Oxxt*TT*swKfCzWlzp1s1jCp9-q+o=$vv$+fMu`?DzFaIjnt6d}lZKeQ?SV?If}6uV6nx3pPdn3oU@}`KBDz z>bqDM-)aLCPZxK>eso&OG3`;}{@~w)lz(ce#1DXcLdy5r6T}@M{0S*PXfui5hy0w7 za$H+LT>cNqC$yEsl~zkWsclfq--kY>y+@4SpFO2*R~!qsQTt~4l{`DvACdD{EgcXO@2=&7se+cXEF}}C?iQvDS&BLRziE3>PU%0d9VC79|Gf4cG5UXAJ58MY zx%B^n_8W0Fuq`fV3AfAqWdDEHnkdHp30@%4TDW*_${*T89{oSH5hxF1{GrJZWBi4l zNsRFe=o5)CegS=^Vh%s3??O4HFQk9v<8R14rYEEyC&u)I^s~emUV{DyF@~3*hnu_8 zo2WNeoE`oF=5sYeNqQ^dKYzjyU!0`KXeH-y?mA)nO0##PeC5tjqL7C4Joem}j;xXSvI#9vi_-7(;4ieoVUf!!$J*(7fXd^_+0 zV)?z2`+#2|wu_?tb>ejwgy;$KJmOD)Uwf#s{ynk$Uc*DLrNR0}mTlRj)?+3&8*R{ch6h5N`l}3AhPyj|jZ? z+O3)%B~Auj1U!LwO&HFD##PrR6W1;f5ShTwDu(Z|8Ss5e;1^LYZiW4%&r+)ED_lHt zTn)WO8?~7k6*WdMYOEI^XdU^@PM+^RR4Xpn`zr0Jn2KauI z2c~8V@$R?=dSAs+5di;Q13pFk+ZrLZ0xxcd;jIAwwvKD44{9%&{cog?RE*(&Jg$+x z5#{9nZTfb_?Eh_g=Kbj3b#Om&-?-cKGsN}Yg#Kt;Q@z&%QjYtDkJY(dPgi_2&;j!Q zpW~YAM~E?h?$o<=kowtTAKW)NoYX>pO7YPE=4VTN7V#6G!1-?7mil($7l5^Tt@KJA zrTZ;`I?!H9)oZN}AeQ%;zX-O~cPPg6Jyz#F{Yzxg9NGiC(4v1sY_^8k#kh95-bwi< zq<`nf-LKle+;7MDbci#i$6-uQr?@;1=A#MYyTo~$;;wN%TtSG!Wo@yla9*?r=xR|mwf?!B3dVtwkvoQUMqs2_*K zBl=Y0=YVzK*~GV8FXe;u1;lp(>%hy1<$FI(#t+utP#g`*_kLOeZyV=jvKZ_@v5#``pmd%REM zF!~?WcdGc{d1J5fQN2qSnV!kw;8EB=7@wh!Q4H^4!1`c*Ql_4%80X7}f%hrq_s+5@ zzIjxinYSd)g#7}eT(*9g{KN2b^zV^rK9ZxKb8*ccIr@EFRsPa_@?5<$@$ZA>d?#1$ zLp%W1S3}27&>tpFh4C^4c(mdz1$RSv_U}GHPbK*ZEg-T%o~<|vn}8Psm+mIx6BTa)FCYJeK8UzC@S5>Y>T8JS0dE4X+8y&J*U1NR>`S^tsv`YJO1&*&w4sPv0h;C%Y(fzRlzU91h9qK_jk2J^>F zMqH>H1RQCn3LfjGv)@tU9K1+6;uMc(c+3}0? zi7pnYFX=mpZ-nvZaMCipP%rdPa^ch!dU+R{sVnu7#Ao4ssuHQM>l=v^A^t|WH}s{w zrTZ;`3gzT|u+{ns#W8Uj*1wXg_Cf#W)spk!)q3d%B}c^t$e(hlYxJFpvjz6QZ|Up$ zqCWP&>-3oqNsiHZ!rOX{e#p)D$?^MbIMP6V70yf6jDK67MZ6lqm-3kdP`(`cbIHjA zB}c_?klvc9Z|f6@6X3kOG4Sh(V`3H5&z7m{^*rLofX^1$pbvW({aXz66~534U7BQW zPaE}vig`V}Q9rI2``eDG8}-m&sh=G_zg6bXyLw^8(Qxti<^8#Lb&KSim3)(4g5(E) z2Y1_~-$3%#p#N&OJpCr(>pnoPtr+f`!h4&&Q}gsr#7{x_4NTplZzX>2IXFK^-KzH* zBI7e%B+iojp`J(lDsW2b$9nUjC@=aXocg4Gst-^+S-jXm-XGYZKcg7aH>2B5eZJx? z0UYmk>HCOry!%`~pg1Z{z<5_<{9e7$FzJ6(OoQ}HOx>pscoexj?Dy3ezh7TP{3^(2 zq#n>~4VUtx0UR$6>-Q+0EG+oF1pInhZ>>06yjDVvr$_W2ilgEa;D4lkqsJ8I(RtW0 zJxek7|KI6T6=Q!{v&VP(Tx2m8>eKSnf9gd>V*Ko4aQ>hAgMKDi@?`NT$k(SH*ISH5 z`9xJ;PUyoF!~3-{xUZIaQlC%qtNIG@dFpAsNQ%_Y3sn9H)-S0)>$4QY@1+_CAiT4B zt?}qz*1K}Pbxxl|yb1DWd->n=Q^aN$*`9yb+oq!aR}E$S{?wbKA(sLFR;LPMKC%2x z^Xk-qk)AH)@ck+%?{8Cs##G|bb0jAjdKBH)1@|XY3mHp^E5QAbKT?Yr8;OJ9UqV_@ zqf-{@uY>-nXxddqayIg}t)V|mix{(s<@~l(nrW;d{sP)lk-C7fS9m3E_1d=hf{tpPD3t(q~DxFGPnw404qlTls< z_?5I;Mmq5$N?ylUO59L!ePb{2B$%(RPHSYGAZ`J?DXp=Q@C^DV=WCy&H8Ji`JXwre z5Bu3^w;LTv{(A3#IG)zrNG3iD`TuKL3u7*ETL>>9{T|~Kxt|8Py{$2yI19K^dV6ChvGy6<4@&P~TsuwbPgecQ!&h}QsuSly{%%g{ zYz!oB5AoTY)Ww)aoIDEd*QR$h-cUS6R8EBV8q&KNrxf#iw7YS^#kS~fw4N@*LwU>e z9>#DNcS!GJJnLd@;6uhL@ zeUK4V921hqqz^GB5#I>wzx4E>#$3`ruG~LryieRqxgTyEAwC50c{F{bp+76*!{ggy zM#6I{equeiH@ZA#R3ygv;%K9`VqUK%8%o#`r-o zkDud=UtR8>PakKLeqM&p>(lYZRAOAur5WcGPZz^sKVemR)R;I6^>ICzVSGs}*H2s1 zGmILur937iZ%@xOG8G?H>(hPdImT2MA4#8J)O$hd!~Ml>Fdmyv7y}d^4aoJ@@$`wt z3}U$++n4^Nu~0GB@28DrigA3g#nZ;yD5v+)CK;O*N5l9&+9cy+kNe5SZXfS=@tO3= z#xWP4Pk+WZrt58 zzKd9XuVQ}EG@}iBd>blSLEgAFhs0H%iY{`C0I% zjdHy_!_1w^r^NghVs9*j@A?ilw z8|8^>ZGijP(S=3};z!{=*{#tf#vtNCW2AhkF-b9(_i|&VkLN0e--9m_;;zoijioNW zqvvvCA8`X%uig<|VVrewtLUpn*#$Cw)5Q*OpRB)TRCn5)r^(R|jjD?9!8 zkzACM{qbkUOkxdK2fm9r2lY#8S3l0=pLiSOUT>ce7UUHYfL3x z0sZNw=sx2d@tZJyZ;I|Wl3zys4bWb;MGqPYOC{$CoG%_R1}TR37h%4)E&7d-{tD{< z2C82ctf6_yefl%?F+^nktTlcL28p zZb|a*l>DU8j^sZn`AMUzV)p-(F+y>kDAQZM$A8LLitcIu;74PXi*50v@wSWG6g+Lb zrx?FC_+|8ru^r_?eqZqPu%8V`9QAv?lqrKv27|#>W8Qm0f`hGPAD(3Y4YK->Ce=|}&^52YX#oRv68&A1- zoj7mIMh+K)`PUh7!C0U;8mI z{-4GfkN%&=1&_XnB&?A6iSBK<@~*r1a1^fDzN+NmA3ulv+=7XbCWN% zBK{f9I}$R&k!^}OJ%uC9S4#Jsp2Cp(RQOx;QI&zDPTMjH8X^I^FW0QP;s!Zf=#nEulJo)}qnMgauoZhmLzKS`$ zWh0sBUbT;x29}FFha6tGS^9TFWS-(^_)XxJz%P@0pOROIyhieqN?swdPBDj9F|t!J zhgUID^mSEU)E+BEY!}<2QlylN+Z3!EsiYX^6SrjC7`a{Xbde3|`!ae{q^*k^WmJpI zRy;+?@64zXS&Ht(t#BUFF5{NS#5ZL4QLzf#Hy>CtlD8W94v2r}jGB?TYmg7@hx->9 zwIfB|L~aM`{pJJfM6|WYt-wFYZHc#aK%Pq+_zL+H@wFO{^F%lJ$8;w|YPmhZrf zI+2pdl>hZ3Hz?-(uOF#Ka?Jk*kvb&D{BIDsjpQGO;JhoNVdO579|9f++*UD{Pou~% z#aup(A}bV67DJ*iOU<}7(srGU-(+z&?6*(MXc9R>{PsBb9!^HHNVoMUzZ2xMGnz++ z5oaBN`<)prB2$S+b%XIN>)k}3@>^_zI+GM zyB>H?Mw`g2cad`xw~egYBzdx^nkvLs8TUn!^H5%6iF}{)zQ_gQ_aQ!G0_`GwH=|tE z&oP1ak*&mKy2|kGkDMl61@*6H=>Eu`#0`myY*FFS?{n^tK;W+PZe~31Zcw-b$+raL zdH0cwj&YXf-D^vBi4<4X6g7xUBjINQI#N#`{eE0V5k%o$=i(k9I z`y3fPA|r^et`-ni#d=2;5})l55ZA=|Mm{HAbuYZ{5bGEDf%rx^zdV;QAhPE@nV#ul zS6BF6X6%tjgRRKV!TPdZY*3^daq@Op|HlSLE+~fgt06z{jSY#|@2mV!+#xnJQbX|+ zaeEg0K0h|hmp{Yf>6iBbj&~awXPH04W254X`IGE(KPE1h?u#`~iL-Q{78@UDbRUgm zs`y}gcq*0=nTi~4q0WmkBeRHm!G7$FSY~9t;_2acdO>>x-b(zD;_S#N#aqOKu>M_A zJU60$Ak)7^^z9|<%Y;Z}#nZ*-u>Z3tHX+hP@f5`?V-q8pE^g5L>BwBglSS9!u;0@B z85MuL@w6L|8xdax=buvEg7`Se?Me&*~lsv?~cui>~Zn_*b9-wZCJnLdEl|w zi;;#dJ`-CIY3btgu|<)Gh~;_Vy4aG)NEavTFGpf7-V|FJdBMdW#a@ZL;^N)06_HO} zyg#-w@`sC$#a@rp`UvAE!#fjuGjh9&&&S@1^dOe!mFr?}M+Un%S>F&D=i*JVjgc8H z{wVfNWTA_9$MPZ{xOjhTOXL?9AB(*ox#?q!j|}fj?4w8{7oU%P66r`R?-#C%eH!WK z;$(eCWR#0H#dby}x%i{luE-o0?~d(>Y;y7b*cXvgEI9_FZJAi+9I5_`!RC; zc8reJ-`FHdzYAztYd$4TZSD8zRy8s(KuQFE=Z~tA&HS;avqrgT_&D=zs4(r+dMRfB6 z;)%e?x^8|(T<qh=d=cC1t$1>H2C&i7HV2}<91Rg>E)C5P!2nz6V&-+(x_)`p;gOwajl7PZ2BN_dn;0)HZ)1`4Qs4F6rMC z@f!Fq<&_jq7K>H>*EXjTr$T-w>vhZn#0{W)ll8jhS>i_&*E5UkR{1Xq!TP0d&-&*5 zis60%oR8Mh8b(tW04+%FoFdAs>4%GLTMJF|uP z1L?1NQI4PYnCDPGjK7z^$85Am#xGlaPx{Hsd(1(5k*|UI*woBcX4NkwZxK(zc>7uN zR%Tn`Nx%o2w>Fm$zXj{t&zj$7ZX;d~{6q8hX6b#H{+Ho?)GH%9n&TDoda;w4<>M!P zJk7_meZ0WMw&-N8LJm)d^WOPMoy~QMqv2)1w&-kb_ULypcalEt&vrGxBz@d(?rMJH z(hrDk=5ZhY>|z__316!G3-?svcQ=bDj)osq;deJ}l&kWwMGy0O7nc=1&D!Mtm+JEV zY;W^ca-RV29l`fd%{xi{4BQ_)B>I@GNxl$R2kwY+TE9MM_HwZ<9yEuN`zI^P^+8{A zG`W8cSO-pb=?BC^X0D6t1J5A$>EmR5>}Sp)_fG=X7yZn|E`8XMHdng%`ON<2Iv3B& z9AIv7@siAe=9kFf>!5wTmidTzL~%4+75I7J<0Q`pelv5B`7_C<1J48g1Lc(d!Djd? zRUV3;&m3$bNG*%x04*hA8y`5atwdCc|Xc2{1Ik1 z7u#Zl`3Sksy-k+yNOJ_ap9*Y?k>)s;en5;eGkrYK$5UNwgZ@8|!}GSt`u~{uvf^lX z6|gNHGgrCv;l)LBosaWeY=e9Ua`;Wy-<_Y7Z0=JW4Q~OqMY4Isr4J`;<`1MV_j~3i zjWN#<%l#f3pl8e=6fFfY;(6qKgZnf(a$lzb?L*4nC3|r+rWR2 z`_piKK0j%Kne??Rk7zgyzyGnt1XEMY{q^JK)h@Qh<7NfqFuH%jtmbk5gjv_64?8sG zZ7#NfTYKC;X?F0qf70yf(uW%eW`7?K_3>yQr};R?$4~oshL7j?c#)5n`*^jFH@Mh_ z__PHJhe-K9%zh+K1GdFK%%Lb(`C*IsW-96Th56(Bqy=U+=?@3C#RBtbkN!gQ z1s5MqT4b&w_j0}f-`g?Qk$X8`fbZ>?n@N6B#pfmSBa&ZG@p;MIjdCiVm(Be?KI-EW zK0fPXaY*L(6!9a>$M4e7|p%xz;0p-OMBTFJZ`rtk=ziBQicQF+h|0 ztIdsyxxZgyZY6ntINWMbc#YZZ8>ha)49x87<3WmJ;w$jKLE$&e2_E@cb27VHkz9~;k{#i z>Iv^1b1#MWHiXx#;ydOEm)sWbn7=FL`;qUO*Bo{7!_0cutge{LE6;4_lEaIlW*5aV zab00p5B1422YBS0&0!=zSqOd)lC{}P^~m2dvq^qWLAcLd#dT>ofBy zk9>zYljLh5y>+v8nEH24cmc7~EUq{v?uGO=$=YdFRm}Bams!uFzsqbw`Xdryze(&e zTPWuB>29+xF|JSdm``}z?=z?Pc$VUrC=c;(+Hap({hu;^F|ioxCw%|fY^Ipo!&hc2 zlFx?t-j(&0xzZ#5+FVQWtBT0_|FyYGF{kH%dC;SO!2FK%KT44L2h8t@Yg>{Jn#YOT zL$n$cK4hNsxIb+E;$!hW#(xW>r$OPvW-rAY|0CuAl4JWjVs`q$T^`?me6%2b&-;6` zFEM`4`+IY+;_NVfPy7dS6fu5J{0B3YcnO?W9TLaQY~uHTb>OEJ^Y_G0n6rrSd*Ua| zmx%Fu;U~@2#Q44Nljdf{{Jqyx=9h}Gd>+XVNYe=?0z(tT7cYzOzry8LW5RGcR^!hX|>J`nT{M@kuJyU-^``Nay>RK>o;?i;%Hc|$3_9atvD~R9rQD@&YL?GXA2YF z=bDgp!Tg2f_W{2(;1AV5L;4bLZ4R@|tUpctN2mUb$_iLFE6#(vhtj{GbvJQK(4UFz73h>yTpZpUPPOR2< z1%!AztBiGq_(SMF-p?v${Z8B*o4wHKb%$Rz=Guo&^2N zuB=K{N#Y*YNUm(%pqRt2V$~pdI`r=i3RkiA5TA$fU~S18twHCU{0NAu)=0%M5rO`8 zZON)ulV9EPo2(X!V*>l*o2*faIsMhFs7Jq=HG%Y3LaG`Ru4X+!{E-?@s#{Nb+}E(4 z^|-HLy-51qA%8?x4eKS3{1$5!$uT~+SQXE^<6G0Jt{CHcyjxAHokw2F>gJL+C|t{W z>Vn&SZEL3DnCPYQueMeCcO?(^%#rP>j#WuzDf0Mr83l$j=sOU={sC#)tF2p>>U7 zF8_vB8O1U2BFta+XEn5{xa5iAR_kuXJilvfwIaUrKDoYYY%Ts%`hT$C)wc)4v8=|{ z3gkdjHQ#S+ttR=aAU^~88%h3D0Nxu0{i-m#mG`Of{ny4;EyWz)##R%>9N)%P3&k-p z49a^yxF6_}CyFLku40aFQ)?nI#uS{+G_@oj4LB00vlskMq2 zgmzH*Gl&2x3!*B%<;d^de-G0 zULdeuR1E7Sh*jC_`>Z7{dFAYO)*8h;ez&)_DvpZR;P<-oliFLSi02U72{L^=ez&)- zR?Oq|1J?D#I9_+Ksww99b+Q^L=KSqsHB%fD|AhH*jqFZVOP9QEc4uq6;-i7naGo%_ zb60CI%7qEBvWPQaJy|NNuT@qthu6=lrkK;y&#FWEw?chsmEF&3Ol(4b+^9@{ z>ptR7p}%ibW`Na~_$BD?88Hbdzen~E>##?EsCCk# zKh*k#^n>94L)k;EKZy+(?*?TLvy3Fn-)kWKBeEa0$|=V5jm;iz)pv0~jI^4Pei2A- zsjQJ!8<%`+_G8vVC|CXG_VUSA2I;56eo49EDb{qwoIm5Nc`o-bL$qEZ{bwM38QJ5k zl^*@^)&`IMc;)4aTKTNkK zk$Zd}GTmB9jQ*!vn~Bl?bnA1)oPX)oVZ~e@)2;6n$HWvEMkZvZTjz-HFDf}|B^Jc; z{tS!>*%?-Z_!!I=CuGO0>lL$qnN~%T!^@Z;&$Q~hZ|gf zk)3Oeap}*`e!`lHER4DE`_Jr&mMA3S1Mh*%k^Gc3jQFhLN!C{4eTtv4>J^syyq=kA zbyAG)o3F{9YAscKFkr%XxE}aTVjN$lT3Zxz{!O+1ME5Gb?}L8DBGP|M|IX|gR$b)q zC;Mdjp0%1Q#{Ihk+0R<*6tjQNK`WAfTOga^z2xlYtevEf{Ja$?is>y4tFt@rnq}#V zIlpIH#eG~_aZI#^_O`gnY^$1L4sVXtz@tCMYDW5>L;0W0o@2Ent_SUDah17NN0*jY=1>_ z7F&B1bNg9reWMuj@AvG*)(Mw>Le3KFtVe%|6*6S_tiQx6;^LAyFIi<3^Y=-XTGfg1 zdjLzVTaeZF0M?16R()dpJ=`l+6XI81l;78S#cDw;@6RtOzRX%dEZ_gXA!oVOBqHN; zG$89o)tpzY_KJD__NvuYF_-tNR)57@UtYC_DvpU17~g7x`{Be5p}p45dCkfu{uOFw z?VQ)GXNf<9@vU~wYHK0!To~VK=e%jHB5rrBHpN)P4TM^>!-z4 zKDCZ|4q4}s3m$9+zjqghtdK3^bCA{thpa-#G#(!E)emN@ zUpE&!60Z-kehkd{CeE^cjLJD?U9J4frtb}XXI+o1`u8C%zO!y}ai13dv>Lj2b&c<> zPA;BaU+S|E1k546JvjI(n=c57xIA^sY#{TP9>waR{UwxANtMw%@ey`*=tNbe7cMW{*}J6CoI{jB>)xAWne!%Gn|T`*D|kq6pec z6!UsCWG^Mg`WCWRlu-Fsa43uy^OHjM8f2<(A$tSKasCyux03uA%olQULUyf^$~~>0 zLv|y@vGB_7@O@U0Hz(c#JRSI6;_jv3_wG3f_5;NIfENMxAP&O%eq~Og-H*61@EYKu zin+Zd*`r-N^p+$$UGY&h{tXNju%A@S<6i-L4$9U08}P!Ky_6X9qk#P;>Qnj)*dHq9 z@Cw*F6~{yx%rDlKEMN~PCDR`hbz!}=wq)2Ye!XPYFKCxm4Er0f{%TOTpk2=+FJw0% z`OWgaeBnZNC&gU;h3&o`{lfMj(tjE%LxaMF?IAAtmt%_9Pr4XRyzOZ|o=xt*Q|A@B zy$y{UU1+a?sMX!j+q z3EZY@MSHN~?C|?{$^E@b_9&9?1x^%|>~xf?{{8Em%C=Tk#-GpMtJ=jC<9z*xoT~Ox zlH+;&P4*7OTwc}euN8B7RkOcU9257!{Q0MxYW7KD9qMbNGS%&1Ij4ObPO4!?6k~Wv zxwk+oai2HWB*yV9y+G|a<9V~gay%=VTi0&j@*jTjV>eSA6LX=yrWdGZxAn<8k$g3* zf2F*a;yk+lQP1wLnBOm`XFsZVi@^6L>e(X|bAHsf(>?C%+c_Th_3ddM_x0_W9`_CG z`5yNT?3Wc|{@S8}{kq3}L;F*Yej|I2N57GM%AZ{H@3?u=JefW z-{#S8V&Cb}Z({fG=r^^~J^Ib;9L1AGN%;L%Exnn&&g1@e`=G~tbNh^9tPjO<@30Hp zAme*9(6^TmrE~AHODX31*21pf<7$dyVi5Gt4GOog8+qh++s#SdrGyX_bMLl~5U&F6 zm41(1zk*Xg;rpC+Q^hgy8_4VDwzAtO=JLMR?&{IM*M5-nlc2x4JNI7u5#mm;f7CIz zwLOBkFU-Vxh}*&XqJM5%JDs>0tS^S;-eG53CZJMp&=o>A@rd!J&?uMYNMl79y6VOnkn`DU#ej{=O(kr>D;)68*=xodealY5to~szsn+X1IAUV#ryV!Ze7{4xdc2yZ44!?{2 z6f%Y1#hylT48My#m*g0J7yB47hTp|LrI^F-V(T|4|LOawUF}xH7=BlKRyBA2bhXzg z=J<5AHzHGfy4vrN9OKi~-cE9iPglE9bqo*V)75USn9H}T-BvNzhpu)f#WArK=933f zyV?&CFM#?xEw`JU>~Y`S&h)tNZcilrFCiC~)rHIifg^|tGg9P_WYolcDT*W1oj%=y>bo~oGhueUu*aZGN1ipm3f+jEHJGHzXN zAA2!z7POx&xewZ}y4-Ki?Q6f|;(+L9ZzKKY>in^vUAv}CABWf9ZlX9Qsw#PZ`#Fz% zfIW}o-yfc=3-KG5Dt@*--#cc9&=mfQb_?Ouvw;%k_ntrHL1>pb#D>^zeHL;3%R zz1JfjWFH~0$RLoHKF-F)s&^`G-(%wgm{*SbeAglS%p4?IPPm0<9 z$Lv5I8GrVFv|U6o`=4yrQJfuqy(iqK5@YNZ$T+{s9b@-&@v+=-c7}^j<)+%p731%T zW@M+^J6(J(H)dZ@jO&>K6Ef{Jb!B{bJ(Fo~R?Pb!nf4xHY(JTH*?Lm{XaM&IGws_H zbA8UV?@`S4E7NYTI3~7%tHo6^?Ouux790Tk5k)6t+sVY(ezNT;$N@{8$7b8piLt-U zwr3LKd2F`*oMH|y+n%SGC@$yU>jqkTYl*_pri?YTVJ-tRxpQ&`UF^V|E~;dq)D zpRf4c`{y|<|7(Ae;{6iqb9}u1IrE>lj$-+uK9@^^;BsR*m(Txc`|srCVyK_iM`(5_ z?KXp=^J~ahpM&C5by<%?@Vz8ypFs2R#Ea(7oL}chNIkBHPCfD3Cy3$jhM|my-yN2Z zQ$H8MTZvb$mlSUo+#dfMrVa-NuVmvoV{bir-cZkWE|$;bmnA+MzJowQtXg7{=V%CCbvt?qT9-Wpgui4!j5gATM%<}CA zc$NaY*wvYdHzWm)DWc~fSJ#f4GU)Q()+uQZ!+5_hg&!hb5;c*A` zoc`Hs|G(c4zS8pajtfqFz2m|Eemvpv_wW40@zh%`|9SuPcmB$Jb>?+{=kJxxFTDBm zcmII>J?~FA`&<5T;P3udwm0V-lgGpV*81xI_Wb2}gx|#ds(^U4vuuAskvbRi$Yar+vyuY~?O`%}12#O_0MUXl>c56lsi`|+NkzFf?^@Tu=U0llMn?zt8V}K73O{rk_pTC(LjEl=nY*zm)e!nR)-T7`#O! z)77)HOrLY^#`UwUI?o6R)PvteQ9baxL%pC!PwxA_3H$!iU%ubO>H7EB@dw)#bAG0? zzlq`Hrxy@kjKp{@X%D}&am8D*j6cVl!)24l12lsow>;`kQSHc?Z?iq?p`7QFY&!1! zdfd-(JwY=V-$!R2P5bQ3cl-FjK};vhuk$hPm&5Oq!JWJpChMaPza!>-XLk1^^;^t^ z>7E-i*Hh-YqrKsBy=6IaNDNHBGQB5hf86iB9o6G2wZG8mQsF^*m3@ME;VdzN##vHibma{sb)1BRb@qii=p!OZhy@mC$g_j_z$VWe=o{9&XPJFtT#Q5R358r<#e;)i0{eLYN%?Y2O znFntyN&l`izgUm^ZOk8z2b}ZJ`5@cxBSw23-yQu+%M-*5)gL5^QQydTCW-ey!T7R1 z_h-zLm0n0_aPA$1^gOHXYX*e2NV*G(vsI)S5;l~NOz(a9*ryGaa_kRfe{yIU>a)E& z99>U{%k!&Wi)mcJ_7oJzA<be3bcgY4=yAC-dj2m(U;d*BR%YQvGmHG&N=Y3sHO%D1M3JeU(1} zQKCE6XG~B2@kDu0JPmJFNdFT43-Ood-udOn&Ym(|-gxVJVm!T^Zc`H1eFa>DT7)m0V0p!k!{Z`mEr6F46o|JeSq-ZEVY;%2J%Cti{4)Gub#3tgm# z_5smMonLc3cUM5H|0kIlB0c4ysy?T>@TcOzL4(OADG__ z^2RTF56ZE9B#6>#oJqV$5B+icU8&XyA+dj+bPw)SJT7)uneKCNx{yNx-6xRyL~@^W zQMgwYjuS78Pv|0luv{*-_vZ7(`NR3&nC2f3Q9r`>On4sTXHIWf_!hj(e}BGXxEOD_ z?x?T&M^1;|zQ}Yc(r!&9w{IAo^{&TwgoL{`y zp6?g>^Ns!Uo8EQ<^G0e1@%1sW-yO5xy`NbR+lf;j-5i8|p5xEyMKc)R=fQP8x2ucW z59@P#WdHuxCa2G921WZqSl{xqf3TNZ9u!lC%la4+kIa&0g3o(`yp95I7|W9UoyMWx_eyy{)S>wln!)(~|G%2wm-CP1$!gtmaX;V>kNbraH8GuD zGblc&EA62?C_R4n|0#3+cWZ#*d;0@tzRB~>um2(QGZ^1LrBi?=8)j~?3cDrxZ?cfcyK;(zVJG^aTUx*PB-hZJB~l=vFX=m zcat|`e!th%>o4oGf0(Y2=uG>doK9xeXOsQs@emo-0q10RPQCT|59{y~@*@qYjHOHdEP4~gk& z|0zLmJa}DxO11Zp8ZVVURiry7-~I98b^KrFcR(!s&h1Zr`wRK+8(hwRf4#u;I_Dmk z-o$u%IY01RBow#DeBkuv7f+T4#E#vVuiXCrI-dEbkL!iEUR@l%KmYR!kK3{Tcb0#u z@=X*6;M>5mT#K*9_}5nFP`uvY{eCzPRrNhT`vm&^ChSY9eOl+dp68GFyGG}{pY5xt zeW##W&&zr80k}6K>)X53o~tVVV84s}<@qFXD6Yr;NcXb6R=Gx|D?#MYe$?gUI4^{8 zozjo`@KuVaj88y}pzzr|QAUOn5QAVJPVUDos(5K;fAHKeNcjWtqy09H7v7hE`GopC zDxA-ql>Q}B`%8-do|W}^9*gc0;=ix-rXxhZ^GZ_9eductlob#3a z-}}6D@3>=o&JS+CDIa_Fyzxw=^SPw>c_p70ayz@6{=e!!-v_!<|NZ6RjZZ-E{vh99 zx{vB3-(UJq<(!XKYR;$d*~IXjczW%FBENWFX?XeR@jmNEYQDks?D8h-f1~y@0s_sT zs7U*7e%`qd>le!}m*4*Q-p~=-F`7XNFCe@eiidwWdyJ2xkNF#np9}EshB@DPeR8FG z`K6EV-EsN)(|M)L_116t-T$ZI!Z|~DyY51(yppEP|LgM44vj0h-cqfW) z>D~&Cg8`B|`(?NuaOQuU4sW_bqCTBZaQ^(CHaXqi@^Q)qjo-9?r*TpOo*roL2jiyq}8eE?GVt?v>^v-^c9- zZ-UDBq8Sw3dU!cZ_qODHP<4;h#d3ax_qsyy`+44ca`Nj^`6}4N>tmmIl#7v$PG$m|cMANG|JvHoNF6GUZL*UI%V z=UdAK(w(!9i}#KK{ zpy={~H1jXlE7jwC`fr*3bYGgCeC7U?^AY!LopGkxtC-IG?EU>N`j;Tkop)WP>jgx4 zm45+Rukn6{(|_YS%;|40K%~e+v5&>i0>Z_&a;8efHSy0)p+) zKZp0IeGSJww^KfU|G%AI{}$`_uF;q;_#U0p-nkt7`N-!2twy5zlJt8j)@Rf2&Rrkm zIL_?%$Itos$M$SqD!fb8I}VrKvH7pM_xp1x_wM-$>+?LHO|<8G)fcyKzK80zq%jCWi-A0 zrW~hP&gH<&rr&-)ox`Hs`CS#K%O5_+i_O2%yHq~2KATtSKkKuZpF5WOO}{>$-{3yF z)9?B9*dM>WOusvQEMHnxmQP4DbJc6vZdlIw=6BEbe-)m)pZQnav%h}RA1}W=KlZ!x za!3S|W&2DJXGdc@{ZHloczFH0IDh?e&fiPfyUUUFE*IYA@?W}_=Zw6s<`38Jzn{4u z;`sPY)<=8pZ$q?hg0I`w#(sjs9Z&l~e9p=4{pRKTlm5znoBg{|_ne+9)#v#0`oSMw ze(}sN9Dlg1m!Ch<{^ELZaXw$pAC~*W_w$wN`Q0(Id%pMhFzs^=Zz$_Qg7}_(UxM~Q zf%c)e{qgnKPT9Zw@`cOga(Wye)@$UsPkV7bvcIV3)UW*NYku+LaKEB`2Q=Y#Txx&T znHS{ep5x(fH=GVOFXukLddu$F+Yc8?XG`aeUci|Cs&$aeUcieT=Wu zZ?Ze-kGr3%R7{pXuA4STy^hD`Tm?- zpGf!ey==Kp!|$71?%iyTzu){^$9UkoCh*RX!y33Z2vVPUb)yK<8`r|{bAD| zj-Q`U;qtpX0m0lujsF2L&0{)xC9ae4;qz#?$9GP~2Yyda_rKrnjPXU&sgIZDfMETS z>OKtL%i-UB^M0*U4qP76l;v;(?IW}O3S#_yWI$Zn42scXFy1JKlLz%(DY#z?zr&Qj zTWE`WQ4 zQvR%}2LT~j<~wuE{TPoG%h8Of--|lm(L&~a)46AZ^JZ^6xF3@KW4l7RyI=CQZ|8S9 zoIfZJ3EZbj5Qk~M_dk{6d**PCr1ru1y{iD-%LPQsb9EM{dA|l zs~U%c;@-+wPRw{-9}<|~3G|(VL=h&vw0&4^C20Q+-NAeM>Rc|7^poQH{QEN03z6Q% z{IId(%r_~Qro4xz zSiO4}6!pd-pG!eAUQg+K?9?E)eL$R3{Vx1I66EszqP^<(CtObhqG{m(IDnWa6UHtw zxu3XHIZ1s^m;e1FcE|n8Yjl5*?O9*4ySzDG9VtFv6_xP{2tQ-K!a3DwnNI#4Swj50 z%q^GWFyHU^Q}yFcesaFD$?cc<@pS1wrqk^YmOG~(&*|j7&2n_^dTDnF;tje-%=hr{ zTocLz&M{;-`7x&l;}7Xk{Vk?fp5Jn~m(r8*x^T11=S0z_lME$EtR64J3y4@MhKmgE zYN&gc{EiyDW8uj!Cm%Sxf$8X8mV-Ngy=wy z`oEzM)(3t+ipzIQQ+v_#|(UX8!et<8e8& z8>Q15|Dbq8{l3ca|EDi8JTzf^QTgJuSI(dOOkUUEx+Nfx17b}tOc$GJH6#Z`k6XO< zH`0BHOPkL3EI54D&a(zSo}1Hz-(dZ5_-9USD8&`0wdB`#@Y?UVW#& zdF{a;`aKWZUrX~kWXE58uY}{BK<|t=a(;KF57iI$5A7YjY7b+*;C&6&`v}HESzp+G z$yYLefCW#M%_ zCrTgZGnzqB?W~mZy^Nr+)%-Ff=BRWeh(5}^yd2kYLGj8v(!Y>cuI4#T`3;8OY0CKV zdy5;(Vz}JSmi0vD@fl4X-*~;?u)jUBJAb?M`^)a!~)ww9k0gxMuvSU_4~#^{QE`xPA|Xjz$UwA|JcOeN%QZk1N1ITP+)(F@7T%p zKaWrUs{S|X9%)c~-v#5%=Xd`2`{Rf2(_DExxSiDd%$rXbZcwD9OZ$*$H6G=hPi%60 zIG&t8PpW%#9DjJ%SNW3=_s5$bunwW{`S;1}KbIT-p6(F6d&=SDXJS5FTrT`ObI#8` zYMub^`q1x^CCmEH%;DB3gXw4Hcrf$tu>ASY;U&_2$bD))1pTVIZ|VGgJHK@J?J+#( zJ)#%sck}%F<^wbjU_H6NAp7eNdSLu{zrkBoB-?^P!kL`ok?@eK!MAlp0k3oA!f8Jn} zzx)fj^P4Px^i3&;`weSRZ=%u5b_truOLqVld4AWcWCb;(Y-pe0={W zD0-{;S%BUV3W{-`U^r6l-ha6i%Xu7!$L*2t&-?W+7oXqg_ZEIr?hD9qjK6D%`vfpg zT`0#l=X;l&p1+E}jITdlz0|rm|90uGCwz}(75zTpKV>dI^d}_P-_*IX9C&~D;&nI2 z>yh19UT6lzFA-$^J^j8WSTDF==Y1A-&*nZ=AMxBqmOHLboO2v5U$lq#Ou%s1y;na! z_W^(Cy zaCP68_V9aqWnNr=_k4`k%XlF>=1k>2Ad=PjBJ8`sev*tIudgv5;eAP!e)#?l?Z;mC z5&Ac{G3Ga)U;D=cv=53y>f8n12cU5U&$*p`{B%PsKQ?Qr-xF~8^S(IjLp~|wm6@#-Jf$nZndj^VtO#-($uF|YxBKab3I)LwQ{dusHDqq*&jG3 z`2yLmm!CbiPpl_S`@1wd-zj4GrTtA1jpxXCbKuMKmGjlTWvc3BAnZx1y zLiX!B@42)8etoq6f7m*G;UNU(jU_cPi88aXO6p^$FVmp&Wbd;WoVik?; zq?xv+Nn26cf<`-IqBU*QLeYv~nK2_0i6|Piv{5G{t;R#GRC;`A>X{*FYm|x{(NjIN zy}xIz-!3KR@bTVz?)~fDKW2aPysT%v?zPumduPVY>#(Ip^t$#)I;Whc|IDsUzJbhYo{C@J-;4lr(Rw!leH4prOZAR-V>+(-E;nH{Y(6Ry0QMwb@xR* z9-a5bj>L1Ww=e7K`4PQS?h*a`%caWB{IBb2zUSn~K8bT5@WYqcPQ0IS{2ZF+3rFS~ zNAK{gO(wl_-Z=WPbk4&U_4>}m?{#+0bGQ07_e(d=Fzse!TRp_*dZL$g{%kyllXXlr zpT~{O=PN&!^0?G~uJ8U)Ezmww7d7eJDo&LN1 zX8zCo$bI|y>_D$<+k#=>;H#KeayMHc3OY8Rl@Ow6#-<|T0 zrPB|)?=$KCMe|6yqxJayw5N>UqrCt7nI_I7P27)661!X7t!YtjDN~Ol6rd=I3H z&s&b@o#z{lpCdcpU-Jw7f5iVe-O>J*`szvM{CD&Yzx$>srxR~%eNBG&9(w(L<+1BK zHl6vMO{ZKIe_zv)ZGLZ)`>5Z+lm2n`-JItud)WU^vA@U4<~<)ghrszQz#TIL|$fmjB-wf6n#bze{J| z&9vjOe$Uu>PuTUJ<_DABKBnHpJ@Pxb&Ux>oGxj6r|IzyY^>pWc+00+gxNznz=Q`&+ zPjm7;7Md5!9{EmF_M3e4m(#S65$c~@G|5g7K?`xd&zu94W*nSBqJx?SJ@9Ld*-mq;HS&lv}X_&@G%9Bp^f9sRqSSU+?8IO`?nJ;25K z{Z1F3r(4R%_`a|&nDRQ`%>y*ctug1#na$UQX&rzIur*Dwz&F_~U`8{!GUU1HT zM?QLRC+)D$hy{f|HEllho#4xesttx(YfzF7M=e8pXKLAO?&)Ae;=Sz zPKQUHe;xgt{6E`G`yUy&ok{5U$}=Gz`~ z{yOm-y)zyins~TQ2TeOTe#bh`k2S8G@3Ah@_gj`4`#t^JZ!__arFZhbko&G5_kEuK zr~QuaHRZD+rrn(TP^Z6+9{)$q3#Z(cUU#@u^dl3;w9}FQ{~9X~pJ@C{zDL^s<78(( zJk~gH=253yWA`_lapBb0DM!OAraW736}r@}TZ}w*-W_Xq-p5^`*JHLi^D&do`M+_e z9L~6!bBeK>?@hDRC7d5Wj!ygC-7o3!JC?gl97k{7o5JrU|MnmCN8ST4`|AIDvb2Ya zNnGqZGQPL34qNAkOQf#mD{`~UHb zo&TJ5i8DWrtDc>kr*J>~6Qq${f6v$GkI2sdDLBtDoqYah^s>+9_VH>W_b;a0W8)m_ym9(X z9VhAVT$S&$IoEBcp3XRNg7DQaO!(3I_HsNch+&ve!L?)-!_uv5)gJ_qEQv zVDozE%#TO@uhqnHsXKY!?#N@W-_ChH_PXh`*VyaaKhAqT6~H&O&Q;^o4m@+4hED*W zxoU#)TN7}cpe$>?nylulAyuVzyU)VkXW{QfYLco|8hX-Ds^=r>hp_aV6D=b+dXGACIdQYz5oYo7OFAzjZre-mYG? z*CE~y)rfr`KAY8$ol<-88M4#h{rEhfKSOw3Y_Gi)`iH@X!R_F7@KMBh6mcF!-j74~ zICM`S))R>PB>sL1x}ShM@#)3iPvi59{tVgu@cRYy&q013pBM1=OW^PHXUKj797f!? zR2M$?x!yuO-&UVfZ-f7aJP)gvY-P<-w)J&oIkb^&~#q@mXmFkS1uoY6q>HU1_DO5D#=PG=zwyySE z4K~5nY`vkHt$p~^c~)9+&$ZTS&#+aheh>QreBQ<9ebng#e0;8Qd`9f)u9<4OYo#^a zbuzdEpBt@{pgRe=lb|~Zx|5&_x<;&%U2j?yuKm_2E{q{p+I1H63td;Jh45L3zt3@f zUY&z@`aCe072C$?&6V->B3zg+M^aZ8D-~}6$S^|!HR;i`nZ-1xM#o*so zD|I>e2%Zkdz!`Y^@@nwkPf+UX;C5WaR)KF!R_c22G{i}O-SE2=yby2ubbzI}imwA- zN4kyRTBJ*ZeMt8p#+j7s2{owcAawi7OIT#RW}AK*)kOU%TW+JDPc9@Qn&>CW%P6m)Tu(Mqzmi--CTV|-H1%3z zb+cT( z`-wj*w8mcRJJ>Dt*?X;}SOt{WN$+Od^-qNS)O|{w2sYtY?N0$8PUE}6!Rc7#EdXbr z|1Gswj}s3l`Cn!a>HHh*5o`EzY4;IJ-K*3M(3}3)!Te1+ORd%Ao2WK;S7CQPVee=B zLskvSv)MjuU5;|>Q-`e=QLY0j?L7&1*FU$@-V^a(fiKt_yyt&Ksn_f-?~ia-atQW+ z!d>Qm*x#IIsSl7|>hE>C^|-N=+hyumOqRP$eTrSCzB|1#-mi4yx`1(VKuvR*@~6EI z;oE{1*lVod%}T9zoA~#-^J>CnN_B$9o>x!6&!a*vQ{Irvls{;VVs-jcx8J$~Ul&?UNF4694&y@+?9>|J>Wne(iQm zz&LopYsS+s?5E=HH3Q1|@>j47@qNC7EWgQrqUzDdVVCn|r*A~((`XMVa~=*U zGd@R{?|4hv86#Tv{{hTcGQLNBQQbcn@h)?on0n4D*y)vddU1i}Gw1zIugudC=w*Ih z0?NGn8Bpfsi$R%}F9T&>t^;LWt_N%JbmhyS%*WS&G9P~vl==Ajg2SxOVb?8K<$K+S z*)M*b??mOcKZUn~eD-*sly_4>v2LFiyv4To`|K&MQ9O0Zc!zl24Y_2VdA?xC#ddI+ z`KH`9^GwJ#<1%C~-7fis>?n4r4ycg5<8eddH&^HLj%U1YI_86^{_(!Q;Vq@J{UKWz z^^bDg8BSD&pY>PS=KNYr){;xf<@Wb~rPLOG9T{gnqwe=klKE+hZwa1uWxQq_410Sm zvgAH8JxHC z3RgMx(*6F9C#c)`9nTu=_vykU`y=W4+_Or3wy?`}$wx|ET6oZ!dM4fwD>$greID}9 zaQ=J+oC3e=3R~E&ZMGRl9n5E~s|LHC4-`gxx4f>@AmW`dTk4r~sL#t+3fH(IIPdl z-u_~7qqPR}?^;hU{d$=HTGu4B|2K}922LIK+uXv5G_b(_{aii-F*e9w+*IVsMy;&TzWFGyX zIO#imt5W{~E_qm~zZIM7*7y>)+gull^*RLqqvicM%D1q@%#R*b?l$M~G;RM{$*5kh ztt%;aoAx;9lI#2-bx>bF4yn8{>DT&BLA@VGoL?c{PfFJ4@i$Sev6^sQ-e0o8H~Kdz z=LX-W$OCxm@83$yJpJdAVz+ZWmh%4%^6B^Dyf1yt`^I#ojst%i!<+i0X`jfGL6Iky zntFvw8$G{mRqBG$kS_O%(mk$i)0B#rroF#}-&ae!v>xY?H5K#DHSja*m$`1a?l;<1 zZgbraTC;GTJX%`iHtU&g&UbU&=DOR>>)m3V?tofMeV6ag%PsY*(k|aJ^!u+6->jp| z_38z0$Zh7UD)w`&+ngVkU5{Na-?+85tS5@cE!E{bo(zmz&T>~-GcfLM8)xzSsMF<7 zjf=DV%`AU2%e~g_#r!phxIf$>jI*3;Z5byYA{cWYH%KChhalZZB+vnT+1&ph* zLCS-^2eY{TKo)+nY^{B=zW)f?avoq^?|UGvR5R=fl|6% z2QBH(M@xfxJ`>7#SyvLYdNJ)qoFe}?PETV;8lxem3kJ}quD z54N~p$GGsQh4z-nCzMxfx>+S;V0|c-> z{NDJW9{)c8a@`iYxgxqG`FsSFrvnRB%9D7`EH_CW2JR=V}fL*=H%n%Q(mj{ zov8fo^KQdGk{#!Fn{niKugCmusc!aLvoifUq|Ch1!}9gApL^)%w`BeH<>UO;*(;R# z+Hs@q-^{=_(i}IS^LfWJ;FfhliM_Bu?x*fKZa3?__wO|Avsa&wzdUY;^TH6%x4k^? zM>t-RUb#L@F5m0^4az&ce80O1Zx_rjKcvT3P5ExN`)-zZH|MFtJkQ-8Gfy36{N3!A z-5j6A9@Bo20=X`%F0(xE<2)T-SniSeuF*5i!}}bMna|Ap`_+lvwv4CyCYF0leL^~p ztgCkZRH?p+<9&a^Izl)O>$~4focnjX%zN)m98zXISIqm+a^9B?>3*0$X-JQo5_?3M zd2lhySo!sFy_XA6Hxh?E`nf`QJX8gr1 z9#Ce!nOwd@$@$+kxkcCW1#gD!-OX`g?zi8W+{5sz0FIrej&owA?)=6=*V zq0zbu^YmIz3(vnnUMB|azm;O1JmC<_f0*TW>-)8L;D0C1w<}HvTHnL`)_lSaukhI^ zY423LU3J|FJAFH^k?U8N@2{6B)qaB6Z@3r!m*Q>56!=HzAA$Zo%oBa^m-~00Z>MkQ z5lPpg&(lUvvDchm#a`$98p8a20Qp^vd0$Ok>pN4glh*pC99CE_?et}EeW}9r^GBL_ z-dC*kUAPF>krBRbWj|12oyMF-Yx6%Q!2a_UYk-v-M4-F;Kbb$zjp^P2Od+-t^5 zx!0W6)4b-sC`6j|(}~m4-ap{{UOsIu+biw82<5qY+RB0hxDI`L+BB`ldX=2U_#yI; z-cP!3VwZ0Xu3r}yn7IAZ^7_91-V>^rZZYndWFM}U?PUDUo!-rPGVT2|+UMfw=6V^Q zzSL{Z`)1z9tvZSmvC}B?9nNRX>!%yuJbk(Mf}hBFk}<}By^g-2U6BGc;@65O1!_|zCqF#Fz$6*jr<+W zHrB&%qB0!z8eTu$@aE}t-e(X$51vf+qI`MS*P(ugrY8%|$5W_}rtfqgeiQS>i96k8 zqe@LUvCg|Wpj5A_^QKUqDJRC+uXWzfKtA=v=D*7U#O+lZ^nCe_r%m06bmt&_JJTPB zdQX9@z*E7WB7ce71^cCt7vR6J#6A@id#{dH=lula2FTOFpH8p0<$mSn6YK2*`hKe3 zzWX+mU)AgL_q!*?o&6;>iuKT)C$_2gm*5-JPwZej8BWB=H~npR{dB{dr?;@bH__j4 zqB0!z8eTu$@aE}l^e^Z9(!p`Lp5t;8$6bc!O*h-C$7|-*9DSLRI=H|Y@ z6yMYvWgn`Ta=GRU-g2K=w@#xz z`TbT4_VE@6_qhA-Q>rGoocS*InRy`OGwYaUy^cJ9eV9o&zt#nteP+I0?lbH7RZQ2y za;(za6I{hOe#_hkw6Rn!V__yaSi6<1$JM-ttq8iDt7ul{GC$Ciot?g z!uXH4iaiCt(d(5V)_;WM8Pfe(Vvni^_Q-iVs+wLF?q~ZSVml1!dd{CT;xp^yL+po9 zHT6qoKUVf(e_t`G{^?4QN7Yq$%jJWLg}m-B)6W|YS1i-}|E|z}mg6wT$$pM2bA4JA zI;`z0N)NMqjh<2LBVAB>P`ATpL$4K#d`|L->wUbAXCHz7F03CXsxDjBlRpo2*^@tQ zsh2|7m)8AbuEVcDzu|1T59!kPwU){&Suea1au=BKTU=nyKXZLMbB0-ee`-e1vT&W1 z`^0fr_X*#_dSijT!B>I(k_`64Z^b%mf!%10;C@!PUiWLGbv5>(7T7xruE4&~>KO+M z)_h*ppXR!H(~O-3J%?ofYG=WM6Hh1N~LBj)b~G+&DiPt z6!dQt=RMm`Rw_Fq?=kzFrX4#}c>&K~KJPI5zgUs^GFZ(Goh=rPYxrg(PX{{8%!mS5WGpJw{~593?2E}c1z*QN2k z&Mitc%?uTo^}}3!9vo0Xk00O0yTHyXnddgo%&R3>=WUsJSU-n4fO4IC1+Kd#YkjNV zlJbq}``xa|RRx=`!u9%;r0(yMQ+5`FdU3v-Qt3DMPnDi2kWYmC9NHmtO5SbSVMl@N zKb!^m&R20hp0dVb`?x(>x$hqDJMAf@&Oc=_`+0-+a*UINy|`c<`sapIY75N$Ky85w z>syf}Kd*anf!q()lyC5U_A7WUf%H%V~Z!YCHTV5dNW5@Az^snW46fd~w1=MF&+?s`bn|ZUEwfzNeGoQmXThp$T@e$YO zoczt7%HdxrhLSC?x=>D~f!{YmTfLvnT<;|{SLBP_>$ z=DVNe+2j7{eM)Vey;uAD>=DNITNmRz$#_@j`>>~Huke_0u+VdDRQ7x0`hL~x9`DhX1|a3eGAw7 zug%%xJ`3}~>;8Jz+c%l(zdVoK0{;fA8xp=l?8mfs2=n^kS!P^}udqB>wCli}djG&P zcn&zn?Kksku|9wQ2wBc6k21t_V87{ix8ID*MxN(xzv*AM-}I;3&-*29FR`cjO*^~& z<~fzwKf`+f`aZMB3NhYX#;ekN$1|7lR{Br95$mP7L%JSVPq7?}nXlP*@}D}Y_nEfN zo=ba`-<-dGs|od9cxuuk{pJdp=W#Wsu5_8WD_tdLSn7gP_qZ<6*Wda8;0 zP4F(X!)>Rw>-~#$kmY`1^QlAZFH^1+r9&L&i&>97?sIj&>~a61U9KNfTyf0Dr_Jf| zJdL;cet&A0=T7u%!q?^bEc+R+ncr#>e#2mQ$`H<76}AcX{HtZr*cR zmuD;H@6D$*>-LiI_1ssL+6n!$KUHe?X*)cr@0f8h2lLxLy#01p!pI}&cagt`c~a;` zI}3jiGF*cDc9D1Bx+xq)dH1Oes`3X)?+~2}HzfbLPubL_Q ze}npZRXA_Z^L3=FDl^xuz7q^5L*Iq_nv==Oc`dqL9@WPFpQiUaE}YjvIYfCq<++qM z`ENow@tn+m75ed-c^Pd_&g-UM75%C#S_J*4%xzoER}Z}v$J>2Z$zL5}+& zo;QbC4|ky{cX6RPe~Syvd0Jj5=l9*GPtz>1jr`Q<#adobYOZ@8Ra|J!@2GXrd9qG0 z>-#8fR;SID{zm`fThWT+rr($UU4P*MOZ_|aXM@%mOAF_K z#b+!ply%koNy`h(bE)Npa{ZqIy_q-b3eEMYuF&i+FE2FnU9)BSc@_6_n|WPd&T=m= zG}pamo&Pr^Kdc}AeZDErwlm^|($9_da`r>K&|L547RvlKf6^+=j^oYqiJ>#P{7?T* z)@xmUS)cnB7#5S`$w}l?GCm`y$k(F4tu-ow~)Wc z7h`^#sLVPM?+5#FW!}}_B0`nc#-+FvEEofnXwXj`V3eA3QOQG4%_3P{P zvkUxQKDY4x3-(cVL%vS4O{agybI`LD`yX#FIOth63-c?u?^)S*Iq10y`oApr(DU3C zma?mY-fLn?`Ku0kPWY=*p8W^H7Oh zTx8Cl;v#eYlv7_$eL3~hw0=ctsAwwgi@tegsAwYY*KYv_aGiTy%`GzXWfk)Y70G_g zvu7^W>9Bq%l5Yv#Z!a!N`Ql8Pa>iZGblsNmYjovteV%t#9rI~) zneiNF`I}k(RjmIi*1v^u&GQ@VKu~Vu`z$SduV@pWyLT|(jv{lv(otmkx1-3+PaQ1Z zc%R%K96oEjZyDyhi3{8KURfL8ms-zqt}l}7htFPLWahn1MdrSIeUVw`Z7MSRN9Mgb zOEq(UrT3GM6 z$L!O`^*R&x1x&Y_>Ehf!*~@y2_g#tmqTftxE82v0(I4jwQE#qyCzOpa|NV?}i2ZSh z{j;BO59@Z4=Y9t{qtYuY-Q; zS?*rmA8n#vhW%*fi9MgnXulPu%en8FDdv4;u{j@?7Mt<7LdR+RbT{Ly(*03l*KyqU zupN3m<~-=7JV1_cKHklEdyCEZ9x68T(@?RQpGN5Kw{FG#+V$ZfE#vtt+oiYI%p(J2 zFUvbn%=wjaFUvnb9%9_X%-3DQ@k5rEn0ihtG4ouggzG@&yU@E6^IOKd(0dN{P4=mU z-jiCCDvvDmO1U%M@)Fbk3%#;F6Z>O#3+wcGjpy{nd>%q6eiv8}-$#wce_vKh; zpAz}deJRe9d67m-Gik)xo z?519GOU$}zG3z_G#H_dGmYDvorG6>7(0g62h5DK2>mMSHnb!_E=Ks!Ggt zu&TsdFRMz-`;c=>%=&Jp&&Ik|-oKIOp=VUr>3m-B)|Hs~WQQkzpR5mdc>aXvp8N0| z@glv?GU&Mv?}@cmuXIU$JD3jNS;6*Bd%uqR^`BI~<`w&M)jKrrn~Eo%H_QI(N^O6= zdZ$72$c6xts3+GX(1@jE60N}A55-^mzeXQS(g{{F7s_>yT-NN z1HBo~acwWL@thRvH0+Oi{u-2hu-E)Mu+IHTP2SV-x>Db$S;cs(O61$$Zh|b|8rKTS ze`j@owZ-y2VhjCR=+{C&b02~B<9I6>jrO-IRL%&XIiI!gX^oUG^C*stcj>wRiH>${2d%tXqN zN*b{am{i-V_3z+4aM_<+G-Zu`AM?~&6Zf0Nd$`^-dVKf0OZL$g)ee-%I^clX&GpWp z?@{ba-dY>QlxeBQYNPh;xSssF*7Vm9XE*EH>@spQ-xD76e;?QReQHFPfBvNX ztjD2}2QjXHc)1Mgk3p8ECFuctmk zeTMoB^~I&;IbAvHIjz*}Z?_f9#`CeKmmJjXzj9Vv!3h{2uPljp443Kmb(&^1dg8c` zIH9c3Blp`MEeVwd(3?xnn_DXHi+<(2s#57+kE$w_|5^;qnx^BG*o#Ze{av}=Twlul z=K5mZlb3xrbAPzF)XZOQ|CccTY(LMuZ{BlWtuAkgy_DR<_h>VI^L}K;f7K}7r#x@D zw&S{AYW6egN}c@;Dc76l^>F`aWr5UVs5Y+4YvB!0^SzbRh4`FZ{mJ*T2XVU zxo>XPeovilcsE#u_1wSDU#0b4cXR1X$kWbWRm%4vOQnAJzX@&s;`xSOKi}N%V%{p1 z`liM;TV_3Jo<}6lZ!X*h{hjB>3!VF~Kh45(n)46x`ST91lzRc@GsC=oFXx%_&AdFm zqOH`#Yb%xcZ~yrnl-HA+ba_hbjOII@O{JzkHtF)-fPD{nK9liwQ|_j{r_{`gJ*8$o z>?t+#V^67>7khQPPpTa#HS^s-shR%5V-{4Zy z4^^e}G5?D^gn9AlB_sO2qr|Q%mHzo#w5oI#<|nL+OK-+?J}|pQ_e0qQEu|~4ul)3q zI(?s3Vz+So;adSz`Gp1e>CP7~D8PSO%JD4gWgHhFC*jy*OL=}`OL=;2u?}d>^IEf8Yc6t&&vLi;T<#X1I=7TL=9W^$ z-BPM%?Q@OxS*3ke!>3fWxI-6~s)YO7$jj}KI0YVwQ|!@o*P2>rurKG4(!T1E(hhkh z(`iS%Qsy_kx+T53CB4#;(|qC|@QG*0_v!@`)R(kowXbMtfx1oq-Jz{N@JWq! z`^uJrV>44gFbu(J%Ik zKJ1rz)%vAu=li8>OZ`%|xLfPB1|ik2!TS0fIU1M&(iwE zTHmWRS!hbtp9^nA*$x+eAIIB@?m+x^i(bL8rC3rWiX~cGu|&JASfX_l{}HJIB}4EJ zl^n!zR>`E#l&ZNUm7gh4vq~k^+)_z(da0zUDwR}cmFiJZD&;?{ebhMdagP(9f^p(g zJWhPd#z{@f$4M_t9w*~@+Bg}{fpIdPL*ryT?;R((ys9G%>ErojqFGudF)u2Un9Iu~ z=H+D)v#v~HuF^iMwNH!oNob!o?Q@&<=_r$Ye^4g*t}l~(?f2p*CXSDmEyl5@EP~@t%9h~RTXrFi*|Ljp94M3ae7@{b{Jp#E3LIZ5`vQ)8 z%i=h`S|;b+P+24X&Xs)~$7{w*?yJU2T~?2my0na!S|r9xd2ZAC4t@NAwyqy9H60l* zE%2t+@7MZw$4gxfYrUGFTYG|T?FqlT0KYaeVG_=cJdPOK$Gr$m<8hO4)+{Z*4!wC% z`D&D8=|qWn(L_nReB!I{Sv#>DsnYs5f0F#&g(JqyB=I~nNj(2NNpd+nNy@B_momGL z|H5aGYKr(bR!F`p_3`Nn(fmdqr-vpX&fqL5$-!CWDAkAfdxDxVTQr}TBc5yZ@d178 z(#NOuu}>d=iQ@z{eV$H*V}bf`z8t?+C7K)c@jiV_>tp>VM1Q+J?$F0R99?S9C!|e& z|4Fe%&XnWYg%an!MRM%Y$KUJYpBCMSRyw$7A5xujw$!WrY$?OU#S$mFSX$bS@(b{YDaf3cSppQ@M(nDZ6u%o(RfRcU~+^8Pi zJVH6(6S-@B4cM>#ytx+C`GC?M4dAYs^HT}Rty+$zQj|MEY1a%W>H4+((o~Lig{e#8 z+u*L5UrGf)i5mjNKTJ7BHh>Z@LAez~`=?TrJGFdsDg#RTEcN|b-;v6L(k{cG#2E!Q zs^;xB?v|yWD?rhQ!Hw$VyXryRj-ZrFcGra&P{*e{4DOoQnSxT=-JsY5pu`DNUjy!% z`FN_9_89eXP>&zVt>CVizfPqncWU|lR2O)q_1yL>^#h>fGpO}1ZO>6Z0!qA5t$%I1 zT_o`)r~TlS*1qi(pwu%2O8QE$!NPe4>hlcTHFIIQ7L+(qu*rIRdkoyD?!BuX6u$;= z*UY+f9F#bX;FZ>&wH#6#oP$`6NN9Z##IU_0>m&;-8|uOY5(DM5xP0eU2Ok z<@zuRUTL*Ff-gSOaj{C(tN{D1%kCF$RQ>mdK;4d@jDt#0;?{uu*5^8-TEFa$1}$H9 zf1{Q!yQ2-1bnTQ=;70ZRySu-uN}PW1W$XD);cuqw`w!3x)*j31PK2~b}FZd9i|Pzg4{ zzZR7IW30T~1J!6O?k+ zX!~Ct5Q<$WcA?m7L5bf0UVF}@Ekf}Vil0#Y8bLWvT0tpS3f!pNKkB5M0VPfrl=kQc zC5}+y41!Xx9PPv4wdc&*A{0NN_>F>+k9>!m#IeEZ=$TuD;wKb8;p?j~FM$%b0=&dp zwj~5gIV!0SgA%6(td2Hq5lS4P#EF7(zQjPOPXZMGRp@B109Hqbw90|83z&CYiO?pC4D{h4PbS2 z-Gf3&9|vW=Nz&d9O8ciNcY@W?dmj|)_5mebmiB&a?|e`wdZG9YfRb+xlzQaJVX!*- z@Pk6}9|0x*QBclLdy<(4{GdMnK$)LHpv0>Lo2>Yw5m4gRf|5Q8UTJ;((R%6|!0PC( z2Zd4|p{_3|aT-Cn4ktm0(+XBcfBB$L{DtB#lyTVxO1cy%{+(cT^z{dY;wRMO1(fn+ zLGkMctD}E2CJhVJ}4A_q4gdd^LP;-_^eONy+}EW+@$UpNKW`O^pHTezXz$nd^R^1b zE)@F!DEa3>-JW1|^mALS$wm&66<~Gr%Ugv~ZlS~xN}LcVaT>tt=$frUu?xlCs`c$# zg_2$geEBq1Z#9l&41Pf4x<>uKEq~E%GBxU2pAI z($%2-PSKQli|p7XZW6NO*Q))`>JqN2j%w<5qQB_HKMjh1Cs-X_(Is40-JmJ{B1?Rs z`1gUj-N5ST%C3HJU3EfJ{6!Xjq4?)P@gD}Oqjz=**Hv%U6n~M$Unu_83C7h^`7#2357Zv&+q?V!xBX;AX%1goPLJS5cZ3`#nYC0!RN z*PA|2{QJS`=w%NH*HwQ_Q@1x{Nhf+qHvme0c~H^~gVoWS9}?>J2E|`w@gD(YzO<$q ze;cfh-u{qK{DtB#6#pP7aVx;;=sgb!#ZM@HLh-B7_6HvluB-0V6hD#0Pbhx1pp>^B zl(-Eb)+Y}M*H!D(g`J99F%gmg4NM?9ukV5Q2d1A*QxD)eMq>jx@4PB>_V|; zK*>J~Zd4n8)DKoir)?9itDdPT{vwP204Vtmf{U6)9~}m(qo;2ZuB-l(rj$cuNhg$a zBcSACO*8d$gChGu8GphiYsQWs?IBR|siZwZeGOP0UAj%UuDVWBw<~1HPxO*sEvVZS zly*&$X);55ALTqbLcKNJr1OJKR>O`Uy^lyUtB$*<+Kp7WV%Ke~}djOR9gS6*p9|0wv6=c7Gl0HZ|1WLL}@JegvjtKR& zprng}H(0xN)Keb^#Xm{8jdGfD29$II)aR+UPB!_6K%F1BsA=|N5$dDhmDa=EaoQUx zw`)GIqYIRB_k+5=pu`!bY*!e41sMXx9tCCn(m;J9DEri{l-ntHg8Kd&)Nw)Sk5I_S z5m3fsJ=p+CITGMT6}~4)eJgm0)wC_8_20RtkNP}m%`kC-WQ43IlVqA42EUK{eru*l zXM-a9!MCl;9}~W3UH4d!_6pi7wf(z~3E#8se=I_KRO_F7O!%I)=dpU~XCDuO((aX7zxQ$BajthYr@A~n5!$2LUfd%*&NWL@ z?De!aYWq1o!sA?*Yfg1F_atd=1Eri9P|7h3O8=@^7zgUOxK}nyWUMTt`DD`Xy7d2hilcHTH_D=Bn##P%gprp^z-Umv$ zer>;X+W;u#7zE{f$$?USp~O*@Miz=}gV#6SwapDmTtB#|>4!Z5P|^v-uL8Wj@u6*D z>V=}O(fZzPQLxE+vL{BnQ0(=fl&=B2#CmaCBPf0eP~r>4FA0iYD=6*O21iU6l{lcb&sUIkQeo)F8pk65YASmUj)OOs5(k>Kxg!U-yG1`SS^K1};4DC0rRW4S@G2Pg|gt^}K` zgFRvDg`$s97K+>eN;@}#5;sA+Q0ytnLXo>bInT1x3q?N&E^7LZo*eZ;(T{3<;0gR} zg=uF{^nOt93s4`Rz5=|&dSzQB?P1!5k}d*Dzej10(JmBwJ?#zPuGMIN+J$0I(%uTn zetL>_q1e;3XQ>y8K1W$7GJYVy)CUyV0;ODTP|mXe?Lx5!X%AB`6n%vHDA;60pNP>e z6nj1GaZutWDYt{tUunwypqy`mT7TIc?lX*kCAg~@?FHhw)Dw-GUwR@1%KHu(P~v7m z$*&KTdgMv9!02u866@eLKPdSIKuKRgeI@lZTK;HTlyVG|xDC`dYCWzG)VFHA-Q7-o ziuz8iFYfLF_54VEzt+#}9t5QvIqHYCeqOh#VtGLsM}APA{{^TIf>OTUUZ+tQRfwVdhBg7O|kANBp<9IX2WKxywmQ2HeY zO8ewNDc3M4exsnAAJ!*~-Ud%dKHTjGW&RLK`T!{DgP^V#c!@Q$yAl*Xq49-6`tR)OTwA%%Y>gwacuAs>%DF_DEU-qd1iN*_8Q7DP~tRb z`MvH|&BNX8V3YO3CsLr4t5fS|c4t6|*9A)d2_@ewD1QB*^ly&xFy&FO$;v#T&N6-$ zsM`~ia{56%-_jnWy+YeDUO+uwKs{bS$u9y*oElK##Hg>QzCr6f4>y9>S=*jS(4M5d zRohD+PE+or+y%<{+pp#Kx`#E7e^@P)_PX~j8m<8C8CO|Qx2M*lJt^lwi9bxeTEzAQMQ?++Zaf^IK1h9q);Dgh1f`wB zv`1*K(e@X&MQM-GUQc_2wlCY#2ueQ)r5_TYlrsrR{;l98))fz@s83VhNqryXel5Sa zZCG>J7W-^T_u{qyDDQ<-Xu09xFsS<()a^=rJ>>?=r)lrh z_Icf1pwvfro%JtI^lSZ#+Xku6ff9FE>oJcnHnIikb_b;&1JqY&8RHggvL-zlroILg z|0pQ?D>3RDwfx%l1m$+H$qGD~qMQaLT^A_hGE03Q_5Ea?944)ESU$3XtOWHq0Ofs; z8tS9e$3UrX1NDud?srhysg?Q^D1M#bMs?%EU7#+XmcM^@A1LMSC-bEGlt~vLgP{0T zkd>gs3DaIfeU$nb^$pZFQlFr{mHKw-Q`C2XQjaX<961b1{-dDeYk%6v0WwHdkd>e= zALR&HL&nH@vVlyHNis#I$xbp$_L2Q$o*X7e!3D0_PugKqUOy=PT0yxIyv~~cWQ1}J z83miHRZrGaZXg>$NuQ+LO16XIpQhYNc2VC?c@UKJ!=UVM3uV81lzM-}*aP53_53}R zpv-q+P{vUdl>SLjZU^Q1m;&YfkS!CP%?5t?Qq(YuIm~oL3c;L!j&%Rf1Bl z8tS83#(Icyl58c@WG9&cB~BmZelkxElUA)MhfTUcNf)FXA?wLF?Mce5WSZ;*rQd}z z4utajqo4LXX`Rb_$sk!lM#vhno@^kKWGmT8_LGC)M%DVHwS@VQ5wZr9>v#hw4%fFw~}eHkL)Lh$(r*_{01^j_K|tgI^XyO$p~3P){_lnp0uJ&M^=y#vYt$mtz;+J zPY#pz1twk%nIzL>C)r2l$zf3T;jIfz`U5y~}WjQV=YNit3Lk$KYkClk*mgJgtkAX~{a*+=F{>$4_K zkc^P^WE_<9EJ-;{c9MN$Kba?o$q`V}TNkmsWRR>NYsgwq{Oc( zz98jFQ0GrMs_m~lSx>o9%R6@@DYt|A`b@ct@*pVJk399GpyXp+YVr?~VbGPp{S@UG zsN%Dzs7aunRCa!J>>-DB;^$4H03PiKFT@DdCF=9 z^9ObQl!KJRlw)K)^$E&J$|=fe%2~>Nlyj8xlt;mhYQ|IQ3g!>${3!=1w}bMW*1FQz z{h+-6AEaDKIYPOfjDxaYkffX@`^W*>M?jfx+;zs^56b&pA7lyY=YpQU~fl>Bm(M`>3LCSNxw`Gi18AE7=9O8hwO8L|s}A%XQgISNXA zcihDBgCbXwQ8G?@5|sM3Q=g{X1xkK>lm{v2DUX0s&Qa?9Uo!qdP`4lDC|OT^9F%m8 zpp>hf>>{(Eq#vZ5qdW>qdDNGUJwS%ZC@A(A3IJ=AE@w~-^H^;Hu;NY;~aQ1VMs?j!T$2f0p(fslIOf-JtjfC3%#$OaKy~gN6pvZB`X;9|P4COw`dD6Px*xjJS z4N{Jfaq34%>jvW=BqL-!83!d!nsT3GZ(+NTX|j*Zlh%#KFGBW_c~aeE>=qdygJgtk z1En19@337!X_tCX+9OVVlCpdYx9HPkhW0FF`SwytpQEf2EC=ZZCBFdWAQ>iOWP)r1 z#Xm(k14{fXvJAr6W> zLI%HU(uK(g86y*929$Jtl=Gx@n@Jxe!(@c41$F+E>&Yb92Fm&-O*un3OSzBCk$G|i z)a$W!lfOl}LD2^&hshY3AlpFkOHs~Hw!X*ukP)(;Opc~afZxMY9~l3_AJ#>jdyK_}>Q0k?fDDsqvi=9go+Q&`ADJWbq*}}RkO4AChRFySBkRconIv;R zH1X7W!vvXfNI{? zGDoTm)01H`MP|tysUDy|875<7f=rQFGDoT{OizZ%7@2U`W&BcPmdugrA;uxYWX$0< zV^5GNGE2s~X(v-;mdrhD>}osndDJjWrpPRrdyM{%)1M5JF)~4>$gIO2lP*VQpP)=8 zo-}fb%#t}WPg+kIzaW_+v!vQ->;W=N#>f2{K8h$TXQH`^Y?L z^|BnGTz6AXGaoYc4C9k2GE2s?Ja0i+N94#vAJaW=m?E=ejYt4q zAj4$tMWa{0G7N*VPaGq2dzAWTYuCMjUklf441sd}jA?n-y(v)2oh5UmdYSo=VMqQA z^C4qof=rQFGDoU^VLUQSrpPR*UZEcuCSzoROp#eKN8$@5b$tS4_BA8tNPK0#v6I;x z?WD@nPKL=C>E6fn=O2t;f=vC<$XPN+syFFJrpPRrBh@JLCBtNlOpqxuOXkSf+subd z?Pqz&#Gj0uBC}+URPQid*8i!(@z99~yh=KMb>E>M&(;0F?WS_+Jd$$n4*YUyh7fmacDtOp#eK zM=F=`3y@(lMkdGfPz=FyJ~lQA+urW`wdr9t-}nVN6ptiv;moFfDHmU!_GlQA+urpPQA zu3~&LL8izonIqLFjDLU(lQBn+Zx7e`lk#gZA}1XAEXrhx%#yK%w38_^>*(<-dJ->1 zX2~3>&NlV{8C%SFWER}0-r5*G$LM2Zf=rPC{F;XN#XwztGWKc8WQxp^_~LC7ACz=4 zhY_YDQ)HG5*U+C#kSQ`t=15g*`~zf+OpqxuOXf&*F4K`=GDgNh*|$niPLWwMN2(<( zFSt>CaZ{GEI*;+m7%1(Spqz4eKHDkEIAnrMIr7>^7uGk!5LK?W{1eql03 zCdk00w39J1L8i#8qyL=oPmx(NM=JdKvXnDGhRK+tzueOIK><+T@8DNFNPMY+=@&9g#>fPj zBD17wVLCEQ#>fPja_l!+>WW0?rWmOEoy>u{ziu)NkYO@L=599j>@6mJj#Rg@9ApfX zcnLB^=1BEj=69Q6ip-KZQned<;QNMQGH^R(GIocNvt*7`cQQR0CSwlQ8GC|Eky$cF zsvj~A8732V8-0olY&3G1{2!#930zgx{`S{iX9fAiKUsE*_>7;re0H<%&g1?EQid@Y|yOC_q)$td*3d%`~Khm=dI6r zo@f2mxYxY5`)mpoS1YbjT&uWFv3OMFuQ*F_t>QY( z47*sT`QK-aQCtV#+2FND#p4FYD9%z`sJPnXC)Bus_4i_HlwW7vU#t8&>;5|B*ID#X~;lwW7vUkLlhk>VP~wTcTjsBpzGPa6I##f6Hi71t=PRUETX#aCRY zxLR?{Qz~3>q2g-AdtrSY6`PEBF^aPk7b>n%T&uWFvDmEADb7+{sJL2jjpACxb&ACn zm0od{;zGsMifa_tDi&K+I>lLv3l-NWt~Kq?81btWi)|{sV)2~vE8hE}aUWf~-LTgw z7CTft#aW6A6;~^+QCzFIPI1=jDnG?pI}LxK;yT6R4HZwZ*roh$8vRwh$MDxEu2o#8 zIBTylP74)RE3Q#otGLdzzooCM`yZ|K^H+~nzhmT|^{&B%imMfi_Y8ZC;w;6rit9}K zVO7r~2G=UC{!rN!*D9`4ERL%D71w^EpHF^&v`%s1F~eW2SbVDDE3W;_@Yg9m3H!(S z=Z4)5>;4$!kB9a5r%DtrP~q#9zxE52pW@mtm0xkz3BxbG(nPOY|FI^<&kwH2^79jG z3jO@tnrc74xu(X?hu75l`SUedUmNKQ71t>iCk=ay;w;5=r&W1pRJh_S#f6Hi6^pYf zp5iRUg^KIWtNrhS5id(|;YH2=UURMDI>q8g!yco!T5+9X{bM`&`_M6pvlQ1T=1=+< z;fk{q7b>nb!+$a2WhpLHT&=jy48LT=D^y&qxJI$KtilynE3Q#oYx;jRuD@1sonmpt zuoo(>R$QaFR&kwT@tbOI#aW6AVZB}I6fgMQSZ7WuF1%`_t5#g2xK?qU;usA`6xJGfU;yT4b8u1DhS1Ybl%*T)X<o}H;wdgvT%)*Fu?R5Y z#VD>;T%(weiu>CqMsc;`8pVZPBfMI1t>QYxCt>}*)*fuMS3Ioyvta$)kgM#4%3q?w z7byFB<*!xYdzHOT`A@2Fdx(*LF0ALzpUX1ptvE|@p<)rH!WCyJE>v8rxK43QxDh`~ zaW3q?KU4l{#kGp-6lX;k=?WEBE3Q#|vY{GBJ|mupQT0-srMOUWwc;AZwI;VP($y)> zYOBgsT&=i9ajoJy)89^t7c|DR;+Xb^KTC0;;%db;ieoycc#5kP*C?)4T&GxcG~(Mk z8`r(JtI>`p700I<{u0G|6`xdWPm}(AEFRX|KUet|DF1rpKdJoobR&KVtjAxV{OdCe z|6W+%7vsCBa9H=BRGiygrO!0N3ws;&uU1^ExK6RiSMAZ);6lYUifa|uDHhio@nRHb z!TP)?R9vmNMscm;I>lLoRD8wNifa_FhxPeTtNeRm|GK68Csnu@Y~*8y_4qN$pQSig z*$b7w1lIFepzM1U#}6^m?^SFcYWU+7=fZlr66If@c(3Aar{Ul-d@G_QHDQWaW3qyuktTYyjSr_6>cA`%2T{v zu^6NJS8*<^x9MbFRYhar~D^XxEO2XXNUd$r2JWmbCtbN`AcB`bt`*~ zvezo!tL$~kFUG0*DvpQsaic!A=*icczDKgEbwQf}~i#V7y5kMo_c1r8@licH~@YK4u)64 z4d9327~GsYwmTf{9chm1 z9g7@~J6z6W=grQioJXB!oj*7)JH4*St|wfZT<^F(aGh{{?{d4Fx>Mcvx?gsG=Kj;| z@(lCb>RIM_(6hsH$aC0J=Q-;M2xuIT7*G%}C*a$FR)N22lh;qC7o?49qu$GghA)%%9`koOaBo%ggiIJjAGyWouA+~AqPyMvDge-+#^ zBst{W5E&XC+B&p%Xl3Y}(8ZzmhQ1N{e(0&tA3{Y~o3NCytg!sB5n)rpUJct9_GQ?q zu%E-OhIzwVhxZCE3SSWZK=`xa$HIRO4~dA0Xcv(YF*agh#FB{R5idv7Mf@Dmzrmyi zA2*PZ(UHv}<0G$&92Z#`IX7~BWO!73R9e)CsPd?)sP$1VMZFRAUet*w866hwiyjlb zAbLggOVO`IAB_Gu`rBwn!?1>(8;)yO+Hh*a84c$)e4^nq4PR{dTEo2!&op#3YSm~` zqemLO(r9m^gN=?fI@ZYDIJ|Lb<5`XGZTwo}{f!Sd{-tqHlZH(an&dPY)?`wXSxuHT zd7#PqCfl3rZSqNzkf!lXTQ^N^+O=t~rhS_BZ(7lGUekx0KG*bM(~p|gHT|yXm8Py{ z5zU%5YtyW6vysiFH{0DTsQK9D)0%H>eyX|jMff`VhWp0)Ci@=n9rS(R``q`n?;GC* z-|xPKF}q?;#+-|}7;`12Z|vCEn__Q^eI#~$?7rB~Vo$}Mi?z21Xpz?9#uhiXSlr^t z7SFe+ZSir7ptzX0%(x+OW8x;o&5XM{ZcE&YaXaI_j5`+4%DXnnAC+cwv=DQ&Z@&Gt5LwmIGAr#3-tW7_s?+pq1? zw%gji(e_x|pWFV~*4{3rU4FX(?MAe_uicJz-?fwNo40SO2mwX`kqvSKm=aYX;mYoYbmv)}h`JT>?b>7_hc;~2;rYZ3$ z?NZWH`ll49+?+BiWp2vSl(i{aQeH}VJ!Nmodnw*7t-5sTlG-Jw%k^Exb}8@jNSD{T zeB7m7*REYNyN>U=r|Vl?Kkj$R@-)CQ@ssjX6brVdKIJ9TC1{?s$6GOb}+x3p<# z_oO|U_I%pGv@g>xq;*J7NzX{{oqlWjlJsZO52T+<56fti(I?}!j5QfgWoX?xb??@_ zqWhxmE4#neeQ)<8-5X`5W|n8p$lRQ{BXdvYr`$}5&35!^+AFbFX0L(0M)xZ2b#t#dy;k&E-RrqtyL-Lc>%(4ky;|ku<@C)NoUN=ra(~OcmK&BAoi`|NL|#SSy1X5EZ|5D! z`!w%#-gkL_zbge1>3>?Ehy|oYz zYH_T?U$+$g_4?j;{jGciFgLcjm z4MiW(NEFZteMJk=PsEA-B3=v-3G_fBJ#ZHkY-V*uZ0HwW8X&;E|c;T_H zs1w(V6O?vJ+#oJe;!l)#NemHxP~tT)T-dY`yr4BwIJ8m1rH$rgt1-f>jTOP#I9@a= z6yaKth|o$zq*f}Tv@#K`O%@HcX}pYcvuLbU3ZFJz#A#KcrFM&Gt=%fxYPa*^#~q@R zHdmx-ck;Ki=ZhTeE|IG(5_$a8qK~$Oe-OS$4AGW~@!E1xqTMehY7dBV?Ljd^TOnp? z4~g5gmEvygVX;(uL@d`HWdyDf4{ML{4=ZcM6IzYfpsg2AX&b~Q?Mbm!+bCYqo)SB> zE#h@;tJtYM!vpATVz>6JcvE{p?9pBnd$pIuKJ8_3m{)>7(6;l})^_mF_Er9>_v`${ zwKv3P+Ai_Awp)Cm?GY!mz2c1a77rm0@HOm%;=Fc9T-4s?A>upY7wugh&b=qDXz%mT z>_hRVc9e%wAMt?ZV;;VI!UL9LB1nEJg5_}$B0m#h@^k*m_ZK2kekr159e?ZlE73@P zEt<%0_>14)@|V8Pi+1vgXfJ;k9poR}P+t?B7*fenYAMpDWk{EnCxf-VGDN#xhHCv} znATs0Yd6RUZJ>Np{rA zWU^K+J8L(~6zw*duFa7d+I-nf`-kkVEtNgA`(>8)fXvob$Xx9qnWwFky|q=ckG5JC zXlvwk+FIF9drJ1#Hp?5dEpm|dnjEaXE=OuRZ91+5uUt z9g-#5+p<)9SKg?7ByZ9_m6NrvWV!aWyjeRbZ`IDpS=#sVcI^jwhjvlksr@JyYCp-l zw4dc-?UG!gU6ISRKjZ`2pYlNtjVm;-?IA7P_NdmtwnmGzt<|DzHCnW7oz}?qgx1)$ zUTb38pf$5SrTJ`Iv>4k~E!MV8Yhimx z+S#^i?QMIt4z_(-N85g_lkK3EWILiI+dkG(Y@cXdY{#^&wokQG+i@-3_L-JpbII;D zx6HEz$b4I%>|+a(*V(-CdRr6O-_}eHvial?TbdkZOP8Z;nR1M+ryOg`ljCf?WuYx! zPO$ZnCAOjRM%!>X$u>%s+eXW2wlQ+Ltz6Eq&5*a*ZjrNXGv)2JTjdi*2jr-L^;N65ASik8Q17W~-6++1APXZI80uQMCMGWd~U z#&sX~g!>!(|G(|4*Y^?f>C#ve`mfAt8yRf&LmKV;4EBlqLP6*IUNYJ>W}N=#1B`la zhxK~D4(s*S{d&E1*6Y0w*6XdO*Xw-)Z7=u#S=62TsjDZh9;B6&QY(%izhYjQ0KhZ6UrS{;pKRe)I|BI)6ID`2u_VpGLed zCK>$6GX}qL(%|5mjq6Ff%c$SPaYp(tc{5udw;!r;w010i0Rg`r|04YGG$Z}Y;X+)- zAJ@_t2NjshVT7-@8{9e3NPidk`_~&aPrp(1n^dH(Q}x@?Q-*(=ihn`%yE*Q6#2MvIXl3xB zN~3@8q22WS+jcU_naX(A`%zyXd|bx@uVL>LrHMB9oAoiS*UWd+Jmv)Um**NBaf9Yh zU#`}tkIRj6%>4H7Mt?f-@1Y)gIS1Y~$`6}uu-WhD*BSkqtNQ)fW=6R~IRp13eH{Ix zkAwF3^YEMfzm9p_7r$9Qvp%J3jr`X%H@M+3qh9IcpM?6)vaCt=@yz*zSVF|PFe;7l7MdS?;reM*o=oRR206)c$2&=b_O?{yx^pDb&a84>LcLbLl7jdW*j__&)ZlnZyr! zU5Gib*{{*$r_Yz$UlU?J_C;!Z9U;EH?wkG6tBFzW=n-l>(;j-dA4eJKk1;Rw@pes( zuj`A9cqaGcp2O^KeO)uxvpYP7z5aUlpc?P%`}>ReM*c?` zcTZ#gnQ^VJH#c#;I@?u#S6Nq{!@o(jL;dx=t~2`*;pX~KpTpETYL1_~YB*aE-&{Aw z-7dtN`16Nq;w{+8x_B7wsP>T~?1%dGKflOeJ-yyfvFxLt5N{s!`w}+e>HE@Y{Mo&X z@%<_J>irZ$J@japtSu zK0(UAtAR0YzJfiZdu)bL&gB>*-f;GlaO}q-4c^Fl-w^+@48|ASgmquPKC?b%`DT60 z`aMPc6NqnyucY7G;y2sXoG1IZ$L@-KcoR)@hX*lV^!(#5(Z=}A@cTYD>e&#x-Y)g? zNuFS&tG}+B>sH&}gy=_p`+w(b0Uu+38v)zh#`V}37katod^gtt^W3^AKoiBpH}{3+ zY96G}ZhE?X#RlKN`lb8Lb!__qW4$u3*IWR_4Qp}7wea6o}bP2r{EJK|F}U$ zKTc7+bf8iH)v(?^yOjS{_N^(@+pN!jYd5o<%y50&>g$);t{q=C+C7nVO2599%+7@5Ve0(Tmi<%r zzpc(&D@PmQ6V-mDx0gQusyN5%te^Mv_N!k`#+}AF-K_7+vy6Q7bwsa+$!542e=@&x z*2B&AF~jdu=NYqIg4BMyYKKvu!^;2EVWS)#n21%h%kQlWHqV{rK9jD_;h`giSpS#y zdwGH;p2uImer7$^=Nav@^B1F@+YcDyUJu_+I&++w=Ld5f)jvm=}G!Ecro*;A2Cnfr<~3sjdS2`&cFJ&JG9=o zz5q2}>aT~c=Z$eO{Vszm7Z~x)arO=KO}}3K7xsF2=D0K4&x|*R`wP9i-#Ev8L_K~a zzMk&SfAR%W{Lia-l{Cy~zc!Ss=a;YUr%%r};;(lZ;h`$tjopmvH0!C48+{(Nxz4yg z-LCJuacZ6pt5^R$>@#{j>YtZ7aURn18MwQGxB+X zey-zs>OV(#igTD=kN=nF33@zz-#tY><~hOL)+on3*B<1&uGc$8ovU_p?$P7x^X(k0 zpYIP7Zm#2+TA$444(7UG_SeS!+;fvoKR^5e>wj_cH+V*baUXt`_SWymOFuRI)yh9c zv3YJ>#r)8pQ@rifxar{B&UrZyHtVI=GYY?ceL5Gs%e^D~`a1@j*K1zaWwk$T|Hv2* zX1|-`z#JF)xQQnp{kejE&i`-R`Jl1RnBl*0PSwYyx!w%8z}O+5`t^9Xi*XKIw_Au5 z!q=s9Uj$d-&x7^r>kI4GHwf0RZ!}y#A9G)SBgPmndtNg7anN{8ln`HU|C?a_eoY_$ zM{YIhXWoBlT{SU{@XtqS;uhF^Ztz~L@!Vj-c*V;9PP`^=C!WdrbFn+|U&p-HuiLyY zH}BKU`*`y?g87`lJhz+o*XI4Sc_01X@^Ag75dWaO7bsW1p0X)MKXzpPFT*}^rr|fw zqYtTged@)_-)6)MBfpjZi~P*^_476JGwbn#x=%3gFD9%0bucdVem48f9B<8^HtJ*g z@BY~E|2MlC?>hAy>9^;M_J5A&EBZX%^tj=lsd%SqmsuT*b~Ep5cdK+C%rWl&&2!Ic z#={!wsjvG_!0C*mO|X7HwGIBB^Wsjpi1XbcSU+DMgBvkVb^qBvNDJ%d-t(||?tSwc zV_h)sTW{xlqu*z~&N=u;;-#}5i>0hJtbf6CAO-JNM(g$oEdpH~ryHw;JPd zUx+3~;y0g<#?gLyc+&&Mx^eO?g9jjyS`q0{h~3?N2+?= zK|7U@uQ|@lb~EdHNafdyb}J{I-flBt{oJURW5zSvb$6}Nt}Wt?=Kw9@jPlIu`jT}+ zzkd$kepzR8Jhy$+xL<9=eZrmOKb8Gh58t`Z;GY!N_e-9e{e$@3@1Q;4i{zu%>zv|i zobUAe?qP>GzY=cN*X#%VxwF2X=+E_a)}QO^tUuS+S%0ptv;JIPXMLRL&ws~FHT>UR zHF(=(W1qY363>V!=TEgit$x}FH=nOF0_ByE6HND++|E*=lI-u`2 zy5BrU{l9V$=Wab+eKxPd7J>6>ja@;!3g;1c@fBf?+ie&GF}><{0P-`?h|@9+rDS--)0J;btq#k+hG8|OfCogO>O zIA5gRX7J}cSJKbkPN^+7?i@t+Zk?ggChvbKv0Sp-qj$EBUq0EN)gMu8*VY$ z5sGCDD0yEa49i$YIF@msOLG+GBCLI$&{uQtS~OvAA8Guy{Zz z_VON!TLie0u>^ur>=T`_tO`oO@(3u!KY7PR6Z=88crmCe_Lo4(yDX{L4}e^6P#X4A zpyb_~bS$TXGO(NhC7&hhM$ETCxA-QgJNC1n6z}k+j3(X%-QwGz9@x);lFyX&#Qr|W z6$NEs{}Ytru*k;#0q7Rjf_h;W-d@;`h#V}_y}4MbKq)@tT^qM}C!{x)cR?wR^5%^c zAM@Ug6rb?cjTFat(?^P{ym_OEKS9acHUmMS4aTB@jCpM++6GGA!5NNrfKoVlA4lVD zoRMfZ@8s}w804*G-pk>R50oNE8;|yal6Q5Azu0#ZY{9K2sX06rjB zfRD(P;A*)F{6MY-kIFURCvq)#Os)fu%O}7uD}vfP3G6_nzNd<_h< z?ZgreN)ch(g>C>!5oz0vjsm5Kw(UVT1Zi8_K6FQrwzcg?CxKEV+YX>RgHmML4xxL1 zQuMUFgU$k_=w*8koM=0YWfCaGO|~QG$)FTdY)8>kK`F{@AEPTkDW=(up>GDIsI(nN zPY0!_vVD%80ZMU;?Mw7bP>Ne^C(yG%DQ>fU4bHZm!g4z(#T?ri^c|oSb8TnQ)u0sf zZ0FE-f>O-4okuSKrC4aYfW8ZqVv+44`X8Vai)}xl?*^qNxpxzLY+ zQmnOk&^4eG>uiDO$3cD>VDqBagHmj;g`l4VrPyc-Lq7#dvB?&J-V92y#TJQv8kAzI zEgJm{D8)8gBlNSN6wle3fUnq^f!l39aEC1xeAN~Q{%A`8ui9D?|4)!vX={xZ_SR_4 z-WDxEc1nADv>lYfVeg1`g1m)jPeQvvDLnSh=m1cPKzkQ-5Xf3#PX$Bl>0ncPH|)(o zDVp0e(LRu!(cTjs3$g>+v(a%NJDoiTod8OaXwO5p1f^(Y&qucgrO2=sfZgnUv2+I+ zvG#uG98ii}`v7zvC`E7kKy*GRMIZZMbO9*Eb@rj?zMvG>+lQn3fl>^&k3^3Er5I@+ zjUENEhSomg3J+n5qc6RMVY-AeG@3fWP2%k3Mj=?`$Tj(C`E<63_T5$ z;%56~bR{Uobo*3v6)43FdjPxMo6)y|Qp~bXN8biA!tFEA{{R``_L=CrK}NWJ z7Wy8LQEi`%z7J$n+vlL~2N~7&x#$N$Mzwt&`XP`}ZJ&>R7-Ur27or~l8P)bh=tn_D zwS6)AF_2MhUxKay8P)cs;N$jtu{;4vvEIHMy#bWsY5N1{tsrL-`wH|nP>N^mE78w^ zQao>81-@WkjpapI`==nQvHc13XP^{c+Bcx$YPLx&g?#?bwHo0$H~m`_TROLQ_QMQ6tebP6a%p5tqeaj*I9iAoIfU6S^E^UO0Y1PXn13j?3su zkk#IC1$`&TYVY_Ry#QpjcU(o^1u||O*U%4xj9Z5$8Mh$g)?q_G3NmgT4)kN76i+%_ z=#3zw(cwXF1EqM;5r}>XWYjsl=vP2axsDL@>!1`n9bxD+d}h0XzBk#it8(>WNt)j1TL>l{u^szF-YITC!- zIT~E!91A|_98c&*kX_7Kgx(CYi#dzYPlN1Y&QkO(0dzh{zqs_@s1<R-*@i zQjB)3L5~5Y80%V#9tTP>-n9;02-07!C(si>=A&x^x&&lCx;CP31lhk_o6wU$_Al2K z^i3dVJl9tARFE^CYa6-($T)HBK+gg> z0A+FESUx4gBt}oGbAa?|=6X4gbufdb9Q{XAr8A4Bk>^rWr;IFQ8 zSgwFl{N_53{vDL!57!0sRZxmQT^G^UKClz_={nt)cRj&!RRd@=Pvh9^j46a&OIEx z4dmSA9*KSqWEFLf248iL#qt`+`sp5z-U%|l+(qbJAoI&zjNT10zucwhJs?kD+!N9J zK%TU?%h3Bl=AC;o`T)rO=$?u`1Tsh573h;7bHsf!`ZUPzdfn5}=Rj6n_YCm7dnT6e zL3Tj*Ec7Lix#OOV{vBlQxaXj+g3J-mT(kpZj(FywT_E=(p84nykTLIBh;9IKF7hlw zw*k2?_AEws2Bk>zEJ3G(+-rE2qPu}obobng&IG0C;aQIE2{OVx51_L_M!07MItOHg zdsd?JKvsLtDs(=`YVTQ%E&y5WJ!{Z?K~{UuTCksI9hUweyRhd8^eB+E-LnB*2(pHI zHll9?8PA?g=t&^s*0TjY4P@MUwxTOR#;s=?x(Z}X_B@B41+pf4UO>+VS(804q33{7 z-067*Js;#w*|P(^43y#_&ui$FAZIPlPV^%nyT4}_`caVG-?JP27|0!gXAk-bkUIj; zKJ*5V5$oBH-Uv$Zl;;3?6UgZG971ma8NHr&z~?;gVR;_pB;YxWei7tJpyvpBFUS)= z&r$S0LDqK9$LO~~)^^V^^t&KuFwb%HQIM0E=X3POAkTR`U!sqJQhe$;fj$m0N=4d{Y?5R~HKfK>3QfOK$EKsW50K~Aj!ndqlMPOSkw z(a(U~H3Vd%Ujn&n2*^Rd0gIEb`HE5ObMJ0rUlLb(*tLM8G*CFZh^DOtvkp$HgFC)3#4ZQ=YqWg z=Ycta^TFJ}g9&;fj2OUSx25F_B&(RNpoB@KqL_Y*_7aVi~{V+&d z1$_-}3OWUD4mtyF2|5ct9dr)d8gw3fCg=jVE$AZnY|u~Ob3wm=&j(!wUkJJaeiHOM zcr55DIe!Xr-x_oc{TawfI7s6i#4kWj!a+Rr6m=laVS*g!uRvDFAQyNc$OHZm6bN1n z@`67Gg%IZ_kY^@AVc@Sp5#W`eNbt9yXz=%-Mxf?x0!nW)(B}1lc5f``@Wz1w-UKkt z+mhVkLDn~KYjh&WI_7PQZU-{{z3tJ-AmiWL5uF0kr`{xVSCCoY?TpRF8XLecam(T>!Gyc{9;{L3VI&Pjr8f`)hAD`Ua4H*YM_`2Z5}C-aPaW zP>P}6eDpAodvI?7dIZS$@%BZJ0$Cfq{m^4T?)ba|(BnYXK<_|w8OT$5?_l&~kkhPp zD7qYETzQA1XM&6??@074ka6W54bJwC1?PCjgLim~z`5RHu-aQn%y}T^0q;cgd{FWW zr!w?HP>Q>}lhKPnPO#po=*1u>SZ@V-3CKO2_hxXZcRIMtI|E$hoe8e>&H}f4XM;Pu zbHG=2jq_4y9E6n$cXhW1wZxP z3m*3_2S4*Z0DkUWL7Xo@Myz)w_?34Rc*?sPJmXyhe(POJoO2+1y>}gW-undjy>|n6 z!Ml;rA3(;fcN6+oka6qX0yYiailrIIIvl(W?E~41gP#LqgI@qEgI@xt2fqSV1@8cF z4So%r6}*%9w}JFX@GkW2ApH`&8@wZU50<$gZ5zA~Tob$>%VQuXtKb9Z4In40;6vcX z;CH~Mg5Sfw31l4zJ`8RNJ_2qHJ_^1c{4t@2LH^|{_!#;K$Vn;qICwhvb1Y{-o`(c~ zi9QQTaVhu&`ZCCx8T>W+8puoxIR!QjIfJDM$Q~4O799g}?IGvTEkM@Kkn`v?kQo + Indicates that the value of the marked element could be null sometimes, + so the check for null is necessary before its usage. + + + [CanBeNull] object Test() => null; + + void UseTest() { + var p = Test(); + var s = p.ToString(); // Warning: Possible 'System.NullReferenceException' + } + + + + + Indicates that the value of the marked element could never be null. + + + [NotNull] object Foo() { + return null; // Warning: Possible 'null' assignment + } + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can never be null. + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can be null. + + + + + Indicates that the marked method builds string by format pattern and (optional) arguments. + Parameter, which contains format string, should be given in constructor. The format string + should be in -like form. + + + [StringFormatMethod("message")] + void ShowError(string message, params object[] args) { /* do something */ } + + void Foo() { + ShowError("Failed: {0}"); // Warning: Non-existing argument in format string + } + + + + + Specifies which parameter of an annotated method should be treated as format-string + + + + + For a parameter that is expected to be one of the limited set of values. + Specify fields of which type should be used as values for this parameter. + + + + + Indicates that the function argument should be string literal and match one + of the parameters of the caller function. For example, ReSharper annotates + the parameter of . + + + void Foo(string param) { + if (param == null) + throw new ArgumentNullException("par"); // Warning: Cannot resolve symbol + } + + + + + Indicates that the method is contained in a type that implements + System.ComponentModel.INotifyPropertyChanged interface and this method + is used to notify that some property value changed. + + + The method should be non-static and conform to one of the supported signatures: + + NotifyChanged(string) + NotifyChanged(params string[]) + NotifyChanged{T}(Expression{Func{T}}) + NotifyChanged{T,U}(Expression{Func{T,U}}) + SetProperty{T}(ref T, T, string) + + + + public class Foo : INotifyPropertyChanged { + public event PropertyChangedEventHandler PropertyChanged; + + [NotifyPropertyChangedInvocator] + protected virtual void NotifyChanged(string propertyName) { ... } + + string _name; + + public string Name { + get { return _name; } + set { _name = value; NotifyChanged("LastName"); /* Warning */ } + } + } + + Examples of generated notifications: + + NotifyChanged("Property") + NotifyChanged(() => Property) + NotifyChanged((VM x) => x.Property) + SetProperty(ref myField, value, "Property") + + + + + + Describes dependency between method input and output. + + +

Function Definition Table syntax:

+ + FDT ::= FDTRow [;FDTRow]* + FDTRow ::= Input => Output | Output <= Input + Input ::= ParameterName: Value [, Input]* + Output ::= [ParameterName: Value]* {halt|stop|void|nothing|Value} + Value ::= true | false | null | notnull | canbenull + + If method has single input parameter, it's name could be omitted.
+ Using halt (or void/nothing, which is the same) for method output + means that the methods doesn't return normally (throws or terminates the process).
+ Value canbenull is only applicable for output parameters.
+ You can use multiple [ContractAnnotation] for each FDT row, or use single attribute + with rows separated by semicolon. There is no notion of order rows, all rows are checked + for applicability and applied per each program state tracked by R# analysis.
+
+ + + [ContractAnnotation("=> halt")] + public void TerminationMethod() + + + [ContractAnnotation("halt <= condition: false")] + public void Assert(bool condition, string text) // regular assertion method + + + [ContractAnnotation("s:null => true")] + public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty() + + + // A method that returns null if the parameter is null, + // and not null if the parameter is not null + [ContractAnnotation("null => null; notnull => notnull")] + public object Transform(object data) + + + [ContractAnnotation("=> true, result: notnull; => false, result: null")] + public bool TryParse(string s, out Person result) + + +
+ + + Indicates that marked element should be localized or not. + + + [LocalizationRequiredAttribute(true)] + class Foo { + string str = "my string"; // Warning: Localizable string + } + + + + + Indicates that the value of the marked type (or its derivatives) + cannot be compared using '==' or '!=' operators and Equals() + should be used instead. However, using '==' or '!=' for comparison + with null is always permitted. + + + [CannotApplyEqualityOperator] + class NoEquality { } + + class UsesNoEquality { + void Test() { + var ca1 = new NoEquality(); + var ca2 = new NoEquality(); + if (ca1 != null) { // OK + bool condition = ca1 == ca2; // Warning + } + } + } + + + + + When applied to a target attribute, specifies a requirement for any type marked + with the target attribute to implement or inherit specific type or types. + + + [BaseTypeRequired(typeof(IComponent)] // Specify requirement + class ComponentAttribute : Attribute { } + + [Component] // ComponentAttribute requires implementing IComponent interface + class MyComponent : IComponent { } + + + + + Indicates that the marked symbol is used implicitly (e.g. via reflection, in external library), + so this symbol will not be marked as unused (as well as by other usage inspections). + + + + + Should be used on attributes and causes ReSharper to not mark symbols marked with such attributes + as unused (as well as by other usage inspections) + + + + Only entity marked with attribute considered used. + + + Indicates implicit assignment to a member. + + + + Indicates implicit instantiation of a type with fixed constructor signature. + That means any unused constructor parameters won't be reported as such. + + + + Indicates implicit instantiation of a type. + + + + Specify what is considered used implicitly when marked + with or . + + + + Members of entity marked with attribute are considered used. + + + Entity marked with attribute and all its members considered used. + + + + This attribute is intended to mark publicly available API + which should not be removed and so is treated as used. + + + + + Tells code analysis engine if the parameter is completely handled when the invoked method is on stack. + If the parameter is a delegate, indicates that delegate is executed while the method is executed. + If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + + + + + Indicates that a method does not make any observable state changes. + The same as System.Diagnostics.Contracts.PureAttribute. + + + [Pure] int Multiply(int x, int y) => x * y; + + void M() { + Multiply(123, 42); // Waring: Return value of pure method is not used + } + + + + + Indicates that the return value of method invocation must be used. + + + + + Indicates the type member or parameter of some type, that should be used instead of all other ways + to get the value that type. This annotation is useful when you have some "context" value evaluated + and stored somewhere, meaning that all other ways to get this value must be consolidated with existing one. + + + class Foo { + [ProvidesContext] IBarService _barService = ...; + + void ProcessNode(INode node) { + DoSomething(node, node.GetGlobalServices().Bar); + // ^ Warning: use value of '_barService' field + } + } + + + + + Indicates that a parameter is a path to a file or a folder within a web project. + Path can be relative or absolute, starting from web root (~). + + + + + An extension method marked with this attribute is processed by ReSharper code completion + as a 'Source Template'. When extension method is completed over some expression, it's source code + is automatically expanded like a template at call site. + + + Template method body can contain valid source code and/or special comments starting with '$'. + Text inside these comments is added as source code when the template is applied. Template parameters + can be used either as additional method parameters or as identifiers wrapped in two '$' signs. + Use the attribute to specify macros for parameters. + + + In this example, the 'forEach' method is a source template available over all values + of enumerable types, producing ordinary C# 'foreach' statement and placing caret inside block: + + [SourceTemplate] + public static void forEach<T>(this IEnumerable<T> xs) { + foreach (var x in xs) { + //$ $END$ + } + } + + + + + + Allows specifying a macro for a parameter of a source template. + + + You can apply the attribute on the whole method or on any of its additional parameters. The macro expression + is defined in the property. When applied on a method, the target + template parameter is defined in the property. To apply the macro silently + for the parameter, set the property value = -1. + + + Applying the attribute on a source template method: + + [SourceTemplate, Macro(Target = "item", Expression = "suggestVariableName()")] + public static void forEach<T>(this IEnumerable<T> collection) { + foreach (var item in collection) { + //$ $END$ + } + } + + Applying the attribute on a template method parameter: + + [SourceTemplate] + public static void something(this Entity x, [Macro(Expression = "guid()", Editable = -1)] string newguid) { + /*$ var $x$Id = "$newguid$" + x.ToString(); + x.DoSomething($x$Id); */ + } + + + + + + Allows specifying a macro that will be executed for a source template + parameter when the template is expanded. + + + + + Allows specifying which occurrence of the target parameter becomes editable when the template is deployed. + + + If the target parameter is used several times in the template, only one occurrence becomes editable; + other occurrences are changed synchronously. To specify the zero-based index of the editable occurrence, + use values >= 0. To make the parameter non-editable when the template is expanded, use -1. + > + + + + Identifies the target parameter of a source template if the + is applied on a template method. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC action. If applied to a method, the MVC action name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC area. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is + an MVC controller. If applied to a method, the MVC controller name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC Master. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC model type. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is an MVC + partial view. If applied to a method, the MVC partial view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Allows disabling inspections for MVC views within a class or a method. + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC display template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.DisplayExtensions.DisplayForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC editor template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.EditorExtensions.EditorForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC template. + Use this attribute for custom wrappers similar to + System.ComponentModel.DataAnnotations.UIHintAttribute(System.String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component. If applied to a method, the MVC view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Controller.View(Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component name. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component view. If applied to a method, the MVC view component view name is default. + + + + + ASP.NET MVC attribute. When applied to a parameter of an attribute, + indicates that this parameter is an MVC action name. + + + [ActionName("Foo")] + public ActionResult Login(string returnUrl) { + ViewBag.ReturnUrl = Url.Action("Foo"); // OK + return RedirectToAction("Bar"); // Error: Cannot resolve action + } + + + + + Razor attribute. Indicates that a parameter or a method is a Razor section. + Use this attribute for custom wrappers similar to + System.Web.WebPages.WebPageBase.RenderSection(String). + + + + + Indicates how method, constructor invocation or property access + over collection type affects content of the collection. + + + + Method does not use or modify content of the collection. + + + Method only reads content of the collection but does not modify it. + + + Method can change content of the collection but does not add new elements. + + + Method can add new elements to the collection. + + + + Indicates that the marked method is assertion method, i.e. it halts control flow if + one of the conditions is satisfied. To set the condition, mark one of the parameters with + attribute. + + + + + Indicates the condition parameter of the assertion method. The method itself should be + marked by attribute. The mandatory argument of + the attribute is the assertion type. + + + + + Specifies assertion type. If the assertion method argument satisfies the condition, + then the execution continues. Otherwise, execution is assumed to be halted. + + + + Marked parameter should be evaluated to true. + + + Marked parameter should be evaluated to false. + + + Marked parameter should be evaluated to null value. + + + Marked parameter should be evaluated to not null value. + + + + Indicates that the marked method unconditionally terminates control flow execution. + For example, it could unconditionally throw exception. + + + + + Indicates that method is pure LINQ method, with postponed enumeration (like Enumerable.Select, + .Where). This annotation allows inference of [InstantHandle] annotation for parameters + of delegate type by analyzing LINQ method chains. + + + + + Indicates that IEnumerable, passed as parameter, is not enumerated. + + + + + Indicates that parameter is regular expression pattern. + + + + + Prevents the Member Reordering feature from tossing members of the marked class. + + + The attribute must be mentioned in your member reordering patterns + + + + + XAML attribute. Indicates the type that has ItemsSource property and should be treated + as ItemsControl-derived type, to enable inner items DataContext type resolve. + + + + + XAML attribute. Indicates the property of some BindingBase-derived type, that + is used to bind some item of ItemsControl-derived type. This annotation will + enable the DataContext type resolve for XAML bindings for such properties. + + + Property should have the tree ancestor of the ItemsControl type or + marked with the attribute. + + + + + Support implementation of + + + + + + + + + + + + + + + + + Asynchronous continuation delegate - function invoked at the end of asynchronous + processing. + + Exception during asynchronous processing or null if no exception + was thrown. + + + + Helpers for asynchronous operations. + + + + + Iterates over all items in the given collection and runs the specified action + in sequence (each action executes only after the preceding one has completed without an error). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Repeats the specified asynchronous action multiple times and invokes asynchronous continuation at the end. + + The repeat count. + The asynchronous continuation to invoke at the end. + The action to invoke. + + + + Modifies the continuation by pre-pending given action to execute just before it. + + The async continuation. + The action to pre-pend. + Continuation which will execute the given action before forwarding to the actual continuation. + + + + Attaches a timeout to a continuation which will invoke the continuation when the specified + timeout has elapsed. + + The asynchronous continuation. + The timeout. + Wrapped continuation. + + + + Iterates over all items in the given collection and runs the specified action + in parallel (each action executes on a thread from thread pool). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Runs the specified asynchronous action synchronously (blocks until the continuation has + been invoked). + + The action. + + Using this method is not recommended because it will block the calling thread. + + + + + Wraps the continuation with a guard which will only make sure that the continuation function + is invoked only once. + + The asynchronous continuation. + Wrapped asynchronous continuation. + + + + Gets the combined exception from all exceptions in the list. + + The exceptions. + Combined exception or null if no exception was thrown. + + + + Disposes the Timer, and waits for it to leave the Timer-callback-method + + The Timer object to dispose + Timeout to wait (TimeSpan.Zero means dispose without waiting) + Timer disposed within timeout (true/false) + + + + Asynchronous action. + + Continuation to be invoked at the end of action. + + + + Asynchronous action with one argument. + + Type of the argument. + Argument to the action. + Continuation to be invoked at the end of action. + + + + Represents the logging event with asynchronous continuation. + + + + + Initializes a new instance of the struct. + + The log event. + The continuation. + + + + Gets the log event. + + + + + Gets the continuation. + + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + A value of true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + String Conversion Helpers + + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + Output value + Default value + Returns false if the input value could not be parsed + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + The type of the enum + Output value. Null if parse failed + + + + Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. A parameter specifies whether the operation is case-sensitive. The return value indicates whether the conversion succeeded. + + The enumeration type to which to convert value. + The string representation of the enumeration name or underlying value to convert. + true to ignore case; false to consider case. + When this method returns, result contains an object of type TEnum whose value is represented by value if the parse operation succeeds. If the parse operation fails, result contains the default value of the underlying type of TEnum. Note that this value need not be a member of the TEnum enumeration. This parameter is passed uninitialized. + true if the value parameter was converted successfully; otherwise, false. + Wrapper because Enum.TryParse is not present in .net 3.5 + + + + Enum.TryParse implementation for .net 3.5 + + + + Don't uses reflection + + + + Enables to extract extra context details for + + + + + Name of context + + + + + The current LogFactory next to LogManager + + + + + NLog internal logger. + + Writes to file, console or custom text writer (see ) + + + Don't use as that can lead to recursive calls - stackoverflow + + + + + Gets a value indicating whether internal log includes Trace messages. + + + + + Gets a value indicating whether internal log includes Debug messages. + + + + + Gets a value indicating whether internal log includes Info messages. + + + + + Gets a value indicating whether internal log includes Warn messages. + + + + + Gets a value indicating whether internal log includes Error messages. + + + + + Gets a value indicating whether internal log includes Fatal messages. + + + + + Logs the specified message without an at the Trace level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + Log message. + + + + Logs the specified message without an at the Trace level. + will be only called when logging is enabled for level Trace. + + Function that returns the log message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Trace level. + will be only called when logging is enabled for level Trace. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Debug level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Debug level. + + Log message. + + + + Logs the specified message without an at the Debug level. + will be only called when logging is enabled for level Debug. + + Function that returns the log message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Debug level. + will be only called when logging is enabled for level Debug. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Info level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Info level. + + Log message. + + + + Logs the specified message without an at the Info level. + will be only called when logging is enabled for level Info. + + Function that returns the log message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Info level. + will be only called when logging is enabled for level Info. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Warn level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Warn level. + + Log message. + + + + Logs the specified message without an at the Warn level. + will be only called when logging is enabled for level Warn. + + Function that returns the log message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Warn level. + will be only called when logging is enabled for level Warn. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Error level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Error level. + + Log message. + + + + Logs the specified message without an at the Error level. + will be only called when logging is enabled for level Error. + + Function that returns the log message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Error level. + will be only called when logging is enabled for level Error. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Fatal level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Fatal level. + + Log message. + + + + Logs the specified message without an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Function that returns the log message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Exception to be logged. + Function that returns the log message. + + + + Initializes static members of the InternalLogger class. + + + + + Set the config of the InternalLogger with defaults and config. + + + + + Gets or sets the minimal internal log level. + + If set to , then messages of the levels , and will be written. + + + + Gets or sets a value indicating whether internal messages should be written to the console output stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the console error stream. + + Your application must be a console application. + + + + Gets or sets the file path of the internal log file. + + A value of value disables internal logging to a file. + + + + Gets or sets the text writer that will receive internal logs. + + + + + Event written to the internal log. + Please note that the event is not triggered when then event hasn't the minimal log level set by + + + + + Gets or sets a value indicating whether timestamp should be included in internal log output. + + + + + Is there an thrown when writing the message? + + + + + Logs the specified message without an at the specified level. + + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the specified level. + + Log level. + Log message. + + + + Logs the specified message without an at the specified level. + will be only called when logging is enabled for level . + + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + will be only called when logging is enabled for level . + + Exception to be logged. + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Log message. + + + + Write to internallogger. + + optional exception to be logged. + level + message + optional args for + + + + Create log line with timestamp, exception message etc (if configured) + + + + + Determine if logging should be avoided because of exception type. + + The exception to check. + true if logging should be avoided; otherwise, false. + + + + Determine if logging is enabled for given LogLevel + + The for the log event. + true if logging is enabled; otherwise, false. + + + + Determine if logging is enabled. + + true if logging is enabled; otherwise, false. + + + + Write internal messages to the log file defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged only when the property is true, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged when the property is true, otherwise the + method has no effect. + + + + + Logs the assembly version and file version of the given Assembly. + + The assembly to log. + + + + A message has been written to the internal logger + + + + + The rendered message + + + + + The log level + + + + + The exception. Could be null. + + + + + The type that triggered this internal log event, for example the FileTarget. + This property is not always populated. + + + + + The context name that triggered this internal log event, for example the name of the Target. + This property is not always populated. + + + + + + + + A cyclic buffer of object. + + + + + Initializes a new instance of the class. + + Buffer size. + Whether buffer should grow as it becomes full. + The maximum number of items that the buffer can grow to. + + + + Gets the capacity of the buffer + + + + + Gets the number of items in the buffer + + + + + Adds the specified log event to the buffer. + + Log event. + The number of items in the buffer. + + + + Gets the array of events accumulated in the buffer and clears the buffer as one atomic operation. + + Events in the buffer. + + + + Condition and expression. + + + + + Initializes a new instance of the class. + + Left hand side of the AND expression. + Right hand side of the AND expression. + + + + Gets the left hand side of the AND expression. + + + + + Gets the right hand side of the AND expression. + + + + + Returns a string representation of this expression. + + A concatenated '(Left) and (Right)' string. + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the conjunction operator. + + + + Exception during evaluation of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Base class for representing nodes in condition expression trees. + + + + + Converts condition text to a condition expression tree. + + Condition text to be converted. + Condition expression tree. + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition layout expression (represented by a string literal + with embedded ${}). + + + + + Initializes a new instance of the class. + + The layout. + + + + Gets the layout. + + The layout. + + + + Returns a string representation of this expression. + + String literal in single quotes. + + + + Evaluates the expression by calculating the value + of the layout in the specified evaluation context. + + Evaluation context. + The value of the layout. + + + + Condition level expression (represented by the level keyword). + + + + + Returns a string representation of the expression. + + The 'level' string. + + + + Evaluates to the current log level. + + Evaluation context. Ignored. + The object representing current log level. + + + + Condition literal expression (numeric, LogLevel.XXX, true or false). + + + + + Initializes a new instance of the class. + + Literal value. + + + + Gets the literal value. + + The literal value. + + + + Returns a string representation of the expression. + + The literal value. + + + + Evaluates the expression. + + Evaluation context. + The literal value as passed in the constructor. + + + + Condition logger name expression (represented by the logger keyword). + + + + + Returns a string representation of this expression. + + A logger string. + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + Returns a string representation of this expression. + + The 'message' string. + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Initializes a new instance of the class. + + Condition method name. + + + + Condition method invocation expression (represented by method(p1,p2,p3) syntax). + + + + + Initializes a new instance of the class. + + Name of the condition method. + of the condition method. + Precompiled delegate of the condition method. + The method parameters. + + + + Gets the method info. + + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + A bunch of utility methods (mostly predicates) which can be used in + condition expressions. Partially inspired by XPath 1.0. + + + + + Compares two values for equality. + + The first value. + The second value. + true when two objects are equal, false otherwise. + + + + Compares two strings for equality. + + The first string. + The second string. + Optional. If true, case is ignored; if false (default), case is significant. + true when two strings are equal, false otherwise. + + + + Gets or sets a value indicating whether the second string is a substring of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a substring of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a prefix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a suffix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Returns the length of a string. + + A string whose lengths is to be evaluated. + The length of the string. + + + + Indicates whether the specified regular expression finds a match in the specified input string. + + The string to search for a match. + The regular expression pattern to match. + A string consisting of the desired options for the test. The possible values are those of the separated by commas. + true if the regular expression finds a match; otherwise, false. + + + + + + + + + + + Marks the class as containing condition methods. + + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Gets the expression to be negated. + + The expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition or expression. + + + + + Initializes a new instance of the class. + + Left hand side of the OR expression. + Right hand side of the OR expression. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + Exception during parsing of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Condition parser. Turns a string representation of condition expression + into an expression tree. + + + + + Initializes a new instance of the class. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + Instance of used to resolve references to condition methods and layout renderers. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + + Try stringed keyword to + + + + success? + + + + Parse number + + negative number? minus should be parsed first. + + + + + Condition relational (==, !=, <, <=, + > or >=) expression. + + + + + Initializes a new instance of the class. + + The left expression. + The right expression. + The relational operator. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Gets the relational operator. + + The operator. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Compares the specified values using specified relational operator. + + The first value. + The second value. + The relational operator. + Result of the given relational operator. + + + + Promote values to the type needed for the comparision, e.g. parse a string to int. + + + + + + + Promotes to type + + + + success? + + + + Try to promote both values. First try to promote to , + when failed, try to . + + + + + + Get the order for the type for comparision. + + + index, 0 to max int. Lower is first + + + + Dictionary from type to index. Lower index should be tested first. + + + + + Build the dictionary needed for the order of the types. + + + + + + Get the string representing the current + + + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + Hand-written tokenizer for conditions. + + + + + Initializes a new instance of the class. + + The string reader. + + + + Gets the type of the token. + + The type of the token. + + + + Gets the token value. + + The token value. + + + + Gets the value of a string token. + + The string token value. + + + + Asserts current token type and advances to the next token. + + Expected token type. + If token type doesn't match, an exception is thrown. + + + + Asserts that current token is a keyword and returns its value and advances to the next token. + + Keyword value. + + + + Gets or sets a value indicating whether current keyword is equal to the specified value. + + The keyword. + + A value of true if current keyword is equal to the specified value; otherwise, false. + + + + + Gets or sets a value indicating whether the tokenizer has reached the end of the token stream. + + + A value of true if the tokenizer has reached the end of the token stream; otherwise, false. + + + + + Gets or sets a value indicating whether current token is a number. + + + A value of true if current token is a number; otherwise, false. + + + + + Gets or sets a value indicating whether the specified token is of specified type. + + The token type. + + A value of true if current token is of specified type; otherwise, false. + + + + + Gets the next token and sets and properties. + + + + + Try the comparison tokens (greater, smaller, greater-equals, smaller-equals) + + current char + is match + + + + Try the logical tokens (and, or, not, equals) + + current char + is match + + + + Mapping between characters and token types for punctuations. + + + + + Initializes a new instance of the CharToTokenType struct. + + The character. + Type of the token. + + + + Token types for condition expressions. + + + + + Marks the class or a member as advanced. Advanced classes and members are hidden by + default in generated documentation. + + + + + Initializes a new instance of the class. + + + + + Identifies that the output of layout or layout render does not change for the lifetime of the current appdomain. + + + A layout(renderer) could be converted to a literal when: + - The layout and all layout properties are SimpleLayout or [AppDomainFixedOutput] + + Recommendation: Apply this attribute to a layout or layout-renderer which have the result only changes by properties of type Layout. + + + + + Used to mark configurable parameters which are arrays. + Specifies the mapping between XML elements and .NET types. + + + + + Initializes a new instance of the class. + + The type of the array item. + The XML element name that represents the item. + + + + Gets the .NET type of the array item. + + + + + Gets the XML element name. + + + + + An assembly is trying to load. + + + + + New event args + + + + + + The assembly that is trying to load. + + + + + Constructs a new instance the configuration item (target, layout, layout renderer, etc.) given its type. + + Type of the item. + Created object of the specified type. + + + + Provides registration information for named items (targets, layouts, layout renderers, etc.) managed by NLog. + + Everything of an assembly could be loaded by + + + + + Called before the assembly will be loaded. + + + + + Initializes a new instance of the class. + + The assemblies to scan for named items. + + + + Gets or sets default singleton instance of . + + + This property implements lazy instantiation so that the is not built before + the internal logger is configured. + + + + + Gets or sets the creator delegate used to instantiate configuration objects. + + + By overriding this property, one can enable dependency injection or interception for created objects. + + + + + Gets the factory. + + The target factory. + + + + Gets the factory. + + The filter factory. + + + + gets the factory + + not using due to backwards-compatibility. + + + + + Gets the factory. + + The layout renderer factory. + + + + Gets the factory. + + The layout factory. + + + + Gets the ambient property factory. + + The ambient property factory. + + + + Legacy interface, no longer used by the NLog engine + + + + + Gets or sets the JSON serializer to use with or + + + + + Gets or sets the string serializer to use with + + + + + Gets or sets the custom object-type transformation for use in , or + + + + + Gets or sets the parameter converter to use with , or + + + + + Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) + + + - Null (Auto Detect) : NLog-parser checks for positional parameters, and will then fallback to string.Format-rendering. + - True: Always performs the parsing of and rendering of using the NLog-parser (Allows custom formatting with ) + - False: Always performs parsing and rendering using string.Format (Fastest if not using structured logging) + + + + + Gets the time source factory. + + The time source factory. + + + + Gets the condition method factory. + + The condition method factory. + + + + Gets the condition method factory (precompiled) + + The condition method factory. + + + + Registers named items from the assembly. + + The assembly. + + + + Registers named items from the assembly. + + The assembly. + Item name prefix. + + + + Call Preload for NLogPackageLoader + + + Every package could implement a class "NLogPackageLoader" (namespace not important) with the public static method "Preload" (no arguments) + This method will be called just before registering all items in the assembly. + + + + + + Call the Preload method for . The Preload method must be static. + + + + + + Clears the contents of all factories. + + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Builds the default configuration item factory. + + Default factory. + + + + Registers items in NLog.Extended.dll using late-bound types, so that we don't need a reference to NLog.Extended.dll. + + + + + Attribute used to mark the default parameters for layout renderers. + + + + + Initializes a new instance of the class. + + + + + Dynamic filtering with a positive list of enabled levels + + + + + Dynamic filtering with a minlevel and maxlevel range + + + + + Format of the exception output to the specific target. + + + + + Appends the Message of an Exception to the specified target. + + + + + Appends the type of an Exception to the specified target. + + + + + Appends the short type of an Exception to the specified target. + + + + + Appends the result of calling ToString() on an Exception to the specified target. + + + + + Appends the method name from Exception's stack trace to the specified target. + + + + + Appends the stack trace from an Exception to the specified target. + + + + + Appends the contents of an Exception's Data property to the specified target. + + + + + Destructure the exception (usually into JSON) + + + + + Appends the from the application or the object that caused the error. + + + + + Appends the from the application or the object that caused the error. + + + + + Appends any additional properties that specific type of Exception might have. + + + + + Factory for class-based items. + + The base type of each item. + The type of the attribute used to annotate items. + + + + Scans the assembly. + + The types to scan. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the item based on a type name. + + Name of the item. + Name of the type. + + + + Clears the contents of the factory. + + + + + Registers a single type definition. + + The item name. + The type of the item. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Creates an item instance. + + The name of the item. + Created item. + + + + Factory specialized for s. + + + + + Clear all func layouts + + + + + Register a layout renderer with a callback function. + + Name of the layoutrenderer, without ${}. + the renderer that renders the value. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides means to populate factories of named items (such as targets, layouts, layout renderers, etc.). + + + + + Implemented by objects which support installation and uninstallation. + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Interface for accessing configuration details + + + + + Name of the config section + + + + + Configuration Key/Value Pairs + + + + + Child config sections + + + + + Interface for loading NLog + + + + + Finds and loads the NLog configuration + + LogFactory that owns the NLog configuration + Name of NLog.config file (optional) + NLog configuration (or null if none found) + + + + Notifies when LoggingConfiguration has been successfully applied + + LogFactory that owns the NLog configuration + NLog Config + + + + Get file paths (including filename) for the possible NLog config files. + + Name of NLog.config file (optional) + The file paths to the possible config file + + + + Level enabled flags for each LogLevel ordinal + + + + + Converts the filter into a simple + + + + + Represents a factory of named items (such as targets, layouts, layout renderers, etc.). + + Base type for each item instance. + Item definition type (typically or ). + + + + Registers new item definition. + + Name of the item. + Item definition. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Creates item instance. + + Name of the item. + Newly created item instance. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides context for install/uninstall operations. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log output. + + + + Gets or sets the installation log level. + + + + + Gets or sets a value indicating whether to ignore failures during installation. + + + + + Whether installation exceptions should be rethrown. If IgnoreFailures is set to true, + this property has no effect (there are no exceptions to rethrow). + + + + + Gets the installation parameters. + + + + + Gets or sets the log output. + + + + + Logs the specified trace message. + + The message. + The arguments. + + + + Logs the specified debug message. + + The message. + The arguments. + + + + Logs the specified informational message. + + The message. + The arguments. + + + + Logs the specified warning message. + + The message. + The arguments. + + + + Logs the specified error message. + + The message. + The arguments. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Creates the log event which can be used to render layouts during installation/uninstallations. + + Log event info object. + + + + Convert object-value into specified type + + + + + Parses the input value and converts into the wanted type + + Input Value + Wanted Type + Format to use when parsing + Culture to use when parsing + Output value with wanted type + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for extension loading + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for enabling NLog + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + LoggingConfiguration being built + + + + + Interface for fluent setup of LogFactory options for logevent serialization + + + + + LogFactory under configuration + + + + + Encapsulates and the logic to match the actual logger name + All subclasses defines immutable objects. + Concrete subclasses defines various matching rules through + + + + + Creates a concrete based on . + + + Rules used to select the concrete implementation returned: + + if is null => returns (never matches) + if doesn't contains any '*' nor '?' => returns (matches only on case sensitive equals) + if == '*' => returns (always matches) + if doesn't contain '?' + + if contains exactly 2 '*' one at the beginning and one at the end (i.e. "*foobar*) => returns + if contains exactly 1 '*' at the beginning (i.e. "*foobar") => returns + if contains exactly 1 '*' at the end (i.e. "foobar*") => returns + + + returns + + + + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + A concrete + + + + Returns the argument passed to + + + + + Checks whether given name matches the logger name pattern. + + String to be matched. + A value of when the name matches, otherwise. + + + + Defines a that never matches. + Used when pattern is null + + + + + Defines a that always matches. + Used when pattern is '*' + + + + + Defines a that matches with a case-sensitive Equals + Used when pattern is a string without wildcards '?' '*' + + + + + Defines a that matches with a case-sensitive StartsWith + Used when pattern is a string like "*foobar" + + + + + Defines a that matches with a case-sensitive EndsWith + Used when pattern is a string like "foobar*" + + + + + Defines a that matches with a case-sensitive Contains + Used when pattern is a string like "*foobar*" + + + + + Defines a that matches with a complex wildcards combinations: + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + used when pattern is a string containing any number of '?' or '*' in any position + i.e. "*Server[*].Connection[?]" + + + + + Keeps logging configuration and provides simple API to modify it. + + This class is thread-safe..ToList() is used for that purpose. + + + + Variables defined in xml or in API. name is case case insensitive. + + + + + Gets the factory that will be configured + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete on NLog 4.1 and it may be removed in a future release. + + + + Gets the variables defined in the configuration. + + + + + Gets a collection of named targets specified in the configuration. + + + A list of named targets. + + + Unnamed targets (such as those wrapped by other targets) are not returned. + + + + + Gets the collection of file names which should be watched for changes by NLog. + + + + + Gets the collection of logging rules. + + + + + Gets or sets the default culture info to use as . + + + Specific culture info or null to use + + + + + Gets all targets. + + + + + Compare objects based on their name. + + This property is use to cache the comparer object. + + + + Defines methods to support the comparison of objects for equality based on their name. + + + + + Registers the specified target object. The name of the target is read from . + + + The target object with a non + + when is + + + + Registers the specified target object under a given name. + + Name of the target. + The target object. + when is + when is + + + + Finds the target with the specified name. + + + The name of the target to be found. + + + Found target or when the target is not found. + + + + + Finds the target with the specified name and specified type. + + + The name of the target to be found. + + Type of the target + + Found target or when the target is not found of not of type + + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for all loglevels. + + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Finds the logging rule with the specified name. + + The name of the logging rule to be found. + Found logging rule or when not found. + + + + Removes the specified named logging rule. + + The name of the logging rule to be removed. + Found one or more logging rule to remove, or when not found. + + + + Called by LogManager when one of the log configuration files changes. + + + A new instance of that represents the updated configuration. + + + + + Removes the specified named target. + + Name of the target. + + + + Installs target-specific objects on current system. + + The installation context. + + Installation typically runs with administrative permissions. + + + + + Uninstalls target-specific objects from current system. + + The installation context. + + Uninstallation typically runs with administrative permissions. + + + + + Closes all targets and releases any unmanaged resources. + + + + + Log to the internal (NLog) logger the information about the and associated with this instance. + + + The information are only recorded in the internal logger if Debug level is enabled, otherwise nothing is + recorded. + + + + + Validates the configuration. + + + + + Copies all variables from provided dictionary into current configuration variables. + + Master variables dictionary + + + + Replace a simple variable with a value. The original value is removed and thus we cannot redo this in a later stage. + + + + + + + Checks whether unused targets exist. If found any, just write an internal log at Warn level. + If initializing not started or failed, then checking process will be canceled + + + + + + + + Arguments for events. + + + + + Initializes a new instance of the class. + + The new configuration. + The old configuration. + + + + Gets the old configuration. + + The old configuration. + + + + Gets the new configuration. + + The new configuration. + + + + Gets the new configuration + + The new configuration. + + + + Gets the old configuration + + The old configuration. + + + + Gets the optional boolean attribute value. + + + Name of the attribute. + Default value to return if the attribute is not found or if there is a parse error + Boolean attribute value or default. + + + + Remove the namespace (before :) + + + x:a, will be a + + + + + + + Enables loading of NLog configuration from a file + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Loads NLog configuration from + + + + + Constructor + + + + + + Loads NLog configuration from provided config section + + + + + + + Builds list with unique keys, using last value of duplicates. High priority keys placed first. + + + + + + + Parse loglevel, but don't throw if exception throwing is disabled + + Name of attribute for logging. + Value of parse. + Used if there is an exception + + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Parse {Rules} xml element + + + Rules are added to this parameter. + + + + Parse {Logger} xml element + + + + + + Parse boolean + + Name of the property for logging. + value to parse + Default value to return if the parse failed + Boolean attribute value or default. + + + + Represents a logging rule. An equivalent of <logger /> configuration element. + + + + + Create an empty . + + + + + Create an empty . + + + + + Create a new with a and which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a new with a which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a (disabled) . You should call or see cref="EnableLoggingForLevels"/> to enable logging. + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Target to be written to when the rule matches. + + + + Rule identifier to allow rule lookup + + + + + Gets a collection of targets that should be written to when this rule matches. + + + + + Gets a collection of child rules to be evaluated when this rule matches. + + + + + Gets a collection of filters to be checked before writing to targets. + + + + + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + + Gets or sets logger name pattern. + + + Logger name pattern used by to check if a logger name matches this rule. + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + + + + Gets the collection of log levels enabled by this rule. + + + + + Default action if none of the filters match + + + + + Enables logging for a particular level. + + Level to be enabled. + + + + Enables logging for a particular levels between (included) and . + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Disables logging for a particular level. + + Level to be disabled. + + + + Disables logging for particular levels between (included) and . + + Minimum log level to be disables. + Maximum log level to de disabled. + + + + Enables logging the levels between (included) and . All the other levels will be disabled. + + >Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Returns a string representation of . Used for debugging. + + + A that represents the current . + + + + + Checks whether te particular log level is enabled for this rule. + + Level to be checked. + A value of when the log level is enabled, otherwise. + + + + Checks whether given name matches the . + + String to be matched. + A value of when the name matches, otherwise. + + + + Default filtering with static level config + + + + + Factory for locating methods. + + + + + Initializes a new instance of the class. + + Helper method to extract relevant methods from type + + + + Scans the assembly for classes marked with expected class + and methods marked with expected and adds them + to the factory. + + The types to scan. + The prefix to use for names. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Scans a type for relevant methods with their symbolic names + + Include types that are marked with this attribute + Include methods that are marked with this attribute + Class Type to scan + Collection of methods with their symbolic names + + + + Clears contents of the factory. + + + + + Registers the definition of a single method. + + The method name. + The method info. + + + + Registers the definition of a single method. + + The method name. + The method info. + The precompiled method delegate. + + + + Tries to retrieve method by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Tries to retrieve method-delegate by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Retrieves method by name. + + Method name. + MethodInfo object. + + + + Retrieves method by name. + + Method name. + Method delegate object. + + + + Tries to get method definition. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Marks the layout or layout renderer depends on mutable objects from the LogEvent + + This can be or + + + + + Attaches a simple name to an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The name of the item. + + + + Gets the name of the item. + + The name of the item. + + + + Indicates NLog should not scan this property during configuration. + + + + + Initializes a new instance of the class. + + + + + Marks the object as configuration item for NLog. + + + + + Initializes a new instance of the class. + + + + + Represents simple XML element with case-insensitive attribute semantics. + + + + + Initializes a new instance of the class. + + The reader to initialize element from. + + + + Prevents a default instance of the class from being created. + + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + Last error occured during configuration read + + + + + Returns children elements with the specified element name. + + Name of the element. + Children elements with the specified element name. + + + + Asserts that the name of the element is among specified element names. + + The allowed names. + + + + Returns all parsing errors from current and all child elements. + + + + + Special attribute we could ignore + + + + + Default implementation of + + + + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Provides simple programmatic configuration API used for trivial logging cases. + + Warning, these methods will overwrite the current config. + + + + + Configures NLog for console logging so that all messages above and including + the level are output to the console. + + + + + Configures NLog for console logging so that all messages above and including + the specified level are output to the console. + + The minimal logging level. + + + + Configures NLog for to log to the specified target so that all messages + above and including the level are output. + + The target to log all messages to. + + + + Configures NLog for to log to the specified target so that all messages + above and including the specified level are output. + + The target to log all messages to. + The minimal logging level. + + + + Configures NLog for file logging so that all messages above and including + the level are written to the specified file. + + Log file name. + + + + Configures NLog for file logging so that all messages above and including + the specified level are written to the specified file. + + Log file name. + The minimal logging level. + + + + Value indicating how stack trace should be captured when processing the log event. + + + + + Stack trace should not be captured. + + + + + Stack trace should be captured without source-level information. + + + + + Capture maximum amount of the stack trace information supported on the platform. + + + + + Marks the layout or layout renderer as thread independent - it producing correct results + regardless of the thread it's running on. + + Without this attribute everything is rendered on the main thread. + + + If this attribute is set on a layout, it could be rendered on the another thread. + This could be more efficient as it's skipped when not needed. + + If context like HttpContext.Current is needed, which is only available on the main thread, this attribute should not be applied. + + See the AsyncTargetWrapper and BufferTargetWrapper with the , using + + Apply this attribute when: + - The result can we rendered in another thread. Delaying this could be more efficient. And/Or, + - The result should not be precalculated, for example the target sends some extra context information. + + + + + Marks the layout or layout renderer as thread safe - it producing correct results + regardless of the number of threads it's running on. + + Without this attribute then the target concurrency will be reduced + + + + + A class for configuring NLog through an XML configuration file + (App.config style or App.nlog style). + + Parsing of the XML file is also implemented in this class. + + + - This class is thread-safe..ToList() is used for that purpose. + - Update TemplateXSD.xml for changes outside targets + + + + + Initializes a new instance of the class. + + Configuration file to be read. + + + + Initializes a new instance of the class. + + Configuration file to be read. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + XML reader to read from. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + The XML contents. + Name of the XML file. + The to which to apply any applicable configuration values. + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + NLog LogFactory + + + + Did the Succeeded? true= success, false= error, null = initialize not started yet. + + + + + Gets or sets a value indicating whether all of the configuration files + should be watched for changes and reloaded automatically when changed. + + + + + Gets the collection of file names which should be watched for changes by NLog. + This is the list of configuration files processed. + If the autoReload attribute is not set it returns empty collection. + + + + + Re-reads the original configuration file and returns the new object. + + The new object. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Create XML reader for (xml config) file. + + filepath + reader or null if filename is empty. + + + + Initializes the configuration. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Checks whether any error during XML configuration parsing has occured. + If there are any and ThrowConfigExceptions or ThrowExceptions + setting is enabled - throws NLogConfigurationException, otherwise + just write an internal log at Warn level. + + Root NLog configuration xml element + + + + Add a file with configuration. Check if not already included. + + + + + + + Parse the root + + + path to config file. + The default value for the autoReload option. + + + + Parse {configuration} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parse {NLog} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Include (multiple) files by filemask, e.g. *.nlog + + base directory in case if is relative + relative or absolute fileMask + + + + + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language + described
here. + + + + + Gets or sets the condition expression. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + An abstract filter class. Provides a way to eliminate log messages + based on properties other than logger name and log level. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the action to be taken when filter matches. + + + + + + Gets the result of evaluating filter against given log event. + + The log event. + Filter result. + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Marks class as a layout renderer and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the filter. + + + + Filter result. + + + + + The filter doesn't want to decide whether to log or discard the message. + + + + + The message should be logged. + + + + + The message should not be logged. + + + + + The message should be logged and processing should be finished. + + + + + The message should not be logged and processing should be finished. + + + + + A base class for filters that are based on comparing a value to a layout. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout to be used to filter log messages. + + The layout. + + + + + Matches when the calculated layout contains the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets the substring to be matched. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets a string to compare the layout to. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches the provided filter-method + + + + + Initializes a new instance of the class. + + + + + + + + Matches when the calculated layout does NOT contain the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets the substring to be matched. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is NOT equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a string to compare the layout to. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the result of the calculated layout has been repeated a moment ago + + + + + How long before a filter expires, and logging is accepted again + + + + + + Max length of filter values, will truncate if above limit + + + + + + Applies the configured action to the initial logevent that starts the timeout period. + Used to configure that it should ignore all events until timeout. + + + + + + Max number of unique filter values to expect simultaneously + + + + + + Default number of unique filter values to expect, will automatically increase if needed + + + + + + Insert FilterCount value into when an event is no longer filtered + + + + + + Append FilterCount to the when an event is no longer filtered + + + + + + Reuse internal buffers, and doesn't have to constantly allocate new buffers + + + + + + Default buffer size for the internal buffers + + + + + + Can be used if has been enabled. + + + + + Initializes a new instance of the class. + + + + + Checks whether log event should be logged or not. In case the LogEvent has just been repeated. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Uses object pooling, and prunes stale filter items when the pool runs dry + + + + + Remove stale filter-value from the cache, and fill them into the pool for reuse + + + + + Renders the Log Event into a filter value, that is used for checking if just repeated + + + + + Repeated LogEvent detected. Checks if it should activate filter-action + + + + + Filter Value State (mutable) + + + + + Filter Lookup Key (immutable) + + + + + A fluent class to build log events for NLog. + + + + + Initializes a new instance of the class. + + The to send the log event. + + + + Initializes a new instance of the class. + + The to send the log event. + The for the log event. + + + + Gets the created by the builder. + + + + + Sets the information of the logging event. + + The exception information of the logging event. + current for chaining calls. + + + + Sets the level of the logging event. + + The level of the logging event. + current for chaining calls. + + + + Sets the logger name of the logging event. + + The logger name of the logging event. + current for chaining calls. + + + + Sets the log message on the logging event. + + The log message for the logging event. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + The fourth object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + An object that supplies culture-specific formatting information. + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets a per-event context property on the logging event. + + The name of the context property. + The value of the context property. + current for chaining calls. + + + + Sets multiple per-event context properties on the logging event. + + The properties to set. + current for chaining calls. + + + + Sets the timestamp of the logging event. + + The timestamp of the logging event. + current for chaining calls. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + current for chaining calls. + + + + Writes the log event to the underlying logger. + + + + + Writes the log event to the underlying logger. + + If condition is true, write log event; otherwise ignore event. + + + + Writes the log event to the underlying logger. + + If condition is true, write log event; otherwise ignore event. + + + + Extension methods for NLog . + + + + + Starts building a log event with the specified . + + The logger to write the log event to. + The log level. + current for chaining calls. + + + + Starts building a log event at the Trace level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Debug level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Info level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Warn level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Error level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Fatal level. + + The logger to write the log event to. + current for chaining calls. + + + + Global Diagnostics Context + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Global Diagnostics Context - a dictionary structure to hold per-application-instance values. + + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The item value, if defined; otherwise null. + + + + Returns all item names + + A collection of the names of all items in the Global Diagnostics Context. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Include context properties + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Interface for serialization of object values into JSON format + + + + + Serialization of an object into JSON format. + + The object to serialize to JSON. + Output destination. + Serialize succeeded (true/false) + + + + Provides logging interface and utility functions. + + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Logger with only generic methods (passing 'LogLevel' to methods) and core properties. + + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Extensions for NLog . + + + + + Writes the diagnostic message and exception at the specified level. + + A logger implementation that will handle the message. + The log level. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Allocates new builder and appends to the provided target builder on dispose + + + + + Access the new builder allocated + + + + + Helpers for . + + + + + Load from url + + file or path, including .dll + basepath, optional + + + + + Load from url + + name without .dll + + + + + Forward declare of system delegate type for use by other classes + + + + + Keeps track of pending operation count, and can notify when pending operation count reaches zero + + + + + Mark operation has started + + + + + Mark operation has completed + + Exception coming from the completed operation [optional] + + + + Registers an AsyncContinuation to be called when all pending operations have completed + + Invoked on completion + AsyncContinuation operation + + + + Clear o + + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Legacy attempt to skip async MoveNext, but caused source file line number to be lost + + + + + Gets the entire stack trace. + + + + + Finds first user stack frame in a stack trace + + The stack trace of the logging method invocation + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + Index of the first user stack frame or 0 if all stack frames are non-user + + + + This is only done for legacy reason, as the correct method-name and line-number should be extracted from the MoveNext-StackFrame + + The stack trace of the logging method invocation + Starting point for skipping async MoveNext-frames + + + + Assembly to skip? + + Find assembly via this frame. + true, we should skip. + + + + Is this the type of the logger? + + get type of this logger in this frame. + Type of the logger. + + + + + Memory optimized filtering + + Passing state too avoid delegate capture and memory-allocations. + + + + Provides untyped IDictionary interface on top of generic IDictionary. + + The type of the key. + The type of the value. + + + + Initializes a new instance of the DictionaryAdapter class. + + The implementation. + + + + Gets an object containing the values in the object. + + + + An object containing the values in the object. + + + + + Gets the number of elements contained in the . + + + + The number of elements contained in the . + + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + + + Gets an object that can be used to synchronize access to the . + + + + An object that can be used to synchronize access to the . + + + + + Gets a value indicating whether the object has a fixed size. + + + true if the object has a fixed size; otherwise, false. + + + + + Gets a value indicating whether the object is read-only. + + + true if the object is read-only; otherwise, false. + + + + + Gets an object containing the keys of the object. + + + + An object containing the keys of the object. + + + + + Gets or sets the with the specified key. + + Dictionary key. + Value corresponding to key or null if not found + + + + Adds an element with the provided key and value to the object. + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + + Removes all elements from the object. + + + + + Determines whether the object contains an element with the specified key. + + The key to locate in the object. + + True if the contains an element with the key; otherwise, false. + + + + + Returns an object for the object. + + + An object for the object. + + + + + Removes the element with the specified key from the object. + + The key of the element to remove. + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Wrapper IDictionaryEnumerator. + + + + + Initializes a new instance of the class. + + The wrapped. + + + + Gets both the key and the value of the current dictionary entry. + + + + A containing both the key and the value of the current dictionary entry. + + + + + Gets the key of the current dictionary entry. + + + + The key of the current element of the enumeration. + + + + + Gets the value of the current dictionary entry. + + + + The value of the current element of the enumeration. + + + + + Gets the current element in the collection. + + + + The current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + + True if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Ensures that IDictionary.GetEnumerator returns DictionaryEntry values + + + + + UTF-8 BOM 239, 187, 191 + + + + + Safe way to get environment variables. + + + + + Helper class for dealing with exceptions. + + + + + Mark this exception as logged to the . + + + + + + + Is this exception logged to the ? + + + trueif the has been logged to the . + + + + Determines whether the exception must be rethrown and logs the error to the if is false. + + Advised to log first the error to the before calling this method. + + The exception to check. + Target context of the exception. + trueif the must be rethrown, false otherwise. + + + + Determines whether the exception must be rethrown immediately, without logging the error to the . + + Only used this method in special cases. + + The exception to check. + trueif the must be rethrown, false otherwise. + + + + Object construction helper. + + + + + Adapter for to + + + + + Initializes a new instance of the class. + + The to wrap. + + + + Creates an AppDomainWrapper for the current + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + + + + + + + + + + + + + + + + + + + + + + Interface for fakeable the current . Not fully implemented, please methods/properties as necessary. + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + Abstract calls for the application environment + + + + + Abstract calls to FileSystem + + + + Determines whether the specified file exists. + The file to check. + + + Returns the content of the specified file + The file to load. + + + + Base class for optimized file appenders. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Gets the path of the file, including file extension. + + The name of the file. + + + + Gets or sets the creation time for a file associated with the appender. The time returned is in Coordinated + Universal Time [UTC] standard. + + The creation time of the file. + + + + Gets or sets the creation time for a file associated with the appender. Synchronized by + The time format is based on + + + + + Gets the last time the file associated with the appender is opened. The time returned is in Coordinated + Universal Time [UTC] standard. + + The time the file was last opened. + + + + Gets the file creation parameters. + + The file creation parameters. + + + + Writes the specified bytes. + + The bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Creates the file stream. + + If set to true sets the file stream to allow shared writing. + If larger than 0 then it will be used instead of the default BufferSize for the FileStream. + A object which can be used to write to the file. + + + + Base class for optimized file appenders which require the usage of a mutex. + + It is possible to use this class as replacement of BaseFileAppender and the mutex functionality + is not enforced to the implementing subclasses. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Implementation of which caches + file information. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Closes this instance of the appender. + + + + + Flushes this current appender. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Writes the specified bytes to a file. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Factory class which creates objects. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Maintains a collection of file appenders usually associated with file targets. + + + + + An "empty" instance of the class with zero size and empty list of appenders. + + + + + Initializes a new "empty" instance of the class with zero size and empty + list of appenders. + + + + + Initializes a new instance of the class. + + + The size of the list should be positive. No validations are performed during initialization as it is an + internal class. + + Total number of appenders allowed in list. + Factory used to create each appender. + Parameters used for creating a file. + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + Interface that provides parameters for create file function. + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + Gets or sets the log file buffer size in bytes. + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + Should archive mutex be created? + + + + + Should manual simple detection of file deletion be enabled? + + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + Interface implemented by all factories capable of creating file appenders. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + Instance of which can be used to write to the file. + + + + Appender used to discard data for the FileTarget. + Used mostly for testing entire stack except the actual writing to disk. + Throws away all data. + + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Multi-process and multi-host file appender which attempts + to get exclusive write access and retries if it's not available. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Optimized single-process file appender which keeps the file open for exclusive write. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + A layout that represents a filePath. + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + not null when == false + + + + + non null is fixed, + + + + + is the cache-key, and when newly rendered filename matches the cache-key, + then it reuses the cleaned cache-value . + + + + + is the cache-value that is reused, when the newly rendered filename + matches the cache-key + + + + Initializes a new instance of the class. + + + + Render the raw filename from Layout + + The log event. + StringBuilder to minimize allocations [optional]. + String representation of a layout. + + + + Convert the raw filename to a correct filename + + The filename generated by Layout. + String representation of a correct filename. + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Convert object to string + + value + format for conversion. + + + If is null and isn't a already, then the will get a locked by + + + + + Format a log message + + + + + Format the message and return + + LogEvent with message to be formatted + formatted message + + + + Has the logevent properties? + + LogEvent with message to be formatted + False when logevent has no properties to be extracted + + + + Appends the logevent message to the provided StringBuilder + + LogEvent with message to be formatted + The to append the formatted message. + + + + Get the Raw, unformatted and unstrinyfied, value + + + + + Get the raw value + + + The value + RawValue supported? + + + + Interface implemented by layouts and layout renderers. + + + + + Renders the the value of layout or layout renderer in the context of the specified log event. + + The log event. + String representation of a layout. + + + + Supports rendering as string value with limited or no allocations (preferred) + + + + + Renders the value of layout renderer in the context of the specified log event + + + null if not possible or unknown + + + + Supports object initialization and termination. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Render the event info as parse as short + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as int + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as bool + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Logger configuration. + + + + + Initializes a new instance of the class. + + The targets by level. + Use the old exception log handling of NLog 3.0? + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete before NLog 4.3.11 and it will be removed in NLog 5. + + + + Gets targets for the specified level. + + The level. + Chain of targets with attached filters. + + + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + New formatter + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + The MessageFormatter delegate + + + + + + + + Most-Recently-Used-Cache, that discards less frequently used items on overflow + + + + + Constructor + + Maximum number of items the cache will hold before discarding. + + + + Attempt to insert item into cache. + + Key of the item to be inserted in the cache. + Value of the item to be inserted in the cache. + true when the key does not already exist in the cache, false otherwise. + + + + Lookup existing item in cache. + + Key of the item to be searched in the cache. + Output value of the item found in the cache. + True when the key is found in the cache, false otherwise. + + + + Network sender which uses HTTP or HTTPS POST. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Creates instances of objects for given URLs. + + + + + Creates a new instance of the network sender based on a network URL. + + URL that determines the network sender to be created. + The maximum queue size. + + A newly created network sender. + + + + + Interface for mocking socket calls. + + + + + A base class for all network senders. Supports one-way sending of messages + over various protocols. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Gets the address of the network endpoint. + + + + + Gets the last send time. + + + + + Initializes this network sender. + + + + + Closes the sender and releases any unmanaged resources. + + The continuation. + + + + Flushes any pending messages and invokes a continuation. + + The continuation. + + + + Send the given text over the specified protocol. + + Bytes to be sent. + Offset in buffer. + Number of bytes to send. + The asynchronous continuation. + + + + Closes the sender and releases any unmanaged resources. + + + + + Performs sender-specific initialization. + + + + + Performs sender-specific close operation. + + The continuation. + + + + Performs sender-specific flush. + + The continuation. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Parses the URI into an endpoint address. + + The URI to parse. + The address family. + Parsed endpoint. + + + + Default implementation of . + + + + + + + + A base class for network senders that can block or send out-of-order + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Performs sender-specific flush. + + The continuation. + + + + Socket proxy for mocking Socket code. + + + + + Initializes a new instance of the class. + + The address family. + Type of the socket. + Type of the protocol. + + + + Gets underlying socket instance. + + + + + Closes the wrapped socket. + + + + + Invokes ConnectAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Sends messages over a TCP network connection. + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + The address family. + + + + Creates the socket with given parameters. + + The host address. + The address family. + Type of the socket. + Type of the protocol. + Instance of which represents the socket. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Facilitates mocking of class. + + + + + Raises the Completed event. + + + + + Scans (breadth-first) the object graph following all the edges whose are + instances have attached and returns + all objects implementing a specified interfaces. + + + + + Finds the objects which have attached which are reachable + from any of the given root objects when traversing the object graph over public properties. + + Type of the objects to return. + Also search the properties of the wanted objects. + The root objects. + Ordered list of objects implementing T. + + + ISet is not there in .net35, so using HashSet + + + + Helper for extracting propertyPath + + + + + Object Path to check + + + + + Try get value from , using , and set into + + + + + + + + Converts object into a List of property-names and -values using reflection + + + + + Scans properties for name (Skips string-compare and value-lookup until finding match) + + + + + Scans properties for name (Skips property value lookup until finding match) + + + + + Scans properties for name + + + + + Combine paths + + basepath, not null + optional dir + optional file + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Trims directory separators from the path + + path, could be null + never null + + + + Detects the platform the NLog is running on. + + + + + Gets the current runtime OS. + + + + + Gets a value indicating whether current OS is Win32-based (desktop or mobile). + + + + + Gets a value indicating whether current OS is Unix-based. + + + + + Gets a value indicating whether current runtime is Mono-based + + + + + Gets a value indicating whether current runtime supports use of mutex + + + + + Will creating a mutex succeed runtime? + "Cached" detection + + + + + Will creating a mutex succeed runtime? + + + + + Dictionary that combines the standard with the + MessageTemplate-properties extracted from the . + + The are returned as the first items + in the collection, and in positional order. + + + + + Value of the property + + + + + Is this a property of the message? + + + + + + + Value of the property + Is this a property of the message? + + + + The properties of the logEvent + + + + + The properties extracted from the message + + + + + Injects the list of message-template-parameter into the IDictionary-interface + + Message-template-parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check if the message-template-parameters can be used directly without allocating a dictionary + + Message-template-parameters + Are all parameter names unique (true / false) + + + + Attempt to insert the message-template-parameters into an empty dictionary + + Message-template-parameters + The initially empty dictionary + Message-template-parameters was inserted into dictionary without trouble (true/false) + + + + Attempt to override the existing dictionary values using the message-template-parameters + + Message-template-parameters + The already filled dictionary + List of unique message-template-parameters + + + + + + + + + + + + + + + + + + + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + + + + + + + + + + + + + + + + + Reflection helpers for accessing properties. + + + + + Set value parsed from string. + + object instance to set with property + name of the property on + The value to be parsed. + + + + + Get property info + + object which could have property + property name on + result when success. + success. + + + + Try parse of string to (Generic) list, comma separated. + + + If there is a comma in the value, then (single) quote the value. For single quotes, use the backslash as escape + + + + + Attempt to reuse the HashSet.Comparer from the original HashSet-object (Ex. StringComparer.OrdinalIgnoreCase) + + + + + Try get the property + + + + + Reflection helpers. + + + + + Gets all usable exported types from the given assembly. + + Assembly to scan. + Usable types from the given assembly. + Types which cannot be loaded are skipped. + + + + Is this a static class? + + + + This is a work around, as Type doesn't have this property. + From: https://stackoverflow.com/questions/1175888/determine-if-a-type-is-static + + + + + Optimized delegate for calling MethodInfo + + Object instance, use null for static methods. + Complete list of parameters that matches the method, including optional/default parameters. + + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Controls a single allocated AsyncLogEventInfo-List for reuse (only one active user) + + + + + Controls a single allocated char[]-buffer for reuse (only one active user) + + + + + Controls a single allocated StringBuilder for reuse (only one active user) + + + + + Controls a single allocated object for reuse (only one active user) + + + + Empty handle when is disabled + + + + Creates handle to the reusable char[]-buffer for active usage + + Handle to the reusable item, that can release it again + + + + Access the acquired reusable object + + + + + Controls a single allocated MemoryStream for reuse (only one active user) + + + + + Supported operating systems. + + + If you add anything here, make sure to add the appropriate detection + code to + + + + + Unknown operating system. + + + + + Unix/Linux operating systems. + + + + + Desktop versions of Windows (95,98,ME). + + + + + Windows NT, 2000, 2003 and future versions based on NT technology. + + + + + Macintosh Mac OSX + + + + + Simple character tokenizer. + + + + + Initializes a new instance of the class. + + The text to be tokenized. + + + + Current position in + + + + + Full text to be parsed + + + + + Check current char while not changing the position. + + + + + + Read the current char and change position + + + + + + Get the substring of the + + + + + + + + Implements a single-call guard around given continuation function. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + + + + Continuation function which implements the single-call guard. + + The exception. + + + + HashSet optimized for single item + + + + + + Insert single item on scope start, and remove on scope exit + + Item to insert in scope + Existing hashset to update + Force allocation of real hashset-container + HashSet EqualityComparer + + + + Add item to collection, if it not already exists + + Item to insert + + + + Clear hashset + + + + + Check if hashset contains item + + + Item exists in hashset (true/false) + + + + Remove item from hashset + + + Item removed from hashset (true/false) + + + + Copy items in hashset to array + + Destination array + Array offset + + + + Create hashset enumerator + + Enumerator + + + + Provides helpers to sort log events and associated continuations. + + + + + Key selector delegate. + + The type of the value. + The type of the key. + Value to extract key information from. + Key selected from log event. + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + The key comparer function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Single-Bucket optimized readonly dictionary. Uses normal internally Dictionary if multiple buckets are needed. + + Avoids allocating a new dictionary, when all items are using the same bucket + + The type of the key. + The type of the value. + + + + + + + + + + + + + + + + Allows direct lookup of existing keys. If trying to access non-existing key exception is thrown. + Consider to use instead for better safety. + + Key value for lookup + Mapped value found + + + + Non-Allocating struct-enumerator + + + + + + + + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + + + + Will always throw, as dictionary is readonly + + + + Utilities for dealing with values. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + StackFrame from the calling method + Fully qualified class name + + + + Returns the assembly from the provided StackFrame (If not internal assembly) + + Valid assembly, or null if assembly was internal + + + + Returns the classname from the provided StackFrame (If not from internal assembly) + + + Valid class name, or empty string if assembly was internal + + + + Stream helpers + + + + + Copy to output stream and skip BOM if encoding is UTF8 + + + + + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + .net35 doesn't have a .copyto + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + first bytes to skip (optional) + + + + Helpers for , which is used in e.g. layout renderers. + + + + + Renders the specified log event context item and appends it to the specified . + + append to this + value to be appended + format string. If @, then serialize the value with the Default JsonConverter. + provider, for example culture + + + + Appends int without using culture, and most importantly without garbage + + + value to append + + + + Appends uint without using culture, and most importantly without garbage + + Credits Gavin Pugh - https://www.gavpugh.com/2010/04/01/xnac-avoiding-garbage-when-working-with-stringbuilder/ + + + value to append + + + + Convert DateTime into UTC and format to yyyy-MM-ddTHH:mm:ss.fffffffZ - ISO 6801 date (Round-Trip-Time) + + + + + Clears the provider StringBuilder + + + + + + Copies the contents of the StringBuilder to the MemoryStream using the specified encoding (Without BOM/Preamble) + + StringBuilder source + MemoryStream destination + Encoding used for converter string into byte-stream + Helper char-buffer to minimize memory allocations + + + + Copies the contents of the StringBuilder to the destination StringBuilder + + StringBuilder source + StringBuilder destination + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle character to search for + + Index of the first occurrence (Else -1) + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle characters to search for + + Index of the first occurrence (Else -1) + + + + Compares the contents of two StringBuilders + + + Correct implementation of that also works when is not the same + + True when content is the same + + + + Compares the contents of a StringBuilder and a String + + True when content is the same + + + + Append a number and pad with 0 to 2 digits + + append to this + the number + + + + Append a number and pad with 0 to 4 digits + + append to this + the number + + + + Append a int type (byte, int) as string + + + + + Constructor + + Max number of items + Initial StringBuilder Size + Max StringBuilder Size + + + + Takes StringBuilder from pool + + Allow return to pool + + + + Releases StringBuilder back to pool at its right place + + + + + Keeps track of acquired pool item + + + + + Releases pool item back into pool + + + + + Helpers for . + + + + + IsNullOrWhiteSpace, including for .NET 3.5 + + + + + + + Split a string + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Represents target with a chain of filters which determine + whether logging should happen. + + + + + cached result as calculating is expensive. + + + + + Initializes a new instance of the class. + + The target. + The filter chain. + Default action if none of the filters match. + + + + Gets the target. + + The target. + + + + Gets the filter chain. + + The filter chain. + + + + Default action if none of the filters match. + + + + + Gets or sets the next item in the chain. + + The next item in the chain. + This is for example the 'target2' logger in writeTo='target1,target2' + + + + Gets the stack trace usage. + + A value that determines stack trace handling. + + + + Helper for dealing with thread-local storage. + + + + + Allocates the data slot for storing thread-local information. + + Allocated slot key. + + + + Gets the data for a slot in thread-local storage. + + Type of the data. + The slot to get data for. + Automatically create the object if it doesn't exist. + + Slot data (will create T if null). + + + + + Wraps with a timeout. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + The timeout. + + + + Continuation function which implements the timeout logic. + + The exception. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Transformation on a layout. Pre-calculated if the layout has a fixed value. + + + + + Create TransformedLayout. + + Layout + Transformation method + Optional renderer, otherwise is used + + + + + + + Create TransformedLayout. If is null, then the returns null + + Layout + Transformation method + Optional renderer, otherwise is used + null if is null + + + + + + + + + + URL Encoding helper. + + + + Allow UnreservedMarks instead of ReservedMarks, as specified by chosen RFC + + + Use RFC2396 standard (instead of RFC3986) + + + Should use lowercase when doing HEX escaping of special characters + + + Replace space ' ' with '+' instead of '%20' + + + Skip UTF8 encoding, and prefix special characters with '%u' + + + + Escape unicode string data for use in http-requests + + unicode string-data to be encoded + target for the encoded result + s for how to perform the encoding + + + + Convert the wide-char into utf8-bytes, and then escape + + + + + + + + + Is allowed? + + + + + + + + Is a-z / A-Z / 0-9 + + + + + + + Prevents the Xamarin linker from linking the target. + + + By applying this attribute all of the members of the target will be kept as if they had been referenced by the code. + + + + + Ensures that all members of this type are preserved + + + + + Flags the method as a method to preserve during linking if the container class is pulled in. + + + + + Helper class for XML + + + + + removes any unusual unicode characters that can't be encoded into XML + + + + + Cleans string of any invalid XML chars found + + unclean string + string with only valid XML chars + + + + Pretest, small text and not escape needed + + + + + + + + Converts object value to invariant format, and strips any invalid xml-characters + + Object value + Object value converted to string + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object value converted to string + + + + XML elements must follow these naming rules: + - Element names are case-sensitive + - Element names must start with a letter or underscore + - Element names can contain letters, digits, hyphens, underscores, and periods + - Element names cannot contain spaces + + + + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object TypeCode + Check and remove unusual unicode characters from the result string. + Object value converted to string + + + + Safe version of WriteAttributeString + + + + + + + + + + Safe version of WriteAttributeString + + + + + + + + Safe version of WriteElementSafeString + + + + + + + + + + Safe version of WriteCData + + + + + + + Interface for handling object transformation + + + + + Takes a dangerous (or massive) object and converts into a safe (or reduced) object + + + Null if unknown object, or object cannot be handled + + + + + Provides an interface to execute System.Actions without surfacing any exceptions raised for that action. + + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Render a message template property to a string + + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Log event context data. + + + + + Initializes a new instance of the class. + + + + + Gets or sets string that will be used to separate key/value pairs. + + + + + + Get or set if empty values should be included. + + A value is empty when null or in case of a string, null or empty string. + + + + + + Gets or sets the keys to exclude from the output. If omitted, none are excluded. + + + + + + Gets or sets how key/value pairs will be formatted. + + + + + + Renders all log event's properties and appends them to the specified . + + The to append the rendered data to. + Logging event. + + + + Designates a property of the class as an ambient property. + + + non-ambient: ${uppercase:${level}} + ambient : ${level:uppercase} + + + + + Initializes a new instance of the class. + + Ambient property name. + + + + Renders the assembly version information for the entry assembly or a named assembly. + + + As this layout renderer uses reflection and version information is unlikely to change during application execution, + it is recommended to use it in conjunction with the . + + + The entry assembly can't be found in some cases e.g. ASP.NET, unit tests, etc. + + + + + Initializes a new instance of the class. + + + + + The (full) name of the assembly. If null, using the entry assembly. + + + + + + Gets or sets the type of assembly version to retrieve. + + + Some version type and platform combinations are not fully supported. + - UWP earlier than .NET Standard 1.5: Value for is always returned unless the parameter is specified. + - Silverlight: Value for is always returned. + + + + + + Gets or sets the custom format of the assembly version output. + + + Supported placeholders are 'major', 'minor', 'build' and 'revision'. + The default .NET template for version numbers is 'major.minor.build.revision'. See + https://docs.microsoft.com/en-gb/dotnet/api/system.version?view=netframework-4.7.2#remarks + for details. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders an assembly version and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Type of assembly version to retrieve. + + + + + Gets the assembly version. + + + + + Gets the file version. + + + + + Gets additional version information. + + + + + The current application domain's base directory. + + + + + Use base dir of current process. Alternative one can just use ${processdir} + + + + + + Fallback to the base dir of current process, when AppDomain.BaseDirectory is Temp-Path (.NET Core 3 - Single File Publish) + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the base directory. + + + + + + Renders the application base directory and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site (class name, method name and source information). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to render the class name. + + + + + + Gets or sets a value indicating whether to render the include the namespace with . + + + + + + Gets or sets a value indicating whether to render the method name. + + + + + + Gets or sets a value indicating whether the method name will be cleaned up if it is detected as an anonymous delegate. + + + + + + Gets or sets a value indicating whether the method and class names will be cleaned up if it is detected as an async continuation + (everything after an await-statement inside of an async method). + + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A counter value (increases on each layout rendering). + + + + + Gets or sets the initial value of the counter. + + + + + + Gets or sets the value to be added to the counter after each layout rendering. + + + + + + Gets or sets the name of the sequence. Different named sequences can have individual values. + + + + + + + + + The current working directory of the application. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the current directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the current directory. + + + + + + + + + + + + Current date and time. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the date format. Can be any argument accepted by DateTime.ToString(format). + + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + + + + + + + + + + DB null for a database + + + + + + + + + + + The OS dependent directory separator + + + + + + + + + + + URI of the HTML page which hosts the current Silverlight application. + + + + + Renders the specified environmental information and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Log event context data. + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the name of the item. + + + + + + Renders the specified log event context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Log event context data. See . + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + + + + + + + + + + Exception information provided through + a call to one of the Logger.*Exception() methods. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the format of the output. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + + + Gets or sets the format of the output of inner exceptions. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + Gets or sets the separator used to concatenate parts specified in the Format. + + + + + + Gets or sets the separator used to concatenate exception data specified in the Format. + + + + + + Gets or sets the maximum number of inner exceptions to include in the output. + By default inner exceptions are not enabled for compatibility with NLog 1.0. + + + + + + Gets or sets the separator between inner exceptions. + + + + + + Gets or sets whether to render innermost Exception from + + + + + Gets the formats of the output of inner exceptions to be rendered in target. + + + + + + + Gets the formats of the output to be rendered in target. + + + + + + + + + + + + + Appends the Message of an Exception to the specified . + + The to append the rendered data to. + The exception containing the Message to append. + + + + Appends the method name from Exception's stack trace to the specified . + + The to append the rendered data to. + The Exception whose method name should be appended. + + + + Appends the stack trace from an Exception to the specified . + + The to append the rendered data to. + The Exception whose stack trace should be appended. + + + + Appends the result of calling ToString() on an Exception to the specified . + + The to append the rendered data to. + The Exception whose call to ToString() should be appended. + + + + Appends the type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose type should be appended. + + + + Appends the short type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose short type should be appended. + + + + Appends the application source of an Exception to the specified . + + The to append the rendered data to. + The Exception whose source should be appended. + + + + Appends the HResult of an Exception to the specified . + + The to append the rendered data to. + The Exception whose HResult should be appended. + + + + Appends the contents of an Exception's Data property to the specified . + + The to append the rendered data to. + The Exception whose Data property elements should be appended. + + + + Appends all the serialized properties of an Exception into the specified . + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Appends all the additional properties of an Exception like Data key-value-pairs + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Split the string and then compile into list of Rendering formats. + + + + + Find name of method on stracktrace. + + Full stracktrace + + + + + Renders contents of the specified file. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file. + + + + + + Gets or sets the encoding used in the file. + + The encoding. + + + + + Renders the contents of the specified file and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + Name used in config without ${}. E.g. "test" could be used as "${test}". + + + + + Method that renders the layout. + + + + + Format string for conversion from object to string. + + + + + + + + + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + The information about the garbage collector. + + + + + Gets or sets the property to retrieve. + + + + + + + + + Gets or sets the property of System.GC to retrieve. + + + + + Total memory allocated. + + + + + Total memory allocated (perform full garbage collection first). + + + + + Gets the number of Gen0 collections. + + + + + Gets the number of Gen1 collections. + + + + + Gets the number of Gen2 collections. + + + + + Maximum generation number supported by GC. + + + + + Render a Global Diagnostics Context item. See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + + + + Globally-unique identifier (GUID). + + + + + Gets or sets the GUID format as accepted by Guid.ToString() method. + + + + + + Generate the Guid from the NLog LogEvent (Will be the same for all targets) + + + + + + + + + + + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Gets or sets the name of the parameter. + + + + + + Renders the specified installation parameter and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render environmental information related to logging events. + + + + + Gets the logging configuration this target is part of. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Renders the the value of layout renderer in the context of the specified log event. + + The log event. + String representation of a layout renderer. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Renders the value of layout renderer in the context of the specified log event. + + The log event. + The layout render output is appended to builder + + + + Renders the value of layout renderer in the context of the specified log event into . + + The to append the rendered data to. + Logging event. + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Get the for rendering the messages to a + + LogEvent with culture + Culture in on Layout level + + + + + Get the for rendering the messages to a , needed for date and number formats + + LogEvent with culture + Culture in on Layout level + + + is preferred + + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Marks class as a layout renderer and assigns a name to it. + + This attribute is not required when registering the layout in the API. + + + + Initializes a new instance of the class. + + Name of the layout renderer, without the `${ }` + + + + Format of the ${level} layout renderer output. + + + + + Render the LogLevel standard name. + + + + + Render the first character of the level. + + + + + Render the ordinal (aka number) for the level. + + + + + Render the LogLevel full name, expanding Warn / Info abbreviations + + + + + The log level. + + + + + Gets or sets a value indicating the output format of the level. + + + + + + + + + + + + + + + A string literal. + + + This is used to escape '${' sequence + as ;${literal:text=${}' + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The literal text value. + This is used by the layout compiler. + + + + Gets or sets the literal text. + + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes the layout renderer. + + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets a value indicating whether the XML should use spaces for indentation. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the XML logging event and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The logger name. + + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + + + + + + + The date and time in a long, sortable format yyyy-MM-dd HH:mm:ss.ffff. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the date in the long format (yyyy-MM-dd HH:mm:ss.ffff) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render a Mapped Diagnostic Context item, See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + The formatted log message. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to log exception along with message. + + + + + + Gets or sets the string that separates message from the exception. + + + + + + Gets or sets whether it should render the raw message without formatting parameters + + + + + + + + + + + + Render a Nested Diagnostic Context item. + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested diagnostics context output. + + + + + + Renders the specified Nested Diagnostics Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A newline literal. + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The process time in format HH:mm:ss.mmm. + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + Write timestamp to builder with format hh:mm:ss:fff + + + + + The sequence ID + + + + + + + + + + + The short date in a sortable format yyyy-MM-dd. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the current short date string (yyyy-MM-dd) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Information about Silverlight application. + + + + + Initializes a new instance of the class. + + + + + Gets or sets specific information to display. + + + + + + Renders the specified environmental information and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Specifies application information to display in ${sl-appinfo} renderer. + + + + + URI of the current application XAP file. + + + + + Whether application is running out-of-browser. + + + + + Installed state of an application. + + + + + Whether application is running with elevated permissions. + + + + + System special folder path (includes My Documents, My Music, Program Files, Desktop, and more). + + + + + Gets or sets the system special folder to use. + + + Full list of options is available at MSDN. + The most common ones are: +
    +
  • ApplicationData - roaming application data for current user.
  • +
  • CommonApplicationData - application data for all users.
  • +
  • MyDocuments - My Documents
  • +
  • DesktopDirectory - Desktop directory
  • +
  • LocalApplicationData - non roaming application data
  • +
  • Personal - user profile directory
  • +
  • System - System directory
  • +
+
+ +
+ + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Format of the ${stacktrace} layout renderer output. + + + + + Raw format (multiline - as returned by StackFrame.ToString() method). + + + + + Flat format (class and method names displayed in a single line). + + + + + Detailed flat format (method signatures displayed in a single line). + + + + + Stack trace renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the output format of the stack trace. + + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets the stack frame separator string. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A temporary directory. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The identifier of the current thread. + + + + + + + + The name of the current thread. + + + + + + + + The Ticks value of current date and time. + + + + + + + + + + + The time in a 24-hour, sortable format HH:mm:ss.mmmm. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + Render a NLog variable (xml or config) + + + + + Gets or sets the name of the NLog variable. + + + + + + Gets or sets the default value to be used when the variable is not set. + + Not used if Name is null + + + + + Initializes the layout renderer. + + + + + Try get the + + + + + + + Renders the specified variable and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Applies caching to another layout output. + + + The value of the inner layout will be rendered only once and reused subsequently. + + + + + A value indicating when the cache is cleared. + + + + Never clear the cache. + + + Clear the cache whenever the is initialized. + + + Clear the cache whenever the is closed. + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether this is enabled. + + + + + + Gets or sets a value indicating when the cache is cleared. + + + + + + Cachekey. If the cachekey changes, resets the value. For example, the cachekey would be the current day.s + + + + + + Gets or sets a value indicating how many seconds the value should stay cached until it expires + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + + + + Filters characters not allowed in the file names by replacing them with safe character. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to modify the output of this renderer so it can be used as a part of file path + (illegal characters are replaced with '_'). + + + + + + + + + + + + Escapes output of another layout using JSON rules. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply JSON encoding. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + + + + + + + Left part of a text + + + + + Gets or sets the length in characters. + + + + + + Same as -property, so it can be used as ambient property. + + + ${message:truncate=80} + + + + + + + + + + + + Converts the result of another layout output to lower case. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Render the non-raw value of an object. + + For performance and/or full (formatted) control of the output. + + + + Gets or sets a value indicating whether to disable the IRawValue-interface + + A value of true if IRawValue-interface should be ignored; otherwise, false. + + + + + + + + + + + Render a single property of a object + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + Shortcut for + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + Only outputs the inner layout when exception has been defined for log message. + + + + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + ${onhasproperties:, Properties\: ${all-event-properties}} + + + + + + + + + + + Horizontal alignment for padding layout renderers. + + + + + When layout text is too long, align it to the left + (remove characters from the right). + + + + + When layout text is too long, align it to the right + (remove characters from the left). + + + + + Applies padding to another layout output. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of characters to pad the output to. + + + Positive padding values cause left padding, negative values + cause right padding to the desired width. + + + + + + Gets or sets the padding character. + + + + + + Gets or sets a value indicating whether to trim the + rendered text to the absolute value of the padding length. + + + + + + Gets or sets a value indicating whether a value that has + been truncated (when is true) + will be left-aligned (characters removed from the right) + or right-aligned (characters removed from the left). The + default is left alignment. + + RegistryLayoutRenderer + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Replaces a string in the output of another layout with another string. + + + ${replace:searchFor=\\n+:replaceWith=-:regex=true:inner=${message}} + + + + + Gets or sets the text to search for. + + The text search for. + + + + + Gets or sets a value indicating whether regular expressions should be used. + + A value of true if regular expressions should be used otherwise, false. + + + + + Gets or sets the replacement string. + + The replacement string. + + + + + Gets or sets the group name to replace when using regular expressions. + Leave null or empty to replace without using group name. + + The group name. + + + + + Gets or sets a value indicating whether to ignore case. + + A value of true if case should be ignored when searching; otherwise, false. + + + + + Gets or sets a value indicating whether to search for whole words. + + A value of true if whole words should be searched for; otherwise, false. + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Initializes the layout renderer. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + This class was created instead of simply using a lambda expression so that the "ThreadAgnosticAttributeTest" will pass + + + + + A match evaluator for Regular Expression based replacing + + Input string. + Group name in the regex. + Replace value. + Match from regex. + Groups replaced with . + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating the string that should be used for separating lines. + + + + + + + + + + + + Right part of a text + + + + + Gets or sets the length in characters. + + + + + + + + + + + + Decodes text "encrypted" with ROT-13. + + + See https://en.wikipedia.org/wiki/ROT13. + + + + + Gets or sets the layout to be wrapped. + + The layout to be wrapped. + This variable is for backwards compatibility + + + + + Encodes/Decodes ROT-13-encoded string. + + The string to be encoded/decoded. + Encoded/Decoded text. + + + + + + + + + + Encodes/Decodes ROT-13-encoded string. + + + + + Substring the result + + + ${substring:${level}:start=2:length=2} + ${substring:${level}:start=-2:length=2} + ${substring:Inner=${level}:start=2:length=2} + + + + + Initializes a new instance of the class. + + + + + Gets or sets the start index. + + Index + + + + + Gets or sets the length in characters. If null, then the whole string + + Index + + + + + + + + + + + Calculate start position + + 0 or positive number + + + + Calculate needed length + + 0 or positive number + + + + Trims the whitespace from the result of another layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + + + + + + + Converts the result of another layout output to upper case. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + ${level:uppercase} // [AmbientProperty] + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether upper case conversion should be applied. + + A value of true if upper case conversion should be applied otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Encodes the result of another layout output for use with URLs. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether spaces should be translated to '+' or '%20'. + + A value of true if space should be translated to '+'; otherwise, false. + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + + + Gets or sets the layout to be rendered when original layout produced empty result. + + + + + + + + + + + + + + + Only outputs the inner layout when the specified condition has been met. + + + + + Gets or sets the condition that must be met for the layout to be printed. + + + + + + If is not met, print this layout. + + + + + + + + + + + + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the line length for wrapping. + + + Only positive values are allowed + + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + Base class for s which wrapping other s. + + This has the property (which is default) and can be used to wrap. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + + + + + Gets or sets the wrapped layout. + + [DefaultParameter] so Inner: is not required if it's the first + + + + + + + + + Renders the inner message, processes it and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Appends the rendered output from -layout and transforms the added output (when necessary) + + Logging event. + The to append the rendered data to. + Start position for any necessary transformation of . + + + + Transforms the output of another layout. + + Logging event. + Output to be transform. + Transformed text. + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + Base class for s which wrapping other s. + + This expects the transformation to work on a + + + + + + + + Transforms the output of another layout. + + + Output to be transform. + + + + Transforms the output of another layout. + + Output to be transform. + + + + Renders the inner layout contents. + + + for the result + + + + + + + + + + + + + + + + + + Converts the result of another layout output to be XML-compliant. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply XML encoding. + + Ensures always valid XML, but gives a performance hit + + + + + Gets or sets a value indicating whether to transform newlines (\r\n) into ( ) + + + + + + + + + + + + A layout containing one or more nested layouts. + + + + + Initializes a new instance of the class. + + + + + Gets the inner layouts. + + + + + + Initializes the layout. + + + + + Formats the log event relying on inner layouts. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event relying on inner layouts. + + The logging event. + for the result + + + + Closes the layout. + + + + + Generate description of Compound Layout + + Compound Layout String Description + + + + A column in the CSV. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the column. + The layout of the column. + + + + Gets or sets the name of the column. + + + + + + Gets or sets the layout of the column. + + + + + + Gets or sets the override of Quoting mode + + + and are faster than the default + + + + + + Specifies allowed column delimiters. + + + + + Automatically detect from regional settings. + + + + + Comma (ASCII 44). + + + + + Semicolon (ASCII 59). + + + + + Tab character (ASCII 9). + + + + + Pipe character (ASCII 124). + + + + + Space character (ASCII 32). + + + + + Custom string, specified by the CustomDelimiter. + + + + + A specialized layout that renders CSV-formatted events. + + If is set, then the header generation with column names will be disabled. + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + Gets or sets a value indicating whether CVS should include header. + + A value of true if CVS should include header; otherwise, false. + + + + + Gets or sets the column delimiter. + + + + + + Gets or sets the quoting mode. + + + + + + Gets or sets the quote Character. + + + + + + Gets or sets the custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). + + + + + + Initializes the layout. + + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event for write. + + The logging event. + for the result + + + + Get the headers with the column names. + + + + + + Header with column names for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Generate description of CSV Layout + + CSV Layout String Description + + + + Specifies CSV quoting modes. + + + + + Quote all column (Fast) + + + + + Quote nothing (Very fast) + + + + + Quote only whose values contain the quote symbol or the separator (Slow) + + + + + JSON attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with json-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Json encoded. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A specialized layout that renders JSON-formatted events. + + + + + Initializes a new instance of the class. + + + + + Gets the array of attributes' configurations. + + + + + + Gets or sets the option to suppress the extra spaces in the output json + + + + + + Gets or sets the option to render the empty object value {} + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as JSON) + + + + + + List of property names to exclude when is true + + + + + + How far should the JSON serializer follow object references before backing off + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Formats the log event as a JSON document for writing. + + The logging event. + for the result + + + + Formats the log event as a JSON document for writing. + + The log event to be formatted. + A JSON string representation of the log event. + + + + Generate description of JSON Layout + + JSON Layout String Description + + + + Abstract interface that layouts must implement. + + + + + Is this layout initialized? See + + + + + Gets a value indicating whether this layout is thread-agnostic (can be rendered on any thread). + + + Layout is thread-agnostic if it has been marked with [ThreadAgnostic] attribute and all its children are + like that as well. + + Thread-agnostic layouts only use contents of for its output. + + + + + Gets the level of stack trace information required for rendering. + + + + + Gets the logging configuration this target is part of. + + + + + Converts a given text to a . + + Text to be converted. + object represented by the text. + + + + Implicitly converts the specified string to a . + + The layout string. + Instance of .' + + + + Implicitly converts the specified string to a . + + The layout string. + The NLog factories to use when resolving layout renderers. + Instance of . + + + + Implicitly converts the specified string to a . + + The layout string. + Whether should be thrown on parse errors (false = replace unrecognized tokens with a space). + Instance of . + + + + Create a from a lambda method. + + Method that renders the layout. + Tell if method is safe for concurrent threading. + Instance of . + + + + Precalculates the layout for the specified log event and stores the result + in per-log event cache. + + Only if the layout doesn't have [ThreadAgnostic] and doesn't contain layouts with [ThreadAgnostic]. + + The log event. + + Calling this method enables you to store the log event in a buffer + and/or potentially evaluate it in another thread even though the + layout may contain thread-dependent renderer. + + + + + Renders the event info in layout. + + The event info. + String representing log event. + + + + Optimized version of for internal Layouts. Works best + when override of is available. + + The event info. + Appends the string representing log event to target + Should rendering result be cached on LogEventInfo + + + + Valid default implementation of , when having implemented the optimized + + The logging event. + StringBuilder to help minimize allocations [optional]. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Optimized version of for internal Layouts, when + override of is available. + + + + + Try get value + + + rawValue if return result is true + false if we could not determine the rawValue + + + + Marks class as a layout renderer and assigns a format string to it. + + + + + Initializes a new instance of the class. + + Layout name. + + + + Parses layout strings. + + + + + Add to + + + + + + + Options available for + + + + + Default options + + + + + Layout renderer method can handle concurrent threads + + + + + Layout renderer method is agnostic to current thread context. This means it will render the same result indepdent of thread-context. + + + + + A specialized layout that supports header and footer. + + + + + Gets or sets the body layout (can be repeated multiple times). + + + + + + Gets or sets the header layout. + + + + + + Gets or sets the footer layout. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result. + + + + A specialized layout that renders Log4j-compatible XML events. + + + This layout is not meant to be used explicitly. Instead you can use ${log4jxmlevent} layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets the instance that renders log events. + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Represents a string with embedded placeholders that can render contextual information. + + + This layout is not meant to be used explicitly. Instead you can just use a string containing layout + renderers everywhere the layout is required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout string to parse. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + Whether should be thrown on parse errors. + + + + Original text before compile to Layout renderes + + + + + Gets or sets the layout text. + + + + + + Is the message fixed? (no Layout renderers used) + + + + + Get the fixed text. Only set when is true + + + + + Is the message a simple formatted string? (Can skip StringBuilder) + + + + + Gets a collection of objects that make up this layout. + + + + + Gets the level of stack trace information required for rendering. + + + + + Converts a text to a simple layout. + + Text to be converted. + A object. + + + + Escapes the passed text so that it can + be used literally in all places where + layout is normally expected without being + treated as layout. + + The text to be escaped. + The escaped text. + + Escaping is done by replacing all occurrences of + '${' with '${literal:text=${}' + + + + + Evaluates the specified text by expanding all layout renderers. + + The text to be evaluated. + Log event to be used for evaluation. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Evaluates the specified text by expanding all layout renderers + in new context. + + The text to be evaluated. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Returns a that represents the current object. + + + A that represents the current object. + + + + + + + + + + + + + + + + + + + + XML attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with xml-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A XML Element + + + + + + + + + + + Name of the element + + + + + + Value inside the element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + The name of the top XML node + The value of the top XML node + + + + Name of the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Value inside the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Auto indent and create new lines + + + + + + Gets the array of xml 'elements' configurations. + + + + + + Gets the array of 'attributes' configurations for the element + + + + + + Gets or sets whether a ElementValue with empty value should be included in the output + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as XML) + + + + + + List of property names to exclude when is true + + + + + + XML element name to use when rendering properties + + + Support string-format where {0} means property-key-name + + Skips closing element tag when having configured + + + + + + XML attribute name to use when rendering property-key + + When null (or empty) then key-attribute is not included + + + Will replace newlines in attribute-value with + + + + + + XML attribute name to use when rendering property-value + + When null (or empty) then value-attribute is not included and + value is formatted as XML-element-value + + + Skips closing element tag when using attribute for value + + Will replace newlines in attribute-value with + + + + + + XML element name to use for rendering IList-collections items + + + + + + How far should the XML serializer follow object references before backing off + + + + + + Initializes the layout. + + + + + Formats the log event as a XML document for writing. + + The logging event. + for the result + + + + Formats the log event as a XML document for writing. + + The log event to be formatted. + A XML string representation of the log event. + + + + write attribute, only if is not empty + + + + + rendered + + + + Generate description of XML Layout + + XML Layout String Description + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + + + + + + + Name of the root XML element + + + + + + Value inside the root XML element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Represents the logging event. + + + + + Gets the date of the first log event created. + + + + + The formatted log message. + + + + + The log message including any parameter placeholders + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + Exception information. + + + + Gets the unique identifier of log event which is automatically generated + and monotonously increasing. + + + + + Gets or sets the timestamp of the logging event. + + + + + Gets or sets the level of the logging event. + + + + + Gets a value indicating whether stack trace has been set for this event. + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Gets the entire stack trace. + + + + + Gets the callsite class name + + + + + Gets the callsite member function name + + + + + Gets the callsite source file path + + + + + Gets the callsite source file line number + + + + + Gets or sets the exception information. + + + + + Gets or sets the logger name. + + + + + Gets the logger short name. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the log message including any parameter placeholders. + + + + + Gets or sets the parameter values or null if no parameters have been specified. + + + + + Gets or sets the format provider that was provided while logging or + when no formatProvider was specified. + + + + + Gets or sets the message formatter for generating + Uses string.Format(...) when nothing else has been configured. + + + + + Gets the formatted message. + + + + + Checks if any per-event properties (Without allocation) + + + + + Gets the dictionary of per-event context properties. + + + + + Gets the dictionary of per-event context properties. + Internal helper for the PropertiesDictionary type. + + Create the event-properties dictionary, even if no initial template parameters + Provided when having parsed the message template and capture template parameters (else null) + + + + + Gets the named parameters extracted from parsing as MessageTemplate + + + + + Gets the dictionary of per-event context properties. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + The exception. + Instance of . + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates from this by attaching the specified asynchronous continuation. + + The asynchronous continuation. + Instance of with attached continuation. + + + + Returns a string representation of this log event. + + String representation of the log event. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace (Negative means NLog should skip stackframes from System-assemblies). + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Set the + + true = Always, false = Never, null = Auto Detect + + + + Specialized LogFactory that can return instances of custom logger types. + + Use this only when a custom Logger type is defined. + The type of the logger to be returned. Must inherit from . + + + + Gets the logger with type . + + The logger name. + An instance of . + + + + Gets a custom logger with the full name of the current class (so namespace and class name) and type . + + An instance of . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Overwrite possible file paths (including filename) for possible NLog config files. + When this property is null, the default file paths ( are used. + + + + + Occurs when logging changes. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The config. + + + + Initializes a new instance of the class. + + The config loader + The custom AppEnvironmnet override + + + + Gets the current . + + + + + Gets or sets a value indicating whether exceptions should be thrown. See also . + + A value of true if exception should be thrown; otherwise, false. + By default exceptions are not thrown under any circumstances. + + + + Gets or sets a value indicating whether should be thrown. + + If null then is used. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. After setting this property all + existing loggers will be re-configured, so there is no need to call + manually. + + + + + Gets or sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets the default culture info to use as . + + + Specific culture info or null to use + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting + unmanaged resources. + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Creates a logger that discards all log messages. + + Null logger instance. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets the logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + The logger with type . + Type of the logger + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The type of the logger to create. The type must inherit from + The logger of type . + This is a slow-running method. Make sure you are not calling this method in a + loop. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + Name of the logger. + Type of the logger + The logger reference with type . Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The type of the logger to create. The type must inherit from . + The logger of type . Multiple calls to GetLogger with the + same argument aren't guaranteed to return the same logger reference. + + + + Loops through all loggers previously returned by GetLogger and recalculates their + target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time + will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flushes any pending log messages on all appenders. + + Config containing Targets to Flush + Flush completed notification (success / timeout) + Optional timeout that guarantees that completed notication is called. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Returns if logging is currently enabled. + + A value of if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Raises the event when the configuration is reloaded. + + Event arguments. + + + + Currently this is disposing? + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Logger cache key. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Determines if two objects are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Determines if two objects of the same type are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Logger cache. + + + + + Inserts or updates. + + + + + + + Internal for unit tests + + + + + Enables logging in implementation. + + + + + Initializes a new instance of the class. + + The factory. + + + + Enables logging. + + + + + Logging methods which only are executed when the DEBUG conditional compilation symbol is set. + + Remarks: + The DEBUG conditional compilation symbol is default enabled (only) in a debug build. + + If the DEBUG conditional compilation symbol isn't set in the calling library, the compiler will remove all the invocations to these methods. + This could lead to better performance. + + See: https://msdn.microsoft.com/en-us/library/4xssyw96%28v=vs.90%29.aspx + + + Provides logging interface and utility functions. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Initializes a new instance of the class. + + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Collection of context properties for the Logger. The logger will append it for all log events + + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Creates new logger that automatically appends the specified property to all log events (without changing current logger) + + Property Name + Property Value + New Logger object that automatically appends specified property + + + + Updates the specified context property for the current logger. The logger will append it for all log events. + + It could be rendered with ${event-properties:YOURNAME} + + With property, all properties could be changed. + + + Will affect all locations/contexts that makes use of the same named logger object. + + Property Name + Property Value + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Raises the event when the logger is reconfigured. + + Event arguments + + + + Implementation of logging engine. + + + + + Gets the filter result. + + The filter chain. + The log event. + default result if there are no filters, or none of the filters decides. + The result of the filter. + + + + Defines available log levels. + + + + + Trace log level. + + + + + Debug log level. + + + + + Info log level. + + + + + Warn log level. + + + + + Error log level. + + + + + Fatal log level. + + + + + Off log level. + + + + + Gets all the available log levels (Trace, Debug, Info, Warn, Error, Fatal, Off). + + + + + Gets all the log levels that can be used to log events (Trace, Debug, Info, Warn, Error, Fatal) + i.e LogLevel.Off is excluded. + + + + + Initializes a new instance of . + + The log level name. + The log level ordinal number. + + + + Gets the name of the log level. + + + + + Gets the ordinal of the log level. + + + + + Compares two objects + and returns a value indicating whether + the first one is equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal == level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is not equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal != level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than the second one. + + The first level. + The second level. + The value of level1.Ordinal > level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal >= level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than the second one. + + The first level. + The second level. + The value of level1.Ordinal < level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal <= level2.Ordinal. + + + + Gets the that corresponds to the specified ordinal. + + The ordinal. + The instance. For 0 it returns , 1 gives and so on. + + + + Returns the that corresponds to the supplied . + + The textual representation of the log level. + The enumeration value. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Determines whether the specified instance is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Compares the level to the other object. + + + The object object. + + + A value less than zero when this logger's is + less than the other logger's ordinal, 0 when they are equal and + greater than zero when this ordinal is greater than the + other ordinal. + + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Delegate used to set/get the culture in use. + + This delegate marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the instance used in the . + + Could be used to pass the to other methods + + + + Occurs when logging changes. + + + + + Gets or sets a value indicating whether NLog should throw exceptions. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether should be thrown. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Gets or sets the global log threshold. Log events below this threshold are not logged. + + + + + Gets or sets the default culture to use. + + This property was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Adds the given assembly which will be skipped + when NLog is trying to find the calling method on stack trace. + + The assembly to skip. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The logger class. This class must inherit from . + The logger of type . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates a logger that discards all log messages. + + Null logger which discards all log messages. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + + + + Gets the specified named custom logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The logger class. This class must inherit from . + The logger of type . Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + The generic way for this method is + + + + Loops through all loggers previously returned by GetLogger. + and recalculates their target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Checks if logging is currently enabled. + + if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Dispose all targets, and shutdown logging. + + + + + Generates a formatted message from the log event + + Log event. + Formatted message + + + + Returns a log message. Used to defer calculation of + the log message until it's actually needed. + + Log message. + + + + Service contract for Log Receiver client. + + This class marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Client of ILogReceiverServer + + + + + Occurs when the log message processing has completed. + + + + + Occurs when Open operation has completed. + + + + + Occurs when Close operation has completed. + + + + + Enables the user to configure client and service credentials as well as service credential authentication settings for use on the client side of communication. + + + + + Gets the underlying implementation. + + + + + Gets the target endpoint for the service to which the WCF client can connect. + + + + + Opens the client asynchronously. + + + + + Opens the client asynchronously. + + User-specific state. + + + + Closes the client asynchronously. + + + + + Closes the client asynchronously. + + User-specific state. + + + + Processes the log messages asynchronously. + + The events to send. + + + + Processes the log messages asynchronously. + + The events to send. + User-specific state. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Gets or sets the cookie container. + + The cookie container. + + + + Internal configuration of Log Receiver Service contracts. + + + + + Wire format for NLog Event. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the client-generated identifier of the event. + + + + + Gets or sets the ordinal of the log level. + + + + + Gets or sets the logger ordinal (index into . + + The logger ordinal. + + + + Gets or sets the time delta (in ticks) between the time of the event and base time. + + + + + Gets or sets the message string index. + + + + + Gets or sets the collection of layout values. + + + + + Gets the collection of indexes into array for each layout value. + + + + + Converts the to . + + The object this is part of.. + The logger name prefix to prepend in front of the logger name. + Converted . + + + + Wire format for NLog event package. + + + + + Gets or sets the name of the client. + + The name of the client. + + + + Gets or sets the base time (UTC ticks) for all events in the package. + + The base time UTC. + + + + Gets or sets the collection of layout names which are shared among all events. + + The layout names. + + + + Gets or sets the collection of logger names. + + The logger names. + + + + Gets or sets the list of events. + + The events. + + + + Converts the events to sequence of objects suitable for routing through NLog. + + The logger name prefix to prepend in front of each logger name. + + Sequence of objects. + + + + + Converts the events to sequence of objects suitable for routing through NLog. + + + Sequence of objects. + + + + + List of strings annotated for more terse serialization. + + + + + Initializes a new instance of the class. + + + + + Log Receiver Client using WCF. + + + This class marked as obsolete before NLog 4.3.11 and it will be removed in a future release. + + It provides an implementation of the legacy interface and it will be completely obsolete when the + ILogReceiverClient is removed. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Returns a new channel from the client to the service. + + + A channel of type that identifies the type + of service contract encapsulated by this client object (proxy). + + + + + Log Receiver Client facade. It allows the use either of the one way or two way + service contract using WCF through its unified interface. + + + Delegating methods are generated with Resharper. + 1. change ProxiedClient to private field (instead of public property) + 2. delegate members + 3. change ProxiedClient back to public property. + + + + + + The client getting proxied + + + + + Do we use one-way or two-way messaging? + + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Whether to use the one way or two way WCF client. + The binding. + The remote address. + + + + Causes a communication object to transition immediately from its current state into the closed state. + + + + + Begins an asynchronous operation to close a communication object. + + + The that references the asynchronous close operation. + + The delegate that receives notification of the completion of the asynchronous close operation.An object, specified by the application, that contains state information associated with the asynchronous close operation. was called on an object in the state.The default timeout elapsed before the was able to close gracefully. + + + + Begins an asynchronous operation to close a communication object with a specified timeout. + + + The that references the asynchronous close operation. + + The that specifies how long the send operation has to complete before timing out.The delegate that receives notification of the completion of the asynchronous close operation.An object, specified by the application, that contains state information associated with the asynchronous close operation. was called on an object in the state.The specified timeout elapsed before the was able to close gracefully. + + + + Begins an asynchronous operation to open a communication object. + + + The that references the asynchronous open operation. + + The delegate that receives notification of the completion of the asynchronous open operation.An object, specified by the application, that contains state information associated with the asynchronous open operation.The was unable to be opened and has entered the state.The default open timeout elapsed before the was able to enter the state and has entered the state. + + + + Begins an asynchronous operation to open a communication object within a specified interval of time. + + + The that references the asynchronous open operation. + + The that specifies how long the send operation has to complete before timing out.The delegate that receives notification of the completion of the asynchronous open operation.An object, specified by the application, that contains state information associated with the asynchronous open operation.The was unable to be opened and has entered the state.The specified timeout elapsed before the was able to enter the state and has entered the state. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Enables the user to configure client and service credentials as well as service credential authentication settings for use on the client side of communication. + + + + + Causes a communication object to transition from its current state into the closed state. + + The that specifies how long the send operation has to complete before timing out. was called on an object in the state.The timeout elapsed before the was able to close gracefully. + + + + Causes a communication object to transition from its current state into the closed state. + + was called on an object in the state.The default close timeout elapsed before the was able to close gracefully. + + + + Closes the client asynchronously. + + User-specific state. + + + + Closes the client asynchronously. + + + + + Occurs when Close operation has completed. + + + + + Occurs when the communication object completes its transition from the closing state into the closed state. + + + + + Occurs when the communication object first enters the closing state. + + + + + Gets or sets the cookie container. + + The cookie container. + + + + Completes an asynchronous operation to close a communication object. + + The that is returned by a call to the method. was called on an object in the state.The timeout elapsed before the was able to close gracefully. + + + + Completes an asynchronous operation to open a communication object. + + The that is returned by a call to the method.The was unable to be opened and has entered the state.The timeout elapsed before the was able to enter the state and has entered the state. + + + + Gets the target endpoint for the service to which the WCF client can connect. + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Occurs when the communication object first enters the faulted state. + + + + + Gets the underlying implementation. + + + + + Causes a communication object to transition from the created state into the opened state. + + The was unable to be opened and has entered the state.The default open timeout elapsed before the was able to enter the state and has entered the state. + + + + Causes a communication object to transition from the created state into the opened state within a specified interval of time. + + The that specifies how long the send operation has to complete before timing out.The was unable to be opened and has entered the state.The specified timeout elapsed before the was able to enter the state and has entered the state. + + + + Opens the client asynchronously. + + + + + Opens the client asynchronously. + + User-specific state. + + + + Occurs when Open operation has completed. + + + + + Occurs when the communication object completes its transition from the opening state into the opened state. + + + + + Occurs when the communication object first enters the opening state. + + + + + Processes the log messages asynchronously. + + The events to send. + + + + Processes the log messages asynchronously. + + The events to send. + User-specific state. + + + + Occurs when the log message processing has completed. + + + + + Gets the current state of the communication-oriented object. + + + The value of the of the object. + + + + + Causes a communication object to transition from its current state into the closed state. + + + + + Abstract base class for the WcfLogReceiverXXXWay classes. It can only be + used internally (see internal constructor). It passes off any Channel usage + to the inheriting class. + + Type of the WCF service. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Occurs when the log message processing has completed. + + + + + Occurs when Open operation has completed. + + + + + Occurs when Close operation has completed. + + + + + Gets or sets the cookie container. + + The cookie container. + + + + Opens the client asynchronously. + + + + + Opens the client asynchronously. + + User-specific state. + + + + Closes the client asynchronously. + + + + + Closes the client asynchronously. + + User-specific state. + + + + Processes the log messages asynchronously. + + The events to send. + + + + Processes the log messages asynchronously. + + The events to send. + User-specific state. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Log Receiver Client using WCF. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Returns a new channel from the client to the service. + + + A channel of type that identifies the type + of service contract encapsulated by this client object (proxy). + + + + + Log Receiver Client using WCF. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + Name of the endpoint configuration. + The remote address. + + + + Initializes a new instance of the class. + + The binding. + The remote address. + + + + Begins processing of log messages. + + The events to send. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Returns a new channel from the client to the service. + + + A channel of type that identifies the type + of service contract encapsulated by this client object (proxy). + + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + + + + + Gets the thread-local dictionary + + Must be true for any subsequent dictionary modification operation + + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The to use when converting a value to a . + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Returns all item names + + A set of the names of all items in current thread-MDC. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified exists in current thread MDC. + + + + Removes the specified from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Mapped Diagnostics Context + + This class marked as obsolete before NLog 2.0 and it may be removed in a future release. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified item exists in current thread MDC. + + + + Removes the specified item from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Mark a parameter of a method for message templating + + + + + Specifies which parameter of an annotated method should be treated as message-template-string + + + + + The name of the parameter that should be as treated as message-template-string + + + + + The type of the captured hole + + + + + Not decided + + + + + normal {x} + + + + + Serialize operator {@x} (aka destructure) + + + + + stringification operator {$x} + + + + + A hole that will be replaced with a value + + + + + Constructor + + + + Parameter name sent to structured loggers. + This is everything between "{" and the first of ",:}". + Including surrounding spaces and names that are numbers. + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + Type + + + + When the template is positional, this is the parsed name of this parameter. + For named templates, the value of Index is undefined. + + + Alignment to render the parameter, by default 0. + This is the parsed value between "," and the first of ":}" + + + + A fixed value + + + + Number of characters from the original template to copy at the current position. + This can be 0 when the template starts with a hole or when there are multiple consecutive holes. + + + Number of characters to skip in the original template at the current position. + 0 is a special value that mean: 1 escaped char, no hole. It can also happen last when the template ends with a literal. + + + + Combines Literal and Hole + + + + Literal + + + Hole + Uninitialized when = 0. + + + + Description of a single parameter extracted from a MessageTemplate + + + + + Parameter Name extracted from + This is everything between "{" and the first of ",:}". + + + + + Parameter Value extracted from the -array + + + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + + Parameter method that should be used to render the parameter + See also + + + + + Returns index for , when + + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + Parameter CaptureType + + + + Parameters extracted from parsing as MessageTemplate + + + + + + + + + + + Gets the parameters at the given index + + + + + Number of parameters + + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Indicates whether the template was parsed successful, and there are no unmatched parameters + + + + + Constructor for parsing the message template with parameters + + including any parameter placeholders + All + + + + Constructor for named parameters that already has been parsed + + + + + Create MessageTemplateParameter from + + + + + A message template + + + + The original template string. + This is the key passed to structured targets. + + + The list of literal parts, useful for string rendering. + It indicates the number of characters from the original string to print, + then there's a hole with how many chars to skip. + + "Hello {firstName} {lastName}!" + ------------------------------------- + ║P |S ║P|S ║P|S║ + ║6 |11 ║1|10 ║1|0║ + ║Hello |{firstName}║ |{lastName}║!║ + + "{x} * 2 = {2x}" + -------------------- + ║P|S ║P |S ║ + ║0|3 ║7 |4 ║ + ║{x}║ * 2 = |{2x}║ + + The tricky part is escaped braces. They are represented by a skip = 0, + which is interpreted as "move one char forward, no hole". + + "Escaped }} is fun." + ---------------------- + ║P |S║P |S║ + ║9 |0║8 |0║ + ║Escaped }|}║ is fun.|║ + + + + This list of holes. It's used both to fill the string rendering + and to send values along the template to structured targets. + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Create a template, which is already parsed + + + + + + + + + Create a template, which is already parsed + + + + + + + + This is for testing only: recreates from the parsed data. + + + + This is for testing only: rebuilds the hole + + Add to this string builder + ref for performance + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Gets the current literal/hole in the template + + + + + Clears the enumerator + + + + + Restarts the enumerator of the template + + + + + Moves to the next literal/hole in the template + + Found new element [true/false] + + + + Parse format after hole name/index. Handle the escaped { and } in the format. Don't read the last } + + + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Error when parsing a template. + + + + + Current index when the error occurred. + + + + + The template we were parsing + + + + + New exception + + The message to be shown. + Current index when the error occurred. + + + + + Render templates + + + + + Render a template to a string. + + The template. + Culture. + Parameters for the holes. + Do not fallback to StringBuilder.Format for positional templates. + The String Builder destination. + Parameters for the holes. + + + + Render a template to a string. + + The template. + The String Builder destination. + Culture. + Parameters for the holes. + Rendered template, never null. + + + + Convert Render or serialize a value, with optionally backwards-compatible with + + + + Singleton + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Format an object to a readable string, or if it's an object, serialize + + The value to convert + + + + + + + + Try serializing a scalar (string, int, NULL) or simple type (IFormattable) + + + + + Serialize Dictionary as JSON like structure, without { and } + + + "FirstOrder"=true, "Previous login"=20-12-2017 14:55:32, "number of tries"=1 + + + formatstring of an item + + + + + + + + + Convert a value to a string with format and append to . + + The value to convert. + Format sting for the value. + Format provider for the value. + Append to this + + + + Nested Diagnostics Context + + This class marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top object off the NDC stack. The object is removed from the stack. + + The top object from the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all objects on the NDC stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Nested Diagnostics Context - a thread-local structure that keeps a stack + of strings and provides methods to output them in layouts + + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object at the top of the NDC stack if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified object on current thread NDC. + + The object to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top message from the NDC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top object off the NDC stack. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Peeks the first object on the NDC stack + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. + + Array of objects on the stack. + + + + Resets the stack to the original count during . + + + + + Initializes a new instance of the class. + + The stack. + The previous count. + + + + Reverts the stack to original item count. + + + + + Exception thrown during NLog configuration. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The inner exception. + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Exception thrown during log event processing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + It works as a normal but it discards all messages which an application requests + to be logged. + + It effectively implements the "Null Object" pattern for objects. + + + + + Initializes a new instance of . + + The factory class to be used for the creation of this logger. + + + + Extension methods to setup LogFactory options + + + + + Gets the logger with the full name of the current class, so namespace and class name. + + + + + Gets the specified named logger. + + + + + Configures loading of NLog extensions for Targets and LayoutRenderers + + + + + Configures the output of NLog for diagnostics / troubleshooting + + + + + Configures serialization and transformation of LogEvents + + + + + Loads NLog config created by the method + + + + + Loads NLog config provided in + + + + + Loads NLog config from filename if provided, else fallback to scanning for NLog.config + + + + + Loads NLog config from XML in + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Enable/disables autoloading of NLog extensions by scanning and loading available assemblies + + + Enabled by default, and gives a huge performance hit during startup. Recommended to disable this when running in the cloud. + + + + + Registers NLog extensions from the assembly. + + + + + Registers NLog extensions from the assembly type name + + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + MethodInfo extracted by reflection - typeof(MyClass).GetMethod("MyFunc", BindingFlags.Static). + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + Lambda method. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + Lambda method. + + + + Extension methods to setup NLog options + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Overrides the active with a new custom implementation + + + + + Overrides the active with a new custom implementation + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Specifies the way archive numbering is performed. + + + + + Sequence style numbering. The most recent archive has the highest number. + + + + + Rolling style numbering (the most recent is always #0 then #1, ..., #N. + + + + + Date style numbering. Archives will be stamped with the prior period + (Year, Month, Day, Hour, Minute) datetime. + + + + + Date and sequence style numbering. + Archives will be stamped with the prior period (Year, Month, Day) datetime. + The most recent archive has the highest number (in combination with the date). + + + + + Abstract Target with async Task support + + + + + How many milliseconds to delay the actual write operation to optimize for batching + + + + + How many seconds a Task is allowed to run before it is cancelled. + + + + + How many attempts to retry the same Task, before it is aborted + + + + + How many milliseconds to wait before next retry (will double with each retry) + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Task Scheduler used for processing async Tasks + + + + + Constructor + + + + + Initializes the internal queue for pending logevents + + + + + Override this to create the actual logging task + + Example of how to override this method, and call custom async method + + protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) + { + return CustomWriteAsync(logEvent, token); + } + + private async Task CustomWriteAsync(LogEventInfo logEvent, CancellationToken token) + { + await MyLogMethodAsync(logEvent, token).ConfigureAwait(false); + } + + + The log event. + The cancellation token + + + + + Override this to create the actual logging task for handling batch of logevents + + A batch of logevents. + The cancellation token + + + + + Handle cleanup after failed write operation + + Exception from previous failed Task + The cancellation token + Number of retries remaining + Time to sleep before retrying + Should attempt retry + + + + Schedules the LogEventInfo for async writing + + The log event. + + + + Write to queue without locking + + + + + + Schedules notification of when all messages has been written + + + + + + Closes Target by updating CancellationToken + + + + + Releases any managed resources + + + + + + Checks the internal queue for the next to create a new task for + + Used for race-condition validation between task-completion and timeout + Signals whether previousTask completed an almost full BatchSize + + + + Generates recursive task-chain to perform retry of writing logevents with increasing retry-delay + + + + + Creates new task to handle the writing of the input + + LogEvents to write + New Task created [true / false] + + + + Handles that scheduled task has completed (successfully or failed), and starts the next pending task + + Task just completed + AsyncContinuation to notify of success or failure + + + + Timer method, that is fired when pending task fails to complete within timeout + + + + + + Sends log messages to the remote instance of Chainsaw application from log4j. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a name. + + Name of the target. + + + + Writes log messages to the console. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default. In multi threaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Gets or sets a value indicating whether to send the log messages to the standard error instead of the standard output. + + + + + + Gets or sets a value indicating whether to auto-check if the console is available + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + + Gets or sets whether to enable batch writing using char[]-buffers, instead of using + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified logging event to the Console.Out or + Console.Error depending on the value of the Error flag. + + The logging event. + + Note that the Error option is not supported on .NET Compact Framework. + + + + + + + + Write to output + + + + + A descriptor for an archive created with the DateAndSequence numbering mode. + + + + + The full name of the archive file. + + + + + The parsed date contained in the file name. + + + + + The parsed sequence number contained in the file name. + + + + + Determines whether produces the same string as the current instance's date once formatted with the current instance's date format. + + The date to compare the current object's date to. + True if the formatted dates are equal, otherwise False. + + + + Initializes a new instance of the class. + + + + + Writes log messages to the attached managed debugger. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the attached debugger. + + The logging event. + + + + Mock target - useful for testing. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + Increases the number of messages. + + The logging event. + + + + Default class for serialization of values to JSON format. + + + + + Singleton instance of the serializer. + + + + + Private. Use + + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + Serialized value. + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + serialisation options + Serialized value. + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + The objects in path (Avoid cyclic reference loop). + The current depth (level) of recursion. + Object serialized successfully (true/false). + + + + No quotes needed for this type? + + + + + Checks the object if it is numeric + + TypeCode for the object + Accept fractional types as numeric type. + + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + all options + JSON escaped string + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + Should non-ascii characters be encoded + + JSON escaped string + + + + Check if cleanup should be performed on initialize new file + + Skip cleanup when initializing new file, just after having performed archive operation + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Characters determining the start of the . + + + + + Characters determining the end of the . + + + + + File name which is used as template for matching and replacements. + It is expected to contain a pattern to match. + + + + + The begging position of the + within the . -1 is returned + when no pattern can be found. + + + + + The ending position of the + within the . -1 is returned + when no pattern can be found. + + + + + Replace the pattern with the specified String. + + + + + + + Archives the log-files using a date style numbering. Archives will be stamped with the + prior period (Year, Month, Day, Hour, Minute) datetime. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Archives the log-files using a date and sequence style numbering. Archives will be stamped + with the prior period (Year, Month, Day) datetime. The most recent archive has the highest number (in + combination with the date). + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Parse filename with date and sequence pattern + + + dateformat for archive + + the found pattern. When failed, then default + the found pattern. When failed, then default + + + + + Archives the log-files using the provided base-archive-filename. If the base-archive-filename causes + duplicate archive filenames, then sequence-style is automatically enforced. + + Example: + Base Filename trace.log + Next Filename trace.0.log + + The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Dynamically converts a non-template archiveFilePath into a correct archiveFilePattern. + Before called the original IFileArchiveMode, that has been wrapped by this + + + + + Determines if the file name as contains a numeric pattern i.e. {#} in it. + + Example: + trace{#}.log Contains the numeric pattern. + trace{###}.log Contains the numeric pattern. + trace{#X#}.log Contains the numeric pattern (See remarks). + trace.log Does not contain the pattern. + + Occasionally, this method can identify the existence of the {#} pattern incorrectly. + File name to be checked. + when the pattern is found; otherwise. + + + + Archives the log-files using a rolling style numbering (the most recent is always #0 then + #1, ..., #N. + + When the number of archive files exceed the obsolete archives + are deleted. + + + + + Replaces the numeric pattern i.e. {#} in a file name with the parameter value. + + File name which contains the numeric pattern. + Value which will replace the numeric pattern. + File name with the value of in the position of the numeric pattern. + + + + Archives the log-files using a sequence style numbering. The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Modes of archiving files based on time. + + + + + Don't archive based on time. + + + + + AddToArchive every year. + + + + + AddToArchive every month. + + + + + AddToArchive daily. + + + + + AddToArchive every hour. + + + + + AddToArchive every minute. + + + + + AddToArchive every Sunday. + + + + + AddToArchive every Monday. + + + + + AddToArchive every Tuesday. + + + + + AddToArchive every Wednesday. + + + + + AddToArchive every Thursday. + + + + + AddToArchive every Friday. + + + + + AddToArchive every Saturday. + + + + + Type of filepath + + + + + Detect of relative or absolute + + + + + Relative path + + + + + Absolute path + + Best for performance + + + + Writes log messages to one or more files. + + Documentation on NLog Wiki + + + + Default clean up period of the initialized files. When a file exceeds the clean up period is removed from the list. + + Clean up period is defined in days. + + + + The maximum number of initialized files before clean up procedures are initiated, + to keep the number of initialized files to a minimum. Chose 25 to cater for monthly rolling of log-files. + + + + + This value disables file archiving based on the size. + + + + + Holds the initialized files each given time by the instance. Against each file, the last write time is stored. + + Last write time is store in local time (no UTC). + + + + List of the associated file appenders with the instance. + + + + + The number of initialized files at any one time. + + + + + The maximum number of archive files that should be kept. + + + + + The maximum days of archive files that should be kept. + + + + + The filename as target + + + + + The archive file name as target + + + + + The date of the previous log event. + + + + + The file name of the previous log event. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the name of the file to write to. + + + This FileName string is a layout which may include instances of layout renderers. + This lets you use a single target to write to multiple files. + + + The following value makes NLog write logging events to files based on the log level in the directory where + the application runs. + ${basedir}/${level}.log + All Debug messages will go to Debug.log, all Info messages will go to Info.log and so on. + You can combine as many of the layout renderers as you want to produce an arbitrary log file name. + + + + + + Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. + If set to false, nothing gets written when the filename is wrong. + + + + + + Is the an absolute or relative path? + + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + + Gets or sets a value indicating whether to delete old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + + + + + + Gets or sets a value indicating whether to replace file contents on each write instead of appending log message at the end. + + + + + + Gets or sets a value indicating whether to keep log file open instead of opening and closing it on each logging event. + + + Setting this property to True helps improve performance. + + + + + + Gets or sets the maximum number of log file names that should be stored as existing. + + + The bigger this number is the longer it will take to write each log record. The smaller the number is + the higher the chance that the clean function will be run when no new files have been opened. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + + Gets or sets the line ending mode. + + + + + + Gets or sets a value indicating whether to automatically flush the file buffers after each log message. + + + + + + Gets or sets the number of files to be kept open. Setting this to a higher value may improve performance + in a situation where a single File target is writing to many files + (such as splitting by level or by logger). + + + The files are managed on a LRU (least recently used) basis, which flushes + the files that have not been used for the longest period of time should the + cache become full. As a rule of thumb, you shouldn't set this parameter to + a very high value. A number like 10-15 shouldn't be exceeded, because you'd + be keeping a large number of files open which consumes system resources. + + + + + + Gets or sets the maximum number of seconds that files are kept open. If this number is negative the files are + not automatically closed after a period of inactivity. + + + + + + Gets or sets the maximum number of seconds before open files are flushed. If this number is negative or zero + the files are not flushed by timer. + + + + + + Gets or sets the log file buffer size in bytes. + + + + + + Gets or sets the file encoding. + + + + + + Gets or sets whether or not this target should just discard all data that its asked to write. + Mostly used for when testing NLog Stack except final write + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on different network hosts. + + + This effectively prevents files from being kept open. + + + + + + Gets or sets a value indicating whether to write BOM (byte order mark) in created files + + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + The actual delay is a random value between 0 and the value specified + in this parameter. On each failed attempt the delay base is doubled + up to times. + + + Assuming that ConcurrentWriteAttemptDelay is 10 the time to wait will be:

+ a random value between 0 and 10 milliseconds - 1st attempt
+ a random value between 0 and 20 milliseconds - 2nd attempt
+ a random value between 0 and 40 milliseconds - 3rd attempt
+ a random value between 0 and 80 milliseconds - 4th attempt
+ ...

+ and so on. + + + + +

+ Gets or sets a value indicating whether to archive old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + After archiving the old file, the current log file will be empty. + + +
+ + + Gets or sets a value of the file size threshold to archive old log file on startup. + + + This option won't work if is set to false + Default value is 0 which means that the file is archived as soon as archival on + startup is enabled. + + + + + + Gets or sets a value specifying the date format to use when archiving files. + + + This option works only when the "ArchiveNumbering" parameter is set either to Date or DateAndSequence. + + + + + + Gets or sets the size in bytes above which log files will be automatically archived. + + Warning: combining this with isn't supported. We cannot create multiple archive files, if they should have the same name. + Choose: + + + Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. + + + + + + Gets or sets a value indicating whether to automatically archive log files every time the specified time passes. + + + Files are moved to the archive as part of the write operation if the current period of time changes. For example + if the current hour changes from 10 to 11, the first write that will occur + on or after 11:00 will trigger the archiving. +

+ Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. +

+
+ +
+ + + Is the an absolute or relative path? + + + + + + Gets or sets the name of the file to be used for an archive. + + + It may contain a special placeholder {#####} + that will be replaced with a sequence of numbers depending on + the archiving strategy. The number of hash characters used determines + the number of numerical digits to be used for numbering files. + + + + + + Gets or sets the maximum number of archive files that should be kept. + + + + + + Gets or sets the maximum days of archive files that should be kept. + + + + + + Gets or sets the way file archives are numbered. + + + + + + Used to compress log files during archiving. + This may be used to provide your own implementation of a zip file compressor, + on platforms other than .Net4.5. + Defaults to ZipArchiveFileCompressor on .Net4.5 and to null otherwise. + + + + + + Gets or sets a value indicating whether to compress archive files into the zip archive format. + + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + + Gets or sets a value indicating whether the footer should be written only when the file is archived. + + + + + + Gets the characters that are appended after each line. + + + + + Refresh the ArchiveFilePatternToWatch option of the . + The log file must be watched for archiving when multiple processes are writing to the same + open file. + + + + + Removes records of initialized files that have not been + accessed in the last two days. + + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Removes records of initialized files that have not been + accessed after the specified date. + + The cleanup threshold. + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Flushes all pending file operations. + + The asynchronous continuation. + + The timeout parameter is ignored, because file APIs don't provide + the needed functionality. + + + + + Returns the suitable appender factory ( ) to be used to generate the file + appenders associated with the instance. + + The type of the file appender factory returned depends on the values of various properties. + + suitable for this instance. + + + + Initializes file logging by creating data structures that + enable efficient multi-file logging. + + + + + Closes the file(s) opened for writing. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Get full filename (=absolute) and cleaned if needed. + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes the specified array of logging events to a file specified in the FileName + parameter. + + An array of objects. + + This function makes use of the fact that the events are batched by sorting + the requests by filename. This optimizes the number of open/close calls + and can help improve performance. + + + + + Returns estimated size for memory stream, based on events count and first event size in bytes. + + Count of events + Bytes count of first event + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Gets the bytes to be written to the file. + + Log event. + Array of bytes that are ready to be written. + + + + Modifies the specified byte array before it gets sent to a file. + + The byte array. + The modified byte array. The function can do the modification in-place. + + + + Gets the bytes to be written to the file. + + The log event to be formatted. + to help format log event. + Optional temporary char-array to help format log event. + Destination for the encoded result. + + + + Formats the log event for write. + + The log event to be formatted. + for the result. + + + + Modifies the specified byte array before it gets sent to a file. + + The LogEvent being written + The byte array. + + + + Archives fileName to archiveFileName. + + File name to be archived. + Name of the archive file. + + + + Gets the correct formatting to be used based on the value of for converting values which will be inserting into file + names during archiving. + + This value will be computed only when a empty value or is passed into + + Date format to used irrespectively of value. + Formatting for dates. + + + + Calculate the DateTime of the requested day of the week. + + The DateTime of the previous log event. + The next occuring day of the week to return a DateTime for. + The DateTime of the next occuring dayOfWeek. + For example: if previousLogEventTimestamp is Thursday 2017-03-02 and dayOfWeek is Sunday, this will return + Sunday 2017-03-05. If dayOfWeek is Thursday, this will return *next* Thursday 2017-03-09. + + + + Invokes the archiving process after determining when and which type of archiving is required. + + File name to be checked and archived. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + + + + Gets the pattern that archive files will match + + Filename of the log file + Log event that the instance is currently processing. + A string with a pattern that will match the archive file names + + + + Archives the file if it should be archived. + + The file name to check for. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + True when archive operation of the file was completed (by this target or a concurrent target) + + + + Closes any active file-appenders that matches the input filenames. + File-appender is requested to invalidate/close its filehandle, but keeping its archive-mutex alive + + + + + Indicates if the automatic archiving process should be executed. + + File name to be written. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the correct filename to archive + + + + + + Gets the file name for archiving, or null if archiving should not occur based on file size. + + File name to be written. + The size in bytes of the next chunk of data to be written in the file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the file name for archiving, or null if archiving should not occur based on date/time. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Truncates the input-time, so comparison of low resolution times (like dates) are not affected by ticks + + High resolution Time + Time Resolution Level + Truncated Low Resolution Time + + + + Evaluates which parts of a file should be written (header, content, footer) based on various properties of + instance and writes them. + + File name to be written. + Raw sequence of to be written into the content part of the file. + File has just been opened. + + + + Initialise a file to be used by the instance. Based on the number of initialized + files and the values of various instance properties clean up and/or archiving processes can be invoked. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file (DateTime.MinValue if just initialized). + + + + Writes the file footer and finalizes the file in instance internal structures. + + File name to close. + Indicates if the file is being finalized for archiving. + + + + Writes the footer information to a file. + + The file path to write to. + + + + Decision logic whether to archive logfile on startup. + and properties. + + File name to be written. + Decision whether to archive or not. + + + + Invokes the archiving and clean up of older archive file based on the values of + and + properties respectively. + + File name to be written. + Log event that the instance is currently processing. + + + + Creates the file specified in and writes the file content in each entirety i.e. + Header, Content and Footer. + + The name of the file to be written. + Sequence of to be written in the content section of the file. + First attempt to write? + This method is used when the content of the log file is re-written on every write. + + + + Writes the header information and byte order mark to a file. + + File appender associated with the file. + + + + The sequence of to be written in a file after applying any formatting and any + transformations required from the . + + The layout used to render output message. + Sequence of to be written. + Usually it is used to render the header and hooter of the files. + + + + Check if cleanup should be performed on initialize new file + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Create a wildcard file-mask that allows one to find all files belonging to the same archive. + + Base archive file pattern + Wildcard file-mask + + + + Search directory for all existing files that are part of the same archive. + + Base archive file pattern + + + + + Generate the next archive filename for the archive. + + Base archive file pattern + File date of archive + Existing files in the same archive + + + + + Return all files that should be removed from the provided archive. + + Base archive file pattern + Existing files in the same archive + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + + + + may be configured to compress archived files in a custom way + by setting before logging your first event. + + + + + Create archiveFileName by compressing fileName. + + Absolute path to the log file to compress. + Absolute path to the compressed archive file to create. + + + + Interface for serialization of values, maybe even objects to JSON format. + Useful for wrappers for existing serializers. + + + + + Returns a serialization of an object + into JSON format. + + The object to serialize to JSON. + Serialized value (null = Serialize failed). + + + + Options for JSON serialisation + + + + + Add quotes around object keys? + + + + + Format provider for value + + + + + Format string for value + + + + + Should non-ascii characters be encoded + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + Serialize enum as string value + + + + + Should dictionary keys be sanitized. All characters must either be letters, numbers or underscore character (_). + + Any other characters will be converted to underscore character (_) + + + + + How far down the rabbit hole should the Json Serializer go with object-reflection before stopping + + + + Initializes a new instance of the class. + + + + Line ending mode. + + + + + Insert platform-dependent end-of-line sequence after each line. + + + + + Insert CR LF sequence (ASCII 13, ASCII 10) after each line. + + + + + Insert CR character (ASCII 13) after each line. + + + + + Insert LF character (ASCII 10) after each line. + + + + + Insert null terminator (ASCII 0) after each line. + + + + + Do not insert any line ending. + + + + + Gets the name of the LineEndingMode instance. + + + + + Gets the new line characters (value) of the LineEndingMode instance. + + + + + Initializes a new instance of . + + The mode name. + The new line characters to be used. + + + + Returns the that corresponds to the supplied . + + + The textual representation of the line ending mode, such as CRLF, LF, Default etc. + Name is not case sensitive. + + The value, that corresponds to the . + There is no line ending mode with the specified name. + + + + Compares two objects and returns a + value indicating whether the first one is equal to the second one. + + The first level. + The second level. + The value of mode1.NewLineCharacters == mode2.NewLineCharacters. + + + + Compares two objects and returns a + value indicating whether the first one is not equal to the second one. + + The first mode + The second mode + The value of mode1.NewLineCharacters != mode2.NewLineCharacters. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms + and data structures like a hash table. + + + + + Determines whether the specified is + equal to this instance. + + The to compare with + this instance. + + Value of true if the specified + is equal to this instance; otherwise, false. + + + The parameter is null. + + + + Indicates whether the current object is equal to another object of the same type. + true if the current object is equal to the parameter; otherwise, false. + An object to compare with this object. + + + + Provides a type converter to convert objects to and from other representations. + + + + + Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. + + + true if this converter can perform the conversion; otherwise, false. + + An that provides a format context. A that represents the type you want to convert from. + + + + Converts the given object to the type of this converter, using the specified context and culture information. + + + An that represents the converted value. + + An that provides a format context. The to use as the current culture. The to convert. The conversion cannot be performed. + + + + Sends log messages to a NLog Receiver Service (using WCF or Web Services). + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets the endpoint address. + + The endpoint address. + + + + + Gets or sets the name of the endpoint configuration in WCF configuration file. + + The name of the endpoint configuration. + + + + + Gets or sets a value indicating whether to use binary message encoding. + + + + + + Gets or sets a value indicating whether to use a WCF service contract that is one way (fire and forget) or two way (request-reply) + + + + + + Gets or sets the client ID. + + The client ID. + + + + + Gets the list of parameters. + + The parameters. + + + + + Gets or sets a value indicating whether to include per-event properties in the payload sent to the server. + + + + + + Called when log events are being sent (test hook). + + The events. + The async continuations. + True if events should be sent, false to stop processing them. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Append" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Add value to the , returns ordinal in + + + lookup so only unique items will be added to + value to add + + + + + Creating a new instance of WcfLogReceiverClient + + Inheritors can override this method and provide their own + service configuration - binding and endpoint address + + This method marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Creating a new instance of IWcfLogReceiverClient + + Inheritors can override this method and provide their own + service configuration - binding and endpoint address + + + virtual is used by end users + + + + Writes log messages to an ArrayList in memory for programmatic retrieval. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the list of logs gathered in the . + + + + + Gets or sets the max number of items to have in memory + + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + A parameter to MethodCall. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout to use for parameter value. + + + + Initializes a new instance of the class. + + Name of the parameter. + The layout. + + + + Initializes a new instance of the class. + + The name of the parameter. + The layout. + The type of the parameter. + + + + Gets or sets the name of the parameter. + + + + + + Gets or sets the type of the parameter. Obsolete alias for + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets the class name. + + + + + + Gets or sets the method name. The method must be public and static. + + Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx + e.g. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Initializes a new instance of the class. + + Name of the target. + Method to call on logevent. + + + + Initializes the target. + + + + + Calls the specified Method. + + Method parameters. + The logging event. + + + + Calls the specified Method. + + Method parameters. + + + + The base class for all targets which call methods (local or remote). + Manages parameters and type coercion. + + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + + + + Prepares an array of parameters to be passed based on the logging event and calls DoInvoke(). + + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Sends log messages over the network. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ To print the results, use any application that's able to receive messages over + TCP or UDP. NetCat is + a simple but very powerful command-line tool that can be used for that. This image + demonstrates the NetCat tool receiving log messages from Network target. +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will be very slow. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+

+ There are two specialized versions of the Network target: Chainsaw + and NLogViewer which write to instances of Chainsaw log4j viewer + or NLogViewer application respectively. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6) (not supported on Windows Phone 7.0)
  • +
  • tcp4://host:port - force TCP/IPv4 (not supported on Windows Phone 7.0)
  • +
  • tcp6://host:port - force TCP/IPv6 (not supported on Windows Phone 7.0)
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6, not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp4://host:port - force UDP/IPv4 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp6://host:port - force UDP/IPv6 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • http://host:port/pageName - HTTP using POST verb
  • +
  • https://host:port/pageName - HTTPS using POST verb
  • +
+ For SOAP-based webservice support over HTTP use WebService target. +
+ +
+ + + Gets or sets a value indicating whether to keep connection open whenever possible. + + + + + + Gets or sets a value indicating whether to append newline at the end of log message. + + + + + + Gets or sets the end of line value if a newline is appended at the end of log message . + + + + + + Gets or sets the maximum message size in bytes. + + + + + + Gets or sets the size of the connection cache (number of connections which are kept alive). + + + + + + Gets or sets the maximum current connections. 0 = no maximum. + + + + + + Gets or sets the action that should be taken if the will be more connections than . + + + + + + Gets or sets the maximum queue size. + + + + + + Gets or sets the action that should be taken if the message is larger than + maxMessageSize. + + + + + + Gets or sets the encoding to be used. + + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Sends the + rendered logging event over the network optionally concatenating it with a newline character. + + The logging event. + + + + Try to remove. + + + + + removed something? + + + + Gets the bytes to be written. + + Log event. + Byte array. + + + + The action to be taken when there are more connections then the max. + + + + + Just allow it. + + + + + Discard the connection item. + + + + + Block until there's more room in the queue. + + + + + Action that should be taken if the message overflows. + + + + + Report an error. + + + + + Split the message into smaller pieces. + + + + + Discard the entire message. + + + + + Represents a parameter to a NLogViewer target. + + + + + Initializes a new instance of the class. + + + + + Gets or sets viewer parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + Sends log messages to the remote instance of NLog Viewer. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include stack contents. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets the layout renderer which produces Log4j-compatible XML events. + + + + + Gets or sets the instance of that is used to format log messages. + + + + + + Discards log messages. Used mainly for debugging and benchmarking. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets a value indicating whether to perform layout calculation. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Does nothing. Optionally it calculates the layout text but + discards the results. + + The logging event. + + + + Outputs log messages through the OutputDebugString() Win32 API. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Outputs the rendered logging event through the OutputDebugString() Win32 API. + + The logging event. + + + + Represents logging target. + + + + Are all layouts in this target thread-agnostic, if so we don't precalculate the layouts + + + + The Max StackTraceUsage of all the in this Target + + + + + Gets or sets the name of the target. + + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers + Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + Gets the object which can be used to synchronize asynchronous operations that must rely on the . + + + + + Gets the logging configuration this target is part of. + + + + + Gets a value indicating whether the target has been initialized. + + + + + Can be used if has been enabled. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Closes the target. + + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Calls the on each volatile layout + used by this target. + This method won't prerender if all layouts in this target are thread-agnostic. + + + The log event. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Writes the log to the target. + + Log event to write. + + + + Writes the array of log events. + + The log events. + + + + Writes the array of log events. + + The log events. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Closes the target and releases any unmanaged resources. + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Writes async log event to the log target. + + Async Log event to be written out. + + + + Writes a log event to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Log event to be written out. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + NOTE! Obsolete, instead override WriteAsyncThreadSafe(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target, in a thread safe manner. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Writes an array of logging events to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Merges (copies) the event context properties from any event info object stored in + parameters of the given event info object. + + The event info object to perform the merge to. + + + + Renders the event info in layout. + + The layout. + The event info. + String representing log event. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Should the exception be rethrown? + + + Upgrade to private protected when using C# 7.2 + + + + Marks class as a logging target and assigns a name to it. + + This attribute is not required when registering the target in the API. + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets a value indicating whether to the target is a wrapper target (used to generate the target summary documentation page). + + + + + Gets or sets a value indicating whether to the target is a compound target (used to generate the target summary documentation page). + + + + + Attribute details for + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Gets or sets when an empty value should cause the property to be included + + + + + Gets or sets the type of the property. + + + + + Represents target that supports context capture using MDLC, MDC, NDLC and NDC + + + + + + + + + + + + + + + + + + + + + + + Gets or sets a value indicating whether to include contents of the dictionary + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the + + + + + + Gets the array of custom attributes to be passed into the logevent context + + + + + + Constructor + + + + + + + + Check if logevent has properties (or context properties) + + + True if properties should be included + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Dictionary with any context properties for the logEvent (Null if none found) + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Optional prefilled dictionary + Dictionary with any context properties for the logEvent (Null if none found) + + + + Creates combined dictionary of all configured properties for logEvent + + + Dictionary with all collected properties for logEvent + + + + Creates combined dictionary of all configured properties for logEvent + + + Optional prefilled dictionary + Dictionary with all collected properties for logEvent + + + + Generates a new unique name, when duplicate names are detected + + LogEvent that triggered the duplicate name + Duplicate item name + Item Value + Dictionary of context values + New (unique) value (or null to skip value). If the same value is used then the item will be overwritten + + + + Returns the captured snapshot of for the + + + Dictionary with MDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with GDC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDC key + MDC value + Snapshot of MDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDC value + Snapshot of NDC value + Include object value in snapshot + + + + Take snapshot of a single object value + + Log event + Key Name (null when NDC / NDLC) + Object Value + Snapshot of value + Include object value in snapshot + + + Internal Layout that allows capture of MDC context + + + Internal Layout that allows capture of NDC context + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the layout used to format log messages. + + + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the text to be rendered. + + + + + + Gets or sets the footer. + + + + + + Gets or sets the header. + + + + + + Gets or sets the layout with header and footer. + + The layout with header and footer. + + + + Web service protocol. + + + + + Use SOAP 1.1 Protocol. + + + + + Use SOAP 1.2 Protocol. + + + + + Use HTTP POST Protocol. + + + + + Use HTTP GET Protocol. + + + + + Do an HTTP POST of a JSON document. + + + + + Do an HTTP POST of an XML document. + + + + + Web Service Proxy Configuration Type + + + + + Default proxy configuration from app.config (System.Net.WebRequest.DefaultWebProxy) + + + Example of how to configure default proxy using app.config + + <system.net> + <defaultProxy enabled = "true" useDefaultCredentials = "true" > + <proxy usesystemdefault = "True" /> + </defaultProxy> + </system.net> + + + + + + Automatic use of proxy with authentication (cached) + + + + + Disables use of proxy (fast) + + + + + Custom proxy address (cached) + + + + + Calls the specified web service on each log message. + + Documentation on NLog Wiki + + The web service must implement a method that accepts a number of string parameters. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

The example web service that works with this example is shown below

+ +
+
+ + + dictionary that maps a concrete implementation + to a specific -value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target + + + + Gets or sets the web service URL. + + + + + + Gets or sets the Web service method name. Only used with Soap. + + + + + + Gets or sets the Web service namespace. Only used with Soap. + + + + + + Gets or sets the protocol to be used when calling web service. + + + + + + Gets or sets the custom proxy address, include port separated by a colon + + + + + + Should we include the BOM (Byte-order-mark) for UTF? Influences the property. + + This will only work for UTF-8. + + + + + + Gets or sets the encoding. + + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Gets or sets the name of the root XML element, + if POST of XML document chosen. + If so, this property must not be null. + (see and ). + + + + + + Gets or sets the (optional) root namespace of the XML document, + if POST of XML document chosen. + (see and ). + + + + + + Gets the array of parameters to be passed. + + + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Invokes the web service method. + + Parameters to be passed. + The logging event. + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Builds the URL to use when calling the web service for a message, depending on the WebServiceProtocol. + + + + + + + Write from input to output. Fix the UTF-8 bom + + + + + + + + + base class for POST formatters, that + implement former PrepareRequest() method, + that creates the content for + the requested kind of HTTP request + + + + + Asynchronous request queue. + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Gets the number of requests currently in the queue. + + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + Queue was empty before enqueue + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued (-1 means everything). + The array of log events. + + + + Dequeues into a preallocated array, instead of allocating a new one + + Maximum number of items to be dequeued + Preallocated list + + + + Clears the queue. + + + + + Gets or sets the request limit. + + + + + Gets or sets the action to be taken when there's no more room in + the queue and another request is enqueued. + + + + + Notifies about log event that was dropped when set to + + + + + Notifies when queue size is growing over + + + + + Raise event when queued element was dropped because of queue overflow + + Dropped queue item + + + + Raise event when RequestCount overflow + + current requests count + + + + Provides asynchronous, buffered execution of target writes. + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queueing + messages and processing them in a separate thread. You should wrap targets + that spend a non-trivial amount of time in their Write() method with asynchronous + target to speed up logging. +

+

+ Because asynchronous logging is quite a common scenario, NLog supports a + shorthand notation for wrapping all targets with AsyncWrapper. Just add async="true" to + the <targets/> element in the configuration file. +

+ + + ... your targets go here ... + + ]]> +
+ +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of requests in the queue. + The action to be taken when the queue overflows. + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Gets or sets the time in milliseconds to sleep between batches. (1 or less means trigger on new activity) + + + + + + Raise event when Target cannot store LogEvent. + Event arg contains lost LogEvents + + + + + Raises when event queue grow. + Queue can grow when was set to + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the limit of full s to write before yielding into + Performance is better when writing many small batches, than writing a single large batch + + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + + Gets the queue of lazy writer thread requests. + + + + + Schedules a flush of pending events in the queue (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target by starting the lazy writer timer. + + + + + Shuts down the lazy writer timer. + + + + + Starts the lazy writer thread which periodically writes + queued log messages. + + + + + Attempts to start an instant timer-worker-thread which can write + queued log messages. + + Returns true when scheduled a timer-worker-thread + + + + Stops the lazy writer thread. + + + + + Adds the log event to asynchronous queue to be processed by + the lazy writer thread. + + The log event. + + The is called + to ensure that the log event can be processed in another thread. + + + + + Write to queue without locking + + + + + + The action to be taken when the queue overflows. + + + + + Grow the queue. + + + + + Discard the overflowing item. + + + + + Block until there's more room in the queue. + + + + + Causes a flush on a wrapped target if LogEvent satisfies the . + If condition isn't set, flushes on each write. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Gets or sets the condition expression. Log events who meet this condition will cause + a flush on the wrapped target. + + + + + + Delay the flush until the LogEvent has been confirmed as written + + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + The wrapped target. + Name of the target + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes the target. + + + + + Forwards the call to the .Write() + and calls on it if LogEvent satisfies + the flush condition or condition is null. + + Logging event to be written out. + + + + Schedules a flush operation, that triggers when all pending flush operations are completed (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + The action to take when the buffer overflows. + + + + Gets or sets the number of log events to be buffered. + + + + + + Gets or sets the timeout (in milliseconds) after which the contents of buffer will be flushed + if there's no write in the specified period of time. Use -1 to disable timed flushes. + + + + + + Gets or sets a value indicating whether to use sliding timeout. + + + This value determines how the inactivity period is determined. If sliding timeout is enabled, + the inactivity timer is reset after each write, if it is disabled - inactivity timer will + count from the first event written to the buffer. + + + + + + Gets or sets the action to take if the buffer overflows. + + + Setting to will replace the + oldest event with new events without sending events down to the wrapped target, and + setting to will flush the + entire buffer to the wrapped target. + + + + + + Flushes pending events in the buffer (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target. + + + + + Closes the target by flushing pending events in the buffer (if any). + + + + + Adds the specified log event to the buffer and flushes + the buffer in case the buffer gets full. + + The log event. + + + + The action to be taken when the buffer overflows. + + + + + Flush the content of the buffer. + + + + + Discard the oldest item. + + + + + A base class for targets which wrap other (multiple) targets + and provide various forms of target routing. + + + + + Initializes a new instance of the class. + + The targets. + + + + Gets the collection of targets managed by this compound target. + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Writes logging event to the log target. + + Logging event to be written out. + + + + Flush any pending log messages for all wrapped targets. + + The asynchronous continuation. + + + + Provides fallback-on-error. + + Documentation on NLog Wiki + +

This example causes the messages to be written to server1, + and if it fails, messages go to server2.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Gets or sets a value indicating whether to return to the first target after any successful write. + + + + + + + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + The method remembers the last-known-successful target + and starts the iteration from it. + If is set, the method + resets the target to the first target + stored in . + + + + + Filtering rule for . + + + + + Initializes a new instance of the FilteringRule class. + + + + + Initializes a new instance of the FilteringRule class. + + Condition to be tested against all events. + Filter to apply to all log events when the first condition matches any of them. + + + + Gets or sets the condition to be tested. + + + + + + Gets or sets the resulting filter to be applied when the condition matches. + + + + + + Filters log entries based on a condition. + + Documentation on NLog Wiki + +

This example causes the messages not contains the string '1' to be ignored.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The condition. + + + + Initializes a new instance of the class. + + The wrapped target. + The condition. + + + + Gets or sets the condition expression. Log events who meet this condition will be forwarded + to the wrapped target. + + + + + + Gets or sets the filter. Log events who evaluates to will be discarded + + + + + + + + + Checks the condition against the passed log event. + If the condition is met, the log event is forwarded to + the wrapped target. + + Log event. + + + + + + + Limits the number of messages written per timespan to the wrapped target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of messages written per interval. + Interval in which the maximum number of messages can be written. + + + + Gets or sets the maximum allowed number of messages written per . + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets or sets the interval in which messages will be written up to the number of messages. + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets the DateTime when the current will be reset. + + + + + + Gets the number of written in the current . + + + + + + Initializes the target and resets the current Interval and . + + + + + Writes log event to the wrapped target if the current is lower than . + If the is already reached, no log event will be written to the wrapped target. + resets when the current is expired. + + Log event to be written out. + + + + Arguments for events. + + + + + + + + Instance of that was dropped by + + + + + Raises by when + queue is full + and set to + By default queue doubles it size. + + + + + Contains items count and new queue size. + + Required queue size + Current queue size + + + + New queue size + + + + + Current requests count + + + + + Filters buffered log entries based on a set of conditions that are evaluated on a group of events. + + Documentation on NLog Wiki + + PostFilteringWrapper must be used with some type of buffering target or wrapper, such as + AsyncTargetWrapper, BufferingWrapper or ASPNetBufferingWrapper. + + +

+ This example works like this. If there are no Warn,Error or Fatal messages in the buffer + only Info messages are written to the file, but if there are any warnings or errors, + the output includes detailed trace (levels >= Debug). You can plug in a different type + of buffering wrapper (such as ASPNetBufferingWrapper) to achieve different + functionality. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Gets or sets the default filter to be applied when no specific rule matches. + + + + + + Gets the collection of filtering rules. The rules are processed top-down + and the first rule that matches determines the filtering condition to + be applied to log events. + + + + + + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Evaluates all filtering rules to find the first one that matches. + The matching rule determines the filtering condition to be applied + to all items in a buffer. If no condition matches, default filter + is applied to the array of log events. + + Array of log events to be post-filtered. + + + + Evaluate all the rules to get the filtering condition + + + + + + + Sends log messages to a randomly selected target. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt + chosen randomly on a per-message basis. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the log event to one of the sub-targets. + The sub-target is randomly chosen. + + The log event. + + + + Repeats each log event the specified number of times. + + Documentation on NLog Wiki + +

This example causes each log message to be repeated 3 times.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The repeat count. + + + + Initializes a new instance of the class. + + The wrapped target. + The repeat count. + + + + Gets or sets the number of times to repeat each log message. + + + + + + Forwards the log message to the by calling the method times. + + The log event. + + + + Retries in case of write error. + + Documentation on NLog Wiki + +

This example causes each write attempt to be repeated 3 times, + sleeping 1 second between attempts if first one fails.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Initializes a new instance of the class. + + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Gets or sets the number of retries that should be attempted on the wrapped target in case of a failure. + + + + + + Gets or sets the time to wait between retries in milliseconds. + + + + + + Special SyncObject to allow closing down Target while busy retrying + + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Writes the specified log event to the wrapped target in a thread-safe manner. + + The log event. + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Distributes log events to targets in a round-robin fashion. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt. + Each odd message is written to file2.txt, each even message goes to file1.txt. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Ensures forwarding happens without holding lock + + + + + + Forwards the write to one of the targets from + the collection. + + The log event. + + The writes are routed in a round-robin fashion. + The first log event goes to the first target, the second + one goes to the second target and so on looping to the + first target when there are no more targets available. + In general request N goes to Targets[N % Targets.Count]. + + + + + Writes log events to all targets. + + Documentation on NLog Wiki + +

This example causes the messages to be written to both file1.txt or file2.txt +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the specified log event to all sub-targets. + + The log event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Base class for targets wrap other (single) targets. + + + + + Gets or sets the target that is wrapped by this target. + + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Current local time retrieved directly from DateTime.Now. + + + + + Gets current local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Current UTC time retrieved directly from DateTime.UtcNow. + + + + + Gets current UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Fast time source that updates current time only once per tick (15.6 milliseconds). + + + + + Gets raw uncached time from derived time source. + + + + + Gets current time cached for one system tick (15.6 milliseconds). + + + + + Fast local time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Fast UTC time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Defines source of current time. + + + + + Gets current time. + + + + + Gets or sets current global time source used in all log events. + + + Default time source is . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to the same form + as time values originated from this source. + + + + There are situations when NLog have to compare the time originated from TimeSource + to the time originated externally in the system. + To be able to provide meaningful result of such comparisons the system time must be expressed in + the same form as TimeSource time. + + + Examples: + - If the TimeSource provides time values of local time, it should also convert the provided + to the local time. + - If the TimeSource shifts or skews its time values, it should also apply + the same transform to the given . + + + + + + Marks class as a time source and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the time source. + + + + Define Localizable attribute for platforms that don't have it. + + + + + Initializes a new instance of the class. + + Determines whether the target is localizable. + + + + Gets or sets a value indicating whether the target is localizable. + + + + diff --git a/packages/NLog.4.7.2/lib/wp8/NLog.dll b/packages/NLog.4.7.2/lib/wp8/NLog.dll new file mode 100644 index 0000000000000000000000000000000000000000..a169c18bfb9e151a33e9787877dca6712311d573 GIT binary patch literal 666112 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

Aw|Toc_n&HYokIGv5KFUZ*aP?8`yvcTmUU_YFbW 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 literal 0 HcmV?d00001 diff --git a/packages/NLog.4.7.2/lib/wp8/NLog.xml b/packages/NLog.4.7.2/lib/wp8/NLog.xml new file mode 100644 index 0000000..e78b799 --- /dev/null +++ b/packages/NLog.4.7.2/lib/wp8/NLog.xml @@ -0,0 +1,21215 @@ + + + + NLog + + + +

+ Indicates that the value of the marked element could be null sometimes, + so the check for null is necessary before its usage. + + + [CanBeNull] object Test() => null; + + void UseTest() { + var p = Test(); + var s = p.ToString(); // Warning: Possible 'System.NullReferenceException' + } + + + + + Indicates that the value of the marked element could never be null. + + + [NotNull] object Foo() { + return null; // Warning: Possible 'null' assignment + } + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can never be null. + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can be null. + + + + + Indicates that the marked method builds string by format pattern and (optional) arguments. + Parameter, which contains format string, should be given in constructor. The format string + should be in -like form. + + + [StringFormatMethod("message")] + void ShowError(string message, params object[] args) { /* do something */ } + + void Foo() { + ShowError("Failed: {0}"); // Warning: Non-existing argument in format string + } + + + + + Specifies which parameter of an annotated method should be treated as format-string + + + + + For a parameter that is expected to be one of the limited set of values. + Specify fields of which type should be used as values for this parameter. + + + + + Indicates that the function argument should be string literal and match one + of the parameters of the caller function. For example, ReSharper annotates + the parameter of . + + + void Foo(string param) { + if (param == null) + throw new ArgumentNullException("par"); // Warning: Cannot resolve symbol + } + + + + + Indicates that the method is contained in a type that implements + System.ComponentModel.INotifyPropertyChanged interface and this method + is used to notify that some property value changed. + + + The method should be non-static and conform to one of the supported signatures: + + NotifyChanged(string) + NotifyChanged(params string[]) + NotifyChanged{T}(Expression{Func{T}}) + NotifyChanged{T,U}(Expression{Func{T,U}}) + SetProperty{T}(ref T, T, string) + + + + public class Foo : INotifyPropertyChanged { + public event PropertyChangedEventHandler PropertyChanged; + + [NotifyPropertyChangedInvocator] + protected virtual void NotifyChanged(string propertyName) { ... } + + string _name; + + public string Name { + get { return _name; } + set { _name = value; NotifyChanged("LastName"); /* Warning */ } + } + } + + Examples of generated notifications: + + NotifyChanged("Property") + NotifyChanged(() => Property) + NotifyChanged((VM x) => x.Property) + SetProperty(ref myField, value, "Property") + + + + + + Describes dependency between method input and output. + + +

Function Definition Table syntax:

+ + FDT ::= FDTRow [;FDTRow]* + FDTRow ::= Input => Output | Output <= Input + Input ::= ParameterName: Value [, Input]* + Output ::= [ParameterName: Value]* {halt|stop|void|nothing|Value} + Value ::= true | false | null | notnull | canbenull + + If method has single input parameter, it's name could be omitted.
+ Using halt (or void/nothing, which is the same) for method output + means that the methods doesn't return normally (throws or terminates the process).
+ Value canbenull is only applicable for output parameters.
+ You can use multiple [ContractAnnotation] for each FDT row, or use single attribute + with rows separated by semicolon. There is no notion of order rows, all rows are checked + for applicability and applied per each program state tracked by R# analysis.
+
+ + + [ContractAnnotation("=> halt")] + public void TerminationMethod() + + + [ContractAnnotation("halt <= condition: false")] + public void Assert(bool condition, string text) // regular assertion method + + + [ContractAnnotation("s:null => true")] + public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty() + + + // A method that returns null if the parameter is null, + // and not null if the parameter is not null + [ContractAnnotation("null => null; notnull => notnull")] + public object Transform(object data) + + + [ContractAnnotation("=> true, result: notnull; => false, result: null")] + public bool TryParse(string s, out Person result) + + +
+ + + Indicates that marked element should be localized or not. + + + [LocalizationRequiredAttribute(true)] + class Foo { + string str = "my string"; // Warning: Localizable string + } + + + + + Indicates that the value of the marked type (or its derivatives) + cannot be compared using '==' or '!=' operators and Equals() + should be used instead. However, using '==' or '!=' for comparison + with null is always permitted. + + + [CannotApplyEqualityOperator] + class NoEquality { } + + class UsesNoEquality { + void Test() { + var ca1 = new NoEquality(); + var ca2 = new NoEquality(); + if (ca1 != null) { // OK + bool condition = ca1 == ca2; // Warning + } + } + } + + + + + When applied to a target attribute, specifies a requirement for any type marked + with the target attribute to implement or inherit specific type or types. + + + [BaseTypeRequired(typeof(IComponent)] // Specify requirement + class ComponentAttribute : Attribute { } + + [Component] // ComponentAttribute requires implementing IComponent interface + class MyComponent : IComponent { } + + + + + Indicates that the marked symbol is used implicitly (e.g. via reflection, in external library), + so this symbol will not be marked as unused (as well as by other usage inspections). + + + + + Should be used on attributes and causes ReSharper to not mark symbols marked with such attributes + as unused (as well as by other usage inspections) + + + + Only entity marked with attribute considered used. + + + Indicates implicit assignment to a member. + + + + Indicates implicit instantiation of a type with fixed constructor signature. + That means any unused constructor parameters won't be reported as such. + + + + Indicates implicit instantiation of a type. + + + + Specify what is considered used implicitly when marked + with or . + + + + Members of entity marked with attribute are considered used. + + + Entity marked with attribute and all its members considered used. + + + + This attribute is intended to mark publicly available API + which should not be removed and so is treated as used. + + + + + Tells code analysis engine if the parameter is completely handled when the invoked method is on stack. + If the parameter is a delegate, indicates that delegate is executed while the method is executed. + If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + + + + + Indicates that a method does not make any observable state changes. + The same as System.Diagnostics.Contracts.PureAttribute. + + + [Pure] int Multiply(int x, int y) => x * y; + + void M() { + Multiply(123, 42); // Waring: Return value of pure method is not used + } + + + + + Indicates that the return value of method invocation must be used. + + + + + Indicates the type member or parameter of some type, that should be used instead of all other ways + to get the value that type. This annotation is useful when you have some "context" value evaluated + and stored somewhere, meaning that all other ways to get this value must be consolidated with existing one. + + + class Foo { + [ProvidesContext] IBarService _barService = ...; + + void ProcessNode(INode node) { + DoSomething(node, node.GetGlobalServices().Bar); + // ^ Warning: use value of '_barService' field + } + } + + + + + Indicates that a parameter is a path to a file or a folder within a web project. + Path can be relative or absolute, starting from web root (~). + + + + + An extension method marked with this attribute is processed by ReSharper code completion + as a 'Source Template'. When extension method is completed over some expression, it's source code + is automatically expanded like a template at call site. + + + Template method body can contain valid source code and/or special comments starting with '$'. + Text inside these comments is added as source code when the template is applied. Template parameters + can be used either as additional method parameters or as identifiers wrapped in two '$' signs. + Use the attribute to specify macros for parameters. + + + In this example, the 'forEach' method is a source template available over all values + of enumerable types, producing ordinary C# 'foreach' statement and placing caret inside block: + + [SourceTemplate] + public static void forEach<T>(this IEnumerable<T> xs) { + foreach (var x in xs) { + //$ $END$ + } + } + + + + + + Allows specifying a macro for a parameter of a source template. + + + You can apply the attribute on the whole method or on any of its additional parameters. The macro expression + is defined in the property. When applied on a method, the target + template parameter is defined in the property. To apply the macro silently + for the parameter, set the property value = -1. + + + Applying the attribute on a source template method: + + [SourceTemplate, Macro(Target = "item", Expression = "suggestVariableName()")] + public static void forEach<T>(this IEnumerable<T> collection) { + foreach (var item in collection) { + //$ $END$ + } + } + + Applying the attribute on a template method parameter: + + [SourceTemplate] + public static void something(this Entity x, [Macro(Expression = "guid()", Editable = -1)] string newguid) { + /*$ var $x$Id = "$newguid$" + x.ToString(); + x.DoSomething($x$Id); */ + } + + + + + + Allows specifying a macro that will be executed for a source template + parameter when the template is expanded. + + + + + Allows specifying which occurrence of the target parameter becomes editable when the template is deployed. + + + If the target parameter is used several times in the template, only one occurrence becomes editable; + other occurrences are changed synchronously. To specify the zero-based index of the editable occurrence, + use values >= 0. To make the parameter non-editable when the template is expanded, use -1. + > + + + + Identifies the target parameter of a source template if the + is applied on a template method. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC action. If applied to a method, the MVC action name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC area. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is + an MVC controller. If applied to a method, the MVC controller name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC Master. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC model type. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is an MVC + partial view. If applied to a method, the MVC partial view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Allows disabling inspections for MVC views within a class or a method. + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC display template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.DisplayExtensions.DisplayForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC editor template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.EditorExtensions.EditorForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC template. + Use this attribute for custom wrappers similar to + System.ComponentModel.DataAnnotations.UIHintAttribute(System.String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component. If applied to a method, the MVC view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Controller.View(Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component name. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component view. If applied to a method, the MVC view component view name is default. + + + + + ASP.NET MVC attribute. When applied to a parameter of an attribute, + indicates that this parameter is an MVC action name. + + + [ActionName("Foo")] + public ActionResult Login(string returnUrl) { + ViewBag.ReturnUrl = Url.Action("Foo"); // OK + return RedirectToAction("Bar"); // Error: Cannot resolve action + } + + + + + Razor attribute. Indicates that a parameter or a method is a Razor section. + Use this attribute for custom wrappers similar to + System.Web.WebPages.WebPageBase.RenderSection(String). + + + + + Indicates how method, constructor invocation or property access + over collection type affects content of the collection. + + + + Method does not use or modify content of the collection. + + + Method only reads content of the collection but does not modify it. + + + Method can change content of the collection but does not add new elements. + + + Method can add new elements to the collection. + + + + Indicates that the marked method is assertion method, i.e. it halts control flow if + one of the conditions is satisfied. To set the condition, mark one of the parameters with + attribute. + + + + + Indicates the condition parameter of the assertion method. The method itself should be + marked by attribute. The mandatory argument of + the attribute is the assertion type. + + + + + Specifies assertion type. If the assertion method argument satisfies the condition, + then the execution continues. Otherwise, execution is assumed to be halted. + + + + Marked parameter should be evaluated to true. + + + Marked parameter should be evaluated to false. + + + Marked parameter should be evaluated to null value. + + + Marked parameter should be evaluated to not null value. + + + + Indicates that the marked method unconditionally terminates control flow execution. + For example, it could unconditionally throw exception. + + + + + Indicates that method is pure LINQ method, with postponed enumeration (like Enumerable.Select, + .Where). This annotation allows inference of [InstantHandle] annotation for parameters + of delegate type by analyzing LINQ method chains. + + + + + Indicates that IEnumerable, passed as parameter, is not enumerated. + + + + + Indicates that parameter is regular expression pattern. + + + + + Prevents the Member Reordering feature from tossing members of the marked class. + + + The attribute must be mentioned in your member reordering patterns + + + + + XAML attribute. Indicates the type that has ItemsSource property and should be treated + as ItemsControl-derived type, to enable inner items DataContext type resolve. + + + + + XAML attribute. Indicates the property of some BindingBase-derived type, that + is used to bind some item of ItemsControl-derived type. This annotation will + enable the DataContext type resolve for XAML bindings for such properties. + + + Property should have the tree ancestor of the ItemsControl type or + marked with the attribute. + + + + + Support implementation of + + + + + + + + + + + + + + + + + Asynchronous continuation delegate - function invoked at the end of asynchronous + processing. + + Exception during asynchronous processing or null if no exception + was thrown. + + + + Helpers for asynchronous operations. + + + + + Iterates over all items in the given collection and runs the specified action + in sequence (each action executes only after the preceding one has completed without an error). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Repeats the specified asynchronous action multiple times and invokes asynchronous continuation at the end. + + The repeat count. + The asynchronous continuation to invoke at the end. + The action to invoke. + + + + Modifies the continuation by pre-pending given action to execute just before it. + + The async continuation. + The action to pre-pend. + Continuation which will execute the given action before forwarding to the actual continuation. + + + + Attaches a timeout to a continuation which will invoke the continuation when the specified + timeout has elapsed. + + The asynchronous continuation. + The timeout. + Wrapped continuation. + + + + Iterates over all items in the given collection and runs the specified action + in parallel (each action executes on a thread from thread pool). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Runs the specified asynchronous action synchronously (blocks until the continuation has + been invoked). + + The action. + + Using this method is not recommended because it will block the calling thread. + + + + + Wraps the continuation with a guard which will only make sure that the continuation function + is invoked only once. + + The asynchronous continuation. + Wrapped asynchronous continuation. + + + + Gets the combined exception from all exceptions in the list. + + The exceptions. + Combined exception or null if no exception was thrown. + + + + Disposes the Timer, and waits for it to leave the Timer-callback-method + + The Timer object to dispose + Timeout to wait (TimeSpan.Zero means dispose without waiting) + Timer disposed within timeout (true/false) + + + + Asynchronous action. + + Continuation to be invoked at the end of action. + + + + Asynchronous action with one argument. + + Type of the argument. + Argument to the action. + Continuation to be invoked at the end of action. + + + + Represents the logging event with asynchronous continuation. + + + + + Initializes a new instance of the struct. + + The log event. + The continuation. + + + + Gets the log event. + + + + + Gets the continuation. + + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + A value of true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + String Conversion Helpers + + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + Output value + Default value + Returns false if the input value could not be parsed + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + The type of the enum + Output value. Null if parse failed + + + + Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. A parameter specifies whether the operation is case-sensitive. The return value indicates whether the conversion succeeded. + + The enumeration type to which to convert value. + The string representation of the enumeration name or underlying value to convert. + true to ignore case; false to consider case. + When this method returns, result contains an object of type TEnum whose value is represented by value if the parse operation succeeds. If the parse operation fails, result contains the default value of the underlying type of TEnum. Note that this value need not be a member of the TEnum enumeration. This parameter is passed uninitialized. + true if the value parameter was converted successfully; otherwise, false. + Wrapper because Enum.TryParse is not present in .net 3.5 + + + + Enum.TryParse implementation for .net 3.5 + + + + Don't uses reflection + + + + Enables to extract extra context details for + + + + + Name of context + + + + + The current LogFactory next to LogManager + + + + + NLog internal logger. + + Writes to file, console or custom text writer (see ) + + + Don't use as that can lead to recursive calls - stackoverflow + + + + + Gets a value indicating whether internal log includes Trace messages. + + + + + Gets a value indicating whether internal log includes Debug messages. + + + + + Gets a value indicating whether internal log includes Info messages. + + + + + Gets a value indicating whether internal log includes Warn messages. + + + + + Gets a value indicating whether internal log includes Error messages. + + + + + Gets a value indicating whether internal log includes Fatal messages. + + + + + Logs the specified message without an at the Trace level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + Log message. + + + + Logs the specified message without an at the Trace level. + will be only called when logging is enabled for level Trace. + + Function that returns the log message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Trace level. + will be only called when logging is enabled for level Trace. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Debug level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Debug level. + + Log message. + + + + Logs the specified message without an at the Debug level. + will be only called when logging is enabled for level Debug. + + Function that returns the log message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Debug level. + will be only called when logging is enabled for level Debug. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Info level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Info level. + + Log message. + + + + Logs the specified message without an at the Info level. + will be only called when logging is enabled for level Info. + + Function that returns the log message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Info level. + will be only called when logging is enabled for level Info. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Warn level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Warn level. + + Log message. + + + + Logs the specified message without an at the Warn level. + will be only called when logging is enabled for level Warn. + + Function that returns the log message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Warn level. + will be only called when logging is enabled for level Warn. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Error level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Error level. + + Log message. + + + + Logs the specified message without an at the Error level. + will be only called when logging is enabled for level Error. + + Function that returns the log message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Error level. + will be only called when logging is enabled for level Error. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Fatal level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Fatal level. + + Log message. + + + + Logs the specified message without an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Function that returns the log message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Exception to be logged. + Function that returns the log message. + + + + Initializes static members of the InternalLogger class. + + + + + Set the config of the InternalLogger with defaults and config. + + + + + Gets or sets the minimal internal log level. + + If set to , then messages of the levels , and will be written. + + + + Gets or sets a value indicating whether internal messages should be written to the console output stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the console error stream. + + Your application must be a console application. + + + + Gets or sets the file path of the internal log file. + + A value of value disables internal logging to a file. + + + + Gets or sets the text writer that will receive internal logs. + + + + + Event written to the internal log. + Please note that the event is not triggered when then event hasn't the minimal log level set by + + + + + Gets or sets a value indicating whether timestamp should be included in internal log output. + + + + + Is there an thrown when writing the message? + + + + + Logs the specified message without an at the specified level. + + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the specified level. + + Log level. + Log message. + + + + Logs the specified message without an at the specified level. + will be only called when logging is enabled for level . + + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + will be only called when logging is enabled for level . + + Exception to be logged. + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Log message. + + + + Write to internallogger. + + optional exception to be logged. + level + message + optional args for + + + + Create log line with timestamp, exception message etc (if configured) + + + + + Determine if logging should be avoided because of exception type. + + The exception to check. + true if logging should be avoided; otherwise, false. + + + + Determine if logging is enabled for given LogLevel + + The for the log event. + true if logging is enabled; otherwise, false. + + + + Determine if logging is enabled. + + true if logging is enabled; otherwise, false. + + + + Write internal messages to the log file defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged only when the property is true, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged when the property is true, otherwise the + method has no effect. + + + + + Logs the assembly version and file version of the given Assembly. + + The assembly to log. + + + + A message has been written to the internal logger + + + + + The rendered message + + + + + The log level + + + + + The exception. Could be null. + + + + + The type that triggered this internal log event, for example the FileTarget. + This property is not always populated. + + + + + The context name that triggered this internal log event, for example the name of the Target. + This property is not always populated. + + + + + + + + A cyclic buffer of object. + + + + + Initializes a new instance of the class. + + Buffer size. + Whether buffer should grow as it becomes full. + The maximum number of items that the buffer can grow to. + + + + Gets the capacity of the buffer + + + + + Gets the number of items in the buffer + + + + + Adds the specified log event to the buffer. + + Log event. + The number of items in the buffer. + + + + Gets the array of events accumulated in the buffer and clears the buffer as one atomic operation. + + Events in the buffer. + + + + Condition and expression. + + + + + Initializes a new instance of the class. + + Left hand side of the AND expression. + Right hand side of the AND expression. + + + + Gets the left hand side of the AND expression. + + + + + Gets the right hand side of the AND expression. + + + + + Returns a string representation of this expression. + + A concatenated '(Left) and (Right)' string. + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the conjunction operator. + + + + Exception during evaluation of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Base class for representing nodes in condition expression trees. + + + + + Converts condition text to a condition expression tree. + + Condition text to be converted. + Condition expression tree. + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition layout expression (represented by a string literal + with embedded ${}). + + + + + Initializes a new instance of the class. + + The layout. + + + + Gets the layout. + + The layout. + + + + Returns a string representation of this expression. + + String literal in single quotes. + + + + Evaluates the expression by calculating the value + of the layout in the specified evaluation context. + + Evaluation context. + The value of the layout. + + + + Condition level expression (represented by the level keyword). + + + + + Returns a string representation of the expression. + + The 'level' string. + + + + Evaluates to the current log level. + + Evaluation context. Ignored. + The object representing current log level. + + + + Condition literal expression (numeric, LogLevel.XXX, true or false). + + + + + Initializes a new instance of the class. + + Literal value. + + + + Gets the literal value. + + The literal value. + + + + Returns a string representation of the expression. + + The literal value. + + + + Evaluates the expression. + + Evaluation context. + The literal value as passed in the constructor. + + + + Condition logger name expression (represented by the logger keyword). + + + + + Returns a string representation of this expression. + + A logger string. + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + Returns a string representation of this expression. + + The 'message' string. + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Initializes a new instance of the class. + + Condition method name. + + + + Condition method invocation expression (represented by method(p1,p2,p3) syntax). + + + + + Initializes a new instance of the class. + + Name of the condition method. + of the condition method. + Precompiled delegate of the condition method. + The method parameters. + + + + Gets the method info. + + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + A bunch of utility methods (mostly predicates) which can be used in + condition expressions. Partially inspired by XPath 1.0. + + + + + Compares two values for equality. + + The first value. + The second value. + true when two objects are equal, false otherwise. + + + + Compares two strings for equality. + + The first string. + The second string. + Optional. If true, case is ignored; if false (default), case is significant. + true when two strings are equal, false otherwise. + + + + Gets or sets a value indicating whether the second string is a substring of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a substring of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a prefix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a suffix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Returns the length of a string. + + A string whose lengths is to be evaluated. + The length of the string. + + + + Indicates whether the specified regular expression finds a match in the specified input string. + + The string to search for a match. + The regular expression pattern to match. + A string consisting of the desired options for the test. The possible values are those of the separated by commas. + true if the regular expression finds a match; otherwise, false. + + + + + + + + + + + Marks the class as containing condition methods. + + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Gets the expression to be negated. + + The expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition or expression. + + + + + Initializes a new instance of the class. + + Left hand side of the OR expression. + Right hand side of the OR expression. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + Exception during parsing of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Condition parser. Turns a string representation of condition expression + into an expression tree. + + + + + Initializes a new instance of the class. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + Instance of used to resolve references to condition methods and layout renderers. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + + Try stringed keyword to + + + + success? + + + + Parse number + + negative number? minus should be parsed first. + + + + + Condition relational (==, !=, <, <=, + > or >=) expression. + + + + + Initializes a new instance of the class. + + The left expression. + The right expression. + The relational operator. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Gets the relational operator. + + The operator. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Compares the specified values using specified relational operator. + + The first value. + The second value. + The relational operator. + Result of the given relational operator. + + + + Promote values to the type needed for the comparision, e.g. parse a string to int. + + + + + + + Promotes to type + + + + success? + + + + Try to promote both values. First try to promote to , + when failed, try to . + + + + + + Get the order for the type for comparision. + + + index, 0 to max int. Lower is first + + + + Dictionary from type to index. Lower index should be tested first. + + + + + Build the dictionary needed for the order of the types. + + + + + + Get the string representing the current + + + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + Hand-written tokenizer for conditions. + + + + + Initializes a new instance of the class. + + The string reader. + + + + Gets the type of the token. + + The type of the token. + + + + Gets the token value. + + The token value. + + + + Gets the value of a string token. + + The string token value. + + + + Asserts current token type and advances to the next token. + + Expected token type. + If token type doesn't match, an exception is thrown. + + + + Asserts that current token is a keyword and returns its value and advances to the next token. + + Keyword value. + + + + Gets or sets a value indicating whether current keyword is equal to the specified value. + + The keyword. + + A value of true if current keyword is equal to the specified value; otherwise, false. + + + + + Gets or sets a value indicating whether the tokenizer has reached the end of the token stream. + + + A value of true if the tokenizer has reached the end of the token stream; otherwise, false. + + + + + Gets or sets a value indicating whether current token is a number. + + + A value of true if current token is a number; otherwise, false. + + + + + Gets or sets a value indicating whether the specified token is of specified type. + + The token type. + + A value of true if current token is of specified type; otherwise, false. + + + + + Gets the next token and sets and properties. + + + + + Try the comparison tokens (greater, smaller, greater-equals, smaller-equals) + + current char + is match + + + + Try the logical tokens (and, or, not, equals) + + current char + is match + + + + Mapping between characters and token types for punctuations. + + + + + Initializes a new instance of the CharToTokenType struct. + + The character. + Type of the token. + + + + Token types for condition expressions. + + + + + Marks the class or a member as advanced. Advanced classes and members are hidden by + default in generated documentation. + + + + + Initializes a new instance of the class. + + + + + Identifies that the output of layout or layout render does not change for the lifetime of the current appdomain. + + + A layout(renderer) could be converted to a literal when: + - The layout and all layout properties are SimpleLayout or [AppDomainFixedOutput] + + Recommendation: Apply this attribute to a layout or layout-renderer which have the result only changes by properties of type Layout. + + + + + Used to mark configurable parameters which are arrays. + Specifies the mapping between XML elements and .NET types. + + + + + Initializes a new instance of the class. + + The type of the array item. + The XML element name that represents the item. + + + + Gets the .NET type of the array item. + + + + + Gets the XML element name. + + + + + An assembly is trying to load. + + + + + New event args + + + + + + The assembly that is trying to load. + + + + + Constructs a new instance the configuration item (target, layout, layout renderer, etc.) given its type. + + Type of the item. + Created object of the specified type. + + + + Provides registration information for named items (targets, layouts, layout renderers, etc.) managed by NLog. + + Everything of an assembly could be loaded by + + + + + Called before the assembly will be loaded. + + + + + Initializes a new instance of the class. + + The assemblies to scan for named items. + + + + Gets or sets default singleton instance of . + + + This property implements lazy instantiation so that the is not built before + the internal logger is configured. + + + + + Gets or sets the creator delegate used to instantiate configuration objects. + + + By overriding this property, one can enable dependency injection or interception for created objects. + + + + + Gets the factory. + + The target factory. + + + + Gets the factory. + + The filter factory. + + + + gets the factory + + not using due to backwards-compatibility. + + + + + Gets the factory. + + The layout renderer factory. + + + + Gets the factory. + + The layout factory. + + + + Gets the ambient property factory. + + The ambient property factory. + + + + Legacy interface, no longer used by the NLog engine + + + + + Gets or sets the JSON serializer to use with or + + + + + Gets or sets the string serializer to use with + + + + + Gets or sets the custom object-type transformation for use in , or + + + + + Gets or sets the parameter converter to use with , or + + + + + Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) + + + - Null (Auto Detect) : NLog-parser checks for positional parameters, and will then fallback to string.Format-rendering. + - True: Always performs the parsing of and rendering of using the NLog-parser (Allows custom formatting with ) + - False: Always performs parsing and rendering using string.Format (Fastest if not using structured logging) + + + + + Gets the time source factory. + + The time source factory. + + + + Gets the condition method factory. + + The condition method factory. + + + + Gets the condition method factory (precompiled) + + The condition method factory. + + + + Registers named items from the assembly. + + The assembly. + + + + Registers named items from the assembly. + + The assembly. + Item name prefix. + + + + Call Preload for NLogPackageLoader + + + Every package could implement a class "NLogPackageLoader" (namespace not important) with the public static method "Preload" (no arguments) + This method will be called just before registering all items in the assembly. + + + + + + Call the Preload method for . The Preload method must be static. + + + + + + Clears the contents of all factories. + + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Builds the default configuration item factory. + + Default factory. + + + + Registers items in NLog.Extended.dll using late-bound types, so that we don't need a reference to NLog.Extended.dll. + + + + + Attribute used to mark the default parameters for layout renderers. + + + + + Initializes a new instance of the class. + + + + + Dynamic filtering with a positive list of enabled levels + + + + + Dynamic filtering with a minlevel and maxlevel range + + + + + Format of the exception output to the specific target. + + + + + Appends the Message of an Exception to the specified target. + + + + + Appends the type of an Exception to the specified target. + + + + + Appends the short type of an Exception to the specified target. + + + + + Appends the result of calling ToString() on an Exception to the specified target. + + + + + Appends the method name from Exception's stack trace to the specified target. + + + + + Appends the stack trace from an Exception to the specified target. + + + + + Appends the contents of an Exception's Data property to the specified target. + + + + + Destructure the exception (usually into JSON) + + + + + Appends the from the application or the object that caused the error. + + + + + Appends the from the application or the object that caused the error. + + + + + Appends any additional properties that specific type of Exception might have. + + + + + Factory for class-based items. + + The base type of each item. + The type of the attribute used to annotate items. + + + + Scans the assembly. + + The types to scan. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the item based on a type name. + + Name of the item. + Name of the type. + + + + Clears the contents of the factory. + + + + + Registers a single type definition. + + The item name. + The type of the item. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Creates an item instance. + + The name of the item. + Created item. + + + + Factory specialized for s. + + + + + Clear all func layouts + + + + + Register a layout renderer with a callback function. + + Name of the layoutrenderer, without ${}. + the renderer that renders the value. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides means to populate factories of named items (such as targets, layouts, layout renderers, etc.). + + + + + Implemented by objects which support installation and uninstallation. + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Interface for accessing configuration details + + + + + Name of the config section + + + + + Configuration Key/Value Pairs + + + + + Child config sections + + + + + Interface for loading NLog + + + + + Finds and loads the NLog configuration + + LogFactory that owns the NLog configuration + Name of NLog.config file (optional) + NLog configuration (or null if none found) + + + + Notifies when LoggingConfiguration has been successfully applied + + LogFactory that owns the NLog configuration + NLog Config + + + + Get file paths (including filename) for the possible NLog config files. + + Name of NLog.config file (optional) + The file paths to the possible config file + + + + Level enabled flags for each LogLevel ordinal + + + + + Converts the filter into a simple + + + + + Represents a factory of named items (such as targets, layouts, layout renderers, etc.). + + Base type for each item instance. + Item definition type (typically or ). + + + + Registers new item definition. + + Name of the item. + Item definition. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Creates item instance. + + Name of the item. + Newly created item instance. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides context for install/uninstall operations. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log output. + + + + Gets or sets the installation log level. + + + + + Gets or sets a value indicating whether to ignore failures during installation. + + + + + Whether installation exceptions should be rethrown. If IgnoreFailures is set to true, + this property has no effect (there are no exceptions to rethrow). + + + + + Gets the installation parameters. + + + + + Gets or sets the log output. + + + + + Logs the specified trace message. + + The message. + The arguments. + + + + Logs the specified debug message. + + The message. + The arguments. + + + + Logs the specified informational message. + + The message. + The arguments. + + + + Logs the specified warning message. + + The message. + The arguments. + + + + Logs the specified error message. + + The message. + The arguments. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Creates the log event which can be used to render layouts during installation/uninstallations. + + Log event info object. + + + + Convert object-value into specified type + + + + + Parses the input value and converts into the wanted type + + Input Value + Wanted Type + Format to use when parsing + Culture to use when parsing + Output value with wanted type + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for extension loading + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for enabling NLog + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + LoggingConfiguration being built + + + + + Interface for fluent setup of LogFactory options for logevent serialization + + + + + LogFactory under configuration + + + + + Encapsulates and the logic to match the actual logger name + All subclasses defines immutable objects. + Concrete subclasses defines various matching rules through + + + + + Creates a concrete based on . + + + Rules used to select the concrete implementation returned: + + if is null => returns (never matches) + if doesn't contains any '*' nor '?' => returns (matches only on case sensitive equals) + if == '*' => returns (always matches) + if doesn't contain '?' + + if contains exactly 2 '*' one at the beginning and one at the end (i.e. "*foobar*) => returns + if contains exactly 1 '*' at the beginning (i.e. "*foobar") => returns + if contains exactly 1 '*' at the end (i.e. "foobar*") => returns + + + returns + + + + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + A concrete + + + + Returns the argument passed to + + + + + Checks whether given name matches the logger name pattern. + + String to be matched. + A value of when the name matches, otherwise. + + + + Defines a that never matches. + Used when pattern is null + + + + + Defines a that always matches. + Used when pattern is '*' + + + + + Defines a that matches with a case-sensitive Equals + Used when pattern is a string without wildcards '?' '*' + + + + + Defines a that matches with a case-sensitive StartsWith + Used when pattern is a string like "*foobar" + + + + + Defines a that matches with a case-sensitive EndsWith + Used when pattern is a string like "foobar*" + + + + + Defines a that matches with a case-sensitive Contains + Used when pattern is a string like "*foobar*" + + + + + Defines a that matches with a complex wildcards combinations: + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + used when pattern is a string containing any number of '?' or '*' in any position + i.e. "*Server[*].Connection[?]" + + + + + Keeps logging configuration and provides simple API to modify it. + + This class is thread-safe..ToList() is used for that purpose. + + + + Variables defined in xml or in API. name is case case insensitive. + + + + + Gets the factory that will be configured + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete on NLog 4.1 and it may be removed in a future release. + + + + Gets the variables defined in the configuration. + + + + + Gets a collection of named targets specified in the configuration. + + + A list of named targets. + + + Unnamed targets (such as those wrapped by other targets) are not returned. + + + + + Gets the collection of file names which should be watched for changes by NLog. + + + + + Gets the collection of logging rules. + + + + + Gets or sets the default culture info to use as . + + + Specific culture info or null to use + + + + + Gets all targets. + + + + + Compare objects based on their name. + + This property is use to cache the comparer object. + + + + Defines methods to support the comparison of objects for equality based on their name. + + + + + Registers the specified target object. The name of the target is read from . + + + The target object with a non + + when is + + + + Registers the specified target object under a given name. + + Name of the target. + The target object. + when is + when is + + + + Finds the target with the specified name. + + + The name of the target to be found. + + + Found target or when the target is not found. + + + + + Finds the target with the specified name and specified type. + + + The name of the target to be found. + + Type of the target + + Found target or when the target is not found of not of type + + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for all loglevels. + + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Finds the logging rule with the specified name. + + The name of the logging rule to be found. + Found logging rule or when not found. + + + + Removes the specified named logging rule. + + The name of the logging rule to be removed. + Found one or more logging rule to remove, or when not found. + + + + Called by LogManager when one of the log configuration files changes. + + + A new instance of that represents the updated configuration. + + + + + Removes the specified named target. + + Name of the target. + + + + Installs target-specific objects on current system. + + The installation context. + + Installation typically runs with administrative permissions. + + + + + Uninstalls target-specific objects from current system. + + The installation context. + + Uninstallation typically runs with administrative permissions. + + + + + Closes all targets and releases any unmanaged resources. + + + + + Log to the internal (NLog) logger the information about the and associated with this instance. + + + The information are only recorded in the internal logger if Debug level is enabled, otherwise nothing is + recorded. + + + + + Validates the configuration. + + + + + Copies all variables from provided dictionary into current configuration variables. + + Master variables dictionary + + + + Replace a simple variable with a value. The original value is removed and thus we cannot redo this in a later stage. + + + + + + + Checks whether unused targets exist. If found any, just write an internal log at Warn level. + If initializing not started or failed, then checking process will be canceled + + + + + + + + Arguments for events. + + + + + Initializes a new instance of the class. + + The new configuration. + The old configuration. + + + + Gets the old configuration. + + The old configuration. + + + + Gets the new configuration. + + The new configuration. + + + + Gets the new configuration + + The new configuration. + + + + Gets the old configuration + + The old configuration. + + + + Gets the optional boolean attribute value. + + + Name of the attribute. + Default value to return if the attribute is not found or if there is a parse error + Boolean attribute value or default. + + + + Remove the namespace (before :) + + + x:a, will be a + + + + + + + Enables loading of NLog configuration from a file + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Loads NLog configuration from + + + + + Constructor + + + + + + Loads NLog configuration from provided config section + + + + + + + Builds list with unique keys, using last value of duplicates. High priority keys placed first. + + + + + + + Parse loglevel, but don't throw if exception throwing is disabled + + Name of attribute for logging. + Value of parse. + Used if there is an exception + + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Parse {Rules} xml element + + + Rules are added to this parameter. + + + + Parse {Logger} xml element + + + + + + Parse boolean + + Name of the property for logging. + value to parse + Default value to return if the parse failed + Boolean attribute value or default. + + + + Represents a logging rule. An equivalent of <logger /> configuration element. + + + + + Create an empty . + + + + + Create an empty . + + + + + Create a new with a and which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a new with a which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a (disabled) . You should call or see cref="EnableLoggingForLevels"/> to enable logging. + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Target to be written to when the rule matches. + + + + Rule identifier to allow rule lookup + + + + + Gets a collection of targets that should be written to when this rule matches. + + + + + Gets a collection of child rules to be evaluated when this rule matches. + + + + + Gets a collection of filters to be checked before writing to targets. + + + + + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + + Gets or sets logger name pattern. + + + Logger name pattern used by to check if a logger name matches this rule. + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + + + + Gets the collection of log levels enabled by this rule. + + + + + Default action if none of the filters match + + + + + Enables logging for a particular level. + + Level to be enabled. + + + + Enables logging for a particular levels between (included) and . + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Disables logging for a particular level. + + Level to be disabled. + + + + Disables logging for particular levels between (included) and . + + Minimum log level to be disables. + Maximum log level to de disabled. + + + + Enables logging the levels between (included) and . All the other levels will be disabled. + + >Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Returns a string representation of . Used for debugging. + + + A that represents the current . + + + + + Checks whether te particular log level is enabled for this rule. + + Level to be checked. + A value of when the log level is enabled, otherwise. + + + + Checks whether given name matches the . + + String to be matched. + A value of when the name matches, otherwise. + + + + Default filtering with static level config + + + + + Factory for locating methods. + + + + + Initializes a new instance of the class. + + Helper method to extract relevant methods from type + + + + Scans the assembly for classes marked with expected class + and methods marked with expected and adds them + to the factory. + + The types to scan. + The prefix to use for names. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Scans a type for relevant methods with their symbolic names + + Include types that are marked with this attribute + Include methods that are marked with this attribute + Class Type to scan + Collection of methods with their symbolic names + + + + Clears contents of the factory. + + + + + Registers the definition of a single method. + + The method name. + The method info. + + + + Registers the definition of a single method. + + The method name. + The method info. + The precompiled method delegate. + + + + Tries to retrieve method by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Tries to retrieve method-delegate by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Retrieves method by name. + + Method name. + MethodInfo object. + + + + Retrieves method by name. + + Method name. + Method delegate object. + + + + Tries to get method definition. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Marks the layout or layout renderer depends on mutable objects from the LogEvent + + This can be or + + + + + Attaches a simple name to an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The name of the item. + + + + Gets the name of the item. + + The name of the item. + + + + Indicates NLog should not scan this property during configuration. + + + + + Initializes a new instance of the class. + + + + + Marks the object as configuration item for NLog. + + + + + Initializes a new instance of the class. + + + + + Represents simple XML element with case-insensitive attribute semantics. + + + + + Initializes a new instance of the class. + + The reader to initialize element from. + + + + Prevents a default instance of the class from being created. + + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + Last error occured during configuration read + + + + + Returns children elements with the specified element name. + + Name of the element. + Children elements with the specified element name. + + + + Asserts that the name of the element is among specified element names. + + The allowed names. + + + + Returns all parsing errors from current and all child elements. + + + + + Special attribute we could ignore + + + + + Default implementation of + + + + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Provides simple programmatic configuration API used for trivial logging cases. + + Warning, these methods will overwrite the current config. + + + + + Configures NLog for console logging so that all messages above and including + the level are output to the console. + + + + + Configures NLog for console logging so that all messages above and including + the specified level are output to the console. + + The minimal logging level. + + + + Configures NLog for to log to the specified target so that all messages + above and including the level are output. + + The target to log all messages to. + + + + Configures NLog for to log to the specified target so that all messages + above and including the specified level are output. + + The target to log all messages to. + The minimal logging level. + + + + Configures NLog for file logging so that all messages above and including + the level are written to the specified file. + + Log file name. + + + + Configures NLog for file logging so that all messages above and including + the specified level are written to the specified file. + + Log file name. + The minimal logging level. + + + + Value indicating how stack trace should be captured when processing the log event. + + + + + Stack trace should not be captured. + + + + + Stack trace should be captured without source-level information. + + + + + Capture maximum amount of the stack trace information supported on the platform. + + + + + Marks the layout or layout renderer as thread independent - it producing correct results + regardless of the thread it's running on. + + Without this attribute everything is rendered on the main thread. + + + If this attribute is set on a layout, it could be rendered on the another thread. + This could be more efficient as it's skipped when not needed. + + If context like HttpContext.Current is needed, which is only available on the main thread, this attribute should not be applied. + + See the AsyncTargetWrapper and BufferTargetWrapper with the , using + + Apply this attribute when: + - The result can we rendered in another thread. Delaying this could be more efficient. And/Or, + - The result should not be precalculated, for example the target sends some extra context information. + + + + + Marks the layout or layout renderer as thread safe - it producing correct results + regardless of the number of threads it's running on. + + Without this attribute then the target concurrency will be reduced + + + + + A class for configuring NLog through an XML configuration file + (App.config style or App.nlog style). + + Parsing of the XML file is also implemented in this class. + + + - This class is thread-safe..ToList() is used for that purpose. + - Update TemplateXSD.xml for changes outside targets + + + + + Initializes a new instance of the class. + + Configuration file to be read. + + + + Initializes a new instance of the class. + + Configuration file to be read. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + XML reader to read from. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + The XML contents. + Name of the XML file. + The to which to apply any applicable configuration values. + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + NLog LogFactory + + + + Did the Succeeded? true= success, false= error, null = initialize not started yet. + + + + + Gets or sets a value indicating whether all of the configuration files + should be watched for changes and reloaded automatically when changed. + + + + + Gets the collection of file names which should be watched for changes by NLog. + This is the list of configuration files processed. + If the autoReload attribute is not set it returns empty collection. + + + + + Re-reads the original configuration file and returns the new object. + + The new object. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Create XML reader for (xml config) file. + + filepath + reader or null if filename is empty. + + + + Initializes the configuration. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Checks whether any error during XML configuration parsing has occured. + If there are any and ThrowConfigExceptions or ThrowExceptions + setting is enabled - throws NLogConfigurationException, otherwise + just write an internal log at Warn level. + + Root NLog configuration xml element + + + + Add a file with configuration. Check if not already included. + + + + + + + Parse the root + + + path to config file. + The default value for the autoReload option. + + + + Parse {configuration} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parse {NLog} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Include (multiple) files by filemask, e.g. *.nlog + + base directory in case if is relative + relative or absolute fileMask + + + + + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language + described here. + + + + + Gets or sets the condition expression. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + An abstract filter class. Provides a way to eliminate log messages + based on properties other than logger name and log level. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the action to be taken when filter matches. + + + + + + Gets the result of evaluating filter against given log event. + + The log event. + Filter result. + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Marks class as a layout renderer and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the filter. + + + + Filter result. + + + + + The filter doesn't want to decide whether to log or discard the message. + + + + + The message should be logged. + + + + + The message should not be logged. + + + + + The message should be logged and processing should be finished. + + + + + The message should not be logged and processing should be finished. + + + + + A base class for filters that are based on comparing a value to a layout. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout to be used to filter log messages. + + The layout. + + + + + Matches when the calculated layout contains the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets the substring to be matched. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets a string to compare the layout to. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches the provided filter-method + + + + + Initializes a new instance of the class. + + + + + + + + Matches when the calculated layout does NOT contain the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets the substring to be matched. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is NOT equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a string to compare the layout to. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the result of the calculated layout has been repeated a moment ago + + + + + How long before a filter expires, and logging is accepted again + + + + + + Max length of filter values, will truncate if above limit + + + + + + Applies the configured action to the initial logevent that starts the timeout period. + Used to configure that it should ignore all events until timeout. + + + + + + Max number of unique filter values to expect simultaneously + + + + + + Default number of unique filter values to expect, will automatically increase if needed + + + + + + Insert FilterCount value into when an event is no longer filtered + + + + + + Append FilterCount to the when an event is no longer filtered + + + + + + Reuse internal buffers, and doesn't have to constantly allocate new buffers + + + + + + Default buffer size for the internal buffers + + + + + + Can be used if has been enabled. + + + + + Initializes a new instance of the class. + + + + + Checks whether log event should be logged or not. In case the LogEvent has just been repeated. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Uses object pooling, and prunes stale filter items when the pool runs dry + + + + + Remove stale filter-value from the cache, and fill them into the pool for reuse + + + + + Renders the Log Event into a filter value, that is used for checking if just repeated + + + + + Repeated LogEvent detected. Checks if it should activate filter-action + + + + + Filter Value State (mutable) + + + + + Filter Lookup Key (immutable) + + + + + A fluent class to build log events for NLog. + + + + + Initializes a new instance of the class. + + The to send the log event. + + + + Initializes a new instance of the class. + + The to send the log event. + The for the log event. + + + + Gets the created by the builder. + + + + + Sets the information of the logging event. + + The exception information of the logging event. + current for chaining calls. + + + + Sets the level of the logging event. + + The level of the logging event. + current for chaining calls. + + + + Sets the logger name of the logging event. + + The logger name of the logging event. + current for chaining calls. + + + + Sets the log message on the logging event. + + The log message for the logging event. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + The fourth object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + An object that supplies culture-specific formatting information. + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets a per-event context property on the logging event. + + The name of the context property. + The value of the context property. + current for chaining calls. + + + + Sets multiple per-event context properties on the logging event. + + The properties to set. + current for chaining calls. + + + + Sets the timestamp of the logging event. + + The timestamp of the logging event. + current for chaining calls. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + current for chaining calls. + + + + Writes the log event to the underlying logger. + + + + + Writes the log event to the underlying logger. + + If condition is true, write log event; otherwise ignore event. + + + + Writes the log event to the underlying logger. + + If condition is true, write log event; otherwise ignore event. + + + + Extension methods for NLog . + + + + + Starts building a log event with the specified . + + The logger to write the log event to. + The log level. + current for chaining calls. + + + + Starts building a log event at the Trace level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Debug level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Info level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Warn level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Error level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Fatal level. + + The logger to write the log event to. + current for chaining calls. + + + + Global Diagnostics Context + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Global Diagnostics Context - a dictionary structure to hold per-application-instance values. + + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The item value, if defined; otherwise null. + + + + Returns all item names + + A collection of the names of all items in the Global Diagnostics Context. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Include context properties + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Interface for serialization of object values into JSON format + + + + + Serialization of an object into JSON format. + + The object to serialize to JSON. + Output destination. + Serialize succeeded (true/false) + + + + Provides logging interface and utility functions. + + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Logger with only generic methods (passing 'LogLevel' to methods) and core properties. + + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Extensions for NLog . + + + + + Writes the diagnostic message and exception at the specified level. + + A logger implementation that will handle the message. + The log level. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Allocates new builder and appends to the provided target builder on dispose + + + + + Access the new builder allocated + + + + + Helpers for . + + + + + Load from url + + file or path, including .dll + basepath, optional + + + + + Load from url + + name without .dll + + + + + Forward declare of system delegate type for use by other classes + + + + + Keeps track of pending operation count, and can notify when pending operation count reaches zero + + + + + Mark operation has started + + + + + Mark operation has completed + + Exception coming from the completed operation [optional] + + + + Registers an AsyncContinuation to be called when all pending operations have completed + + Invoked on completion + AsyncContinuation operation + + + + Clear o + + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Legacy attempt to skip async MoveNext, but caused source file line number to be lost + + + + + Gets the entire stack trace. + + + + + Finds first user stack frame in a stack trace + + The stack trace of the logging method invocation + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + Index of the first user stack frame or 0 if all stack frames are non-user + + + + This is only done for legacy reason, as the correct method-name and line-number should be extracted from the MoveNext-StackFrame + + The stack trace of the logging method invocation + Starting point for skipping async MoveNext-frames + + + + Assembly to skip? + + Find assembly via this frame. + true, we should skip. + + + + Is this the type of the logger? + + get type of this logger in this frame. + Type of the logger. + + + + + Memory optimized filtering + + Passing state too avoid delegate capture and memory-allocations. + + + + Provides untyped IDictionary interface on top of generic IDictionary. + + The type of the key. + The type of the value. + + + + Initializes a new instance of the DictionaryAdapter class. + + The implementation. + + + + Gets an object containing the values in the object. + + + + An object containing the values in the object. + + + + + Gets the number of elements contained in the . + + + + The number of elements contained in the . + + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + + + Gets an object that can be used to synchronize access to the . + + + + An object that can be used to synchronize access to the . + + + + + Gets a value indicating whether the object has a fixed size. + + + true if the object has a fixed size; otherwise, false. + + + + + Gets a value indicating whether the object is read-only. + + + true if the object is read-only; otherwise, false. + + + + + Gets an object containing the keys of the object. + + + + An object containing the keys of the object. + + + + + Gets or sets the with the specified key. + + Dictionary key. + Value corresponding to key or null if not found + + + + Adds an element with the provided key and value to the object. + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + + Removes all elements from the object. + + + + + Determines whether the object contains an element with the specified key. + + The key to locate in the object. + + True if the contains an element with the key; otherwise, false. + + + + + Returns an object for the object. + + + An object for the object. + + + + + Removes the element with the specified key from the object. + + The key of the element to remove. + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Wrapper IDictionaryEnumerator. + + + + + Initializes a new instance of the class. + + The wrapped. + + + + Gets both the key and the value of the current dictionary entry. + + + + A containing both the key and the value of the current dictionary entry. + + + + + Gets the key of the current dictionary entry. + + + + The key of the current element of the enumeration. + + + + + Gets the value of the current dictionary entry. + + + + The value of the current element of the enumeration. + + + + + Gets the current element in the collection. + + + + The current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + + True if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Ensures that IDictionary.GetEnumerator returns DictionaryEntry values + + + + + UTF-8 BOM 239, 187, 191 + + + + + Safe way to get environment variables. + + + + + Helper class for dealing with exceptions. + + + + + Mark this exception as logged to the . + + + + + + + Is this exception logged to the ? + + + trueif the has been logged to the . + + + + Determines whether the exception must be rethrown and logs the error to the if is false. + + Advised to log first the error to the before calling this method. + + The exception to check. + Target context of the exception. + trueif the must be rethrown, false otherwise. + + + + Determines whether the exception must be rethrown immediately, without logging the error to the . + + Only used this method in special cases. + + The exception to check. + trueif the must be rethrown, false otherwise. + + + + Object construction helper. + + + + + Adapter for to + + + + + Initializes a new instance of the class. + + The to wrap. + + + + Creates an AppDomainWrapper for the current + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + + + + + + + + + + + + + + + + + + + + + + Interface for fakeable the current . Not fully implemented, please methods/properties as necessary. + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + Abstract calls for the application environment + + + + + Abstract calls to FileSystem + + + + Determines whether the specified file exists. + The file to check. + + + Returns the content of the specified file + The file to load. + + + + Base class for optimized file appenders. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Gets the path of the file, including file extension. + + The name of the file. + + + + Gets or sets the creation time for a file associated with the appender. The time returned is in Coordinated + Universal Time [UTC] standard. + + The creation time of the file. + + + + Gets or sets the creation time for a file associated with the appender. Synchronized by + The time format is based on + + + + + Gets the last time the file associated with the appender is opened. The time returned is in Coordinated + Universal Time [UTC] standard. + + The time the file was last opened. + + + + Gets the file creation parameters. + + The file creation parameters. + + + + Writes the specified bytes. + + The bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Creates the file stream. + + If set to true sets the file stream to allow shared writing. + If larger than 0 then it will be used instead of the default BufferSize for the FileStream. + A object which can be used to write to the file. + + + + Base class for optimized file appenders which require the usage of a mutex. + + It is possible to use this class as replacement of BaseFileAppender and the mutex functionality + is not enforced to the implementing subclasses. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Implementation of which caches + file information. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Closes this instance of the appender. + + + + + Flushes this current appender. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Writes the specified bytes to a file. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Factory class which creates objects. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Maintains a collection of file appenders usually associated with file targets. + + + + + An "empty" instance of the class with zero size and empty list of appenders. + + + + + Initializes a new "empty" instance of the class with zero size and empty + list of appenders. + + + + + Initializes a new instance of the class. + + + The size of the list should be positive. No validations are performed during initialization as it is an + internal class. + + Total number of appenders allowed in list. + Factory used to create each appender. + Parameters used for creating a file. + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + Interface that provides parameters for create file function. + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + Gets or sets the log file buffer size in bytes. + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + Should archive mutex be created? + + + + + Should manual simple detection of file deletion be enabled? + + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + Interface implemented by all factories capable of creating file appenders. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + Instance of which can be used to write to the file. + + + + Appender used to discard data for the FileTarget. + Used mostly for testing entire stack except the actual writing to disk. + Throws away all data. + + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Multi-process and multi-host file appender which attempts + to get exclusive write access and retries if it's not available. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Optimized single-process file appender which keeps the file open for exclusive write. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + A layout that represents a filePath. + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Cached invalid file names char array to avoid memory allocation every time Path.GetInvalidFileNameChars() is called. + + + + + not null when == false + + + + + non null is fixed, + + + + + is the cache-key, and when newly rendered filename matches the cache-key, + then it reuses the cleaned cache-value . + + + + + is the cache-value that is reused, when the newly rendered filename + matches the cache-key + + + + Initializes a new instance of the class. + + + + Render the raw filename from Layout + + The log event. + StringBuilder to minimize allocations [optional]. + String representation of a layout. + + + + Convert the raw filename to a correct filename + + The filename generated by Layout. + String representation of a correct filename. + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Convert object to string + + value + format for conversion. + + + If is null and isn't a already, then the will get a locked by + + + + + Format a log message + + + + + Format the message and return + + LogEvent with message to be formatted + formatted message + + + + Has the logevent properties? + + LogEvent with message to be formatted + False when logevent has no properties to be extracted + + + + Appends the logevent message to the provided StringBuilder + + LogEvent with message to be formatted + The to append the formatted message. + + + + Get the Raw, unformatted and unstrinyfied, value + + + + + Get the raw value + + + The value + RawValue supported? + + + + Interface implemented by layouts and layout renderers. + + + + + Renders the the value of layout or layout renderer in the context of the specified log event. + + The log event. + String representation of a layout. + + + + Supports rendering as string value with limited or no allocations (preferred) + + + + + Renders the value of layout renderer in the context of the specified log event + + + null if not possible or unknown + + + + Supports object initialization and termination. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Render the event info as parse as short + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as int + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as bool + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Logger configuration. + + + + + Initializes a new instance of the class. + + The targets by level. + Use the old exception log handling of NLog 3.0? + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete before NLog 4.3.11 and it will be removed in NLog 5. + + + + Gets targets for the specified level. + + The level. + Chain of targets with attached filters. + + + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + New formatter + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + The MessageFormatter delegate + + + + + + + + Most-Recently-Used-Cache, that discards less frequently used items on overflow + + + + + Constructor + + Maximum number of items the cache will hold before discarding. + + + + Attempt to insert item into cache. + + Key of the item to be inserted in the cache. + Value of the item to be inserted in the cache. + true when the key does not already exist in the cache, false otherwise. + + + + Lookup existing item in cache. + + Key of the item to be searched in the cache. + Output value of the item found in the cache. + True when the key is found in the cache, false otherwise. + + + + Network sender which uses HTTP or HTTPS POST. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Creates instances of objects for given URLs. + + + + + Creates a new instance of the network sender based on a network URL. + + URL that determines the network sender to be created. + The maximum queue size. + + A newly created network sender. + + + + + Interface for mocking socket calls. + + + + + A base class for all network senders. Supports one-way sending of messages + over various protocols. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Gets the address of the network endpoint. + + + + + Gets the last send time. + + + + + Initializes this network sender. + + + + + Closes the sender and releases any unmanaged resources. + + The continuation. + + + + Flushes any pending messages and invokes a continuation. + + The continuation. + + + + Send the given text over the specified protocol. + + Bytes to be sent. + Offset in buffer. + Number of bytes to send. + The asynchronous continuation. + + + + Closes the sender and releases any unmanaged resources. + + + + + Performs sender-specific initialization. + + + + + Performs sender-specific close operation. + + The continuation. + + + + Performs sender-specific flush. + + The continuation. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Parses the URI into an endpoint address. + + The URI to parse. + The address family. + Parsed endpoint. + + + + Default implementation of . + + + + + + + + A base class for network senders that can block or send out-of-order + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Performs sender-specific flush. + + The continuation. + + + + Socket proxy for mocking Socket code. + + + + + Initializes a new instance of the class. + + The address family. + Type of the socket. + Type of the protocol. + + + + Gets underlying socket instance. + + + + + Closes the wrapped socket. + + + + + Invokes ConnectAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Sends messages over a TCP network connection. + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + The address family. + + + + Creates the socket with given parameters. + + The host address. + The address family. + Type of the socket. + Type of the protocol. + Instance of which represents the socket. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Facilitates mocking of class. + + + + + Raises the Completed event. + + + + + Scans (breadth-first) the object graph following all the edges whose are + instances have attached and returns + all objects implementing a specified interfaces. + + + + + Finds the objects which have attached which are reachable + from any of the given root objects when traversing the object graph over public properties. + + Type of the objects to return. + Also search the properties of the wanted objects. + The root objects. + Ordered list of objects implementing T. + + + ISet is not there in .net35, so using HashSet + + + + Helper for extracting propertyPath + + + + + Object Path to check + + + + + Try get value from , using , and set into + + + + + + + + Converts object into a List of property-names and -values using reflection + + + + + Scans properties for name (Skips string-compare and value-lookup until finding match) + + + + + Scans properties for name (Skips property value lookup until finding match) + + + + + Scans properties for name + + + + + Combine paths + + basepath, not null + optional dir + optional file + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Trims directory separators from the path + + path, could be null + never null + + + + Detects the platform the NLog is running on. + + + + + Gets the current runtime OS. + + + + + Gets a value indicating whether current OS is Win32-based (desktop or mobile). + + + + + Gets a value indicating whether current OS is Unix-based. + + + + + Gets a value indicating whether current runtime is Mono-based + + + + + Gets a value indicating whether current runtime supports use of mutex + + + + + Will creating a mutex succeed runtime? + "Cached" detection + + + + + Will creating a mutex succeed runtime? + + + + + Dictionary that combines the standard with the + MessageTemplate-properties extracted from the . + + The are returned as the first items + in the collection, and in positional order. + + + + + Value of the property + + + + + Is this a property of the message? + + + + + + + Value of the property + Is this a property of the message? + + + + The properties of the logEvent + + + + + The properties extracted from the message + + + + + Injects the list of message-template-parameter into the IDictionary-interface + + Message-template-parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check if the message-template-parameters can be used directly without allocating a dictionary + + Message-template-parameters + Are all parameter names unique (true / false) + + + + Attempt to insert the message-template-parameters into an empty dictionary + + Message-template-parameters + The initially empty dictionary + Message-template-parameters was inserted into dictionary without trouble (true/false) + + + + Attempt to override the existing dictionary values using the message-template-parameters + + Message-template-parameters + The already filled dictionary + List of unique message-template-parameters + + + + + + + + + + + + + + + + + + + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + + + + + + + + + + + + + + + + + Reflection helpers for accessing properties. + + + + + Set value parsed from string. + + object instance to set with property + name of the property on + The value to be parsed. + + + + + Get property info + + object which could have property + property name on + result when success. + success. + + + + Try parse of string to (Generic) list, comma separated. + + + If there is a comma in the value, then (single) quote the value. For single quotes, use the backslash as escape + + + + + Attempt to reuse the HashSet.Comparer from the original HashSet-object (Ex. StringComparer.OrdinalIgnoreCase) + + + + + Try get the property + + + + + Reflection helpers. + + + + + Gets all usable exported types from the given assembly. + + Assembly to scan. + Usable types from the given assembly. + Types which cannot be loaded are skipped. + + + + Is this a static class? + + + + This is a work around, as Type doesn't have this property. + From: https://stackoverflow.com/questions/1175888/determine-if-a-type-is-static + + + + + Optimized delegate for calling MethodInfo + + Object instance, use null for static methods. + Complete list of parameters that matches the method, including optional/default parameters. + + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Controls a single allocated AsyncLogEventInfo-List for reuse (only one active user) + + + + + Controls a single allocated char[]-buffer for reuse (only one active user) + + + + + Controls a single allocated StringBuilder for reuse (only one active user) + + + + + Controls a single allocated object for reuse (only one active user) + + + + Empty handle when is disabled + + + + Creates handle to the reusable char[]-buffer for active usage + + Handle to the reusable item, that can release it again + + + + Access the acquired reusable object + + + + + Controls a single allocated MemoryStream for reuse (only one active user) + + + + + Supported operating systems. + + + If you add anything here, make sure to add the appropriate detection + code to + + + + + Unknown operating system. + + + + + Unix/Linux operating systems. + + + + + Desktop versions of Windows (95,98,ME). + + + + + Windows NT, 2000, 2003 and future versions based on NT technology. + + + + + Macintosh Mac OSX + + + + + Simple character tokenizer. + + + + + Initializes a new instance of the class. + + The text to be tokenized. + + + + Current position in + + + + + Full text to be parsed + + + + + Check current char while not changing the position. + + + + + + Read the current char and change position + + + + + + Get the substring of the + + + + + + + + Implements a single-call guard around given continuation function. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + + + + Continuation function which implements the single-call guard. + + The exception. + + + + HashSet optimized for single item + + + + + + Insert single item on scope start, and remove on scope exit + + Item to insert in scope + Existing hashset to update + Force allocation of real hashset-container + HashSet EqualityComparer + + + + Add item to collection, if it not already exists + + Item to insert + + + + Clear hashset + + + + + Check if hashset contains item + + + Item exists in hashset (true/false) + + + + Remove item from hashset + + + Item removed from hashset (true/false) + + + + Copy items in hashset to array + + Destination array + Array offset + + + + Create hashset enumerator + + Enumerator + + + + Provides helpers to sort log events and associated continuations. + + + + + Key selector delegate. + + The type of the value. + The type of the key. + Value to extract key information from. + Key selected from log event. + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + The key comparer function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Single-Bucket optimized readonly dictionary. Uses normal internally Dictionary if multiple buckets are needed. + + Avoids allocating a new dictionary, when all items are using the same bucket + + The type of the key. + The type of the value. + + + + + + + + + + + + + + + + Allows direct lookup of existing keys. If trying to access non-existing key exception is thrown. + Consider to use instead for better safety. + + Key value for lookup + Mapped value found + + + + Non-Allocating struct-enumerator + + + + + + + + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + + + + Will always throw, as dictionary is readonly + + + + Utilities for dealing with values. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + StackFrame from the calling method + Fully qualified class name + + + + Returns the assembly from the provided StackFrame (If not internal assembly) + + Valid assembly, or null if assembly was internal + + + + Returns the classname from the provided StackFrame (If not from internal assembly) + + + Valid class name, or empty string if assembly was internal + + + + Stream helpers + + + + + Copy to output stream and skip BOM if encoding is UTF8 + + + + + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + .net35 doesn't have a .copyto + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + first bytes to skip (optional) + + + + Helpers for , which is used in e.g. layout renderers. + + + + + Renders the specified log event context item and appends it to the specified . + + append to this + value to be appended + format string. If @, then serialize the value with the Default JsonConverter. + provider, for example culture + + + + Appends int without using culture, and most importantly without garbage + + + value to append + + + + Appends uint without using culture, and most importantly without garbage + + Credits Gavin Pugh - https://www.gavpugh.com/2010/04/01/xnac-avoiding-garbage-when-working-with-stringbuilder/ + + + value to append + + + + Convert DateTime into UTC and format to yyyy-MM-ddTHH:mm:ss.fffffffZ - ISO 6801 date (Round-Trip-Time) + + + + + Clears the provider StringBuilder + + + + + + Copies the contents of the StringBuilder to the MemoryStream using the specified encoding (Without BOM/Preamble) + + StringBuilder source + MemoryStream destination + Encoding used for converter string into byte-stream + Helper char-buffer to minimize memory allocations + + + + Copies the contents of the StringBuilder to the destination StringBuilder + + StringBuilder source + StringBuilder destination + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle character to search for + + Index of the first occurrence (Else -1) + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle characters to search for + + Index of the first occurrence (Else -1) + + + + Compares the contents of two StringBuilders + + + Correct implementation of that also works when is not the same + + True when content is the same + + + + Compares the contents of a StringBuilder and a String + + True when content is the same + + + + Append a number and pad with 0 to 2 digits + + append to this + the number + + + + Append a number and pad with 0 to 4 digits + + append to this + the number + + + + Append a int type (byte, int) as string + + + + + Constructor + + Max number of items + Initial StringBuilder Size + Max StringBuilder Size + + + + Takes StringBuilder from pool + + Allow return to pool + + + + Releases StringBuilder back to pool at its right place + + + + + Keeps track of acquired pool item + + + + + Releases pool item back into pool + + + + + Helpers for . + + + + + IsNullOrWhiteSpace, including for .NET 3.5 + + + + + + + Split a string + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Represents target with a chain of filters which determine + whether logging should happen. + + + + + cached result as calculating is expensive. + + + + + Initializes a new instance of the class. + + The target. + The filter chain. + Default action if none of the filters match. + + + + Gets the target. + + The target. + + + + Gets the filter chain. + + The filter chain. + + + + Default action if none of the filters match. + + + + + Gets or sets the next item in the chain. + + The next item in the chain. + This is for example the 'target2' logger in writeTo='target1,target2' + + + + Gets the stack trace usage. + + A value that determines stack trace handling. + + + + Helper for dealing with thread-local storage. + + + + + Allocates the data slot for storing thread-local information. + + Allocated slot key. + + + + Gets the data for a slot in thread-local storage. + + Type of the data. + The slot to get data for. + Automatically create the object if it doesn't exist. + + Slot data (will create T if null). + + + + + Wraps with a timeout. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + The timeout. + + + + Continuation function which implements the timeout logic. + + The exception. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Transformation on a layout. Pre-calculated if the layout has a fixed value. + + + + + Create TransformedLayout. + + Layout + Transformation method + Optional renderer, otherwise is used + + + + + + + Create TransformedLayout. If is null, then the returns null + + Layout + Transformation method + Optional renderer, otherwise is used + null if is null + + + + + + + + + + URL Encoding helper. + + + + Allow UnreservedMarks instead of ReservedMarks, as specified by chosen RFC + + + Use RFC2396 standard (instead of RFC3986) + + + Should use lowercase when doing HEX escaping of special characters + + + Replace space ' ' with '+' instead of '%20' + + + Skip UTF8 encoding, and prefix special characters with '%u' + + + + Escape unicode string data for use in http-requests + + unicode string-data to be encoded + target for the encoded result + s for how to perform the encoding + + + + Convert the wide-char into utf8-bytes, and then escape + + + + + + + + + Is allowed? + + + + + + + + Is a-z / A-Z / 0-9 + + + + + + + Prevents the Xamarin linker from linking the target. + + + By applying this attribute all of the members of the target will be kept as if they had been referenced by the code. + + + + + Ensures that all members of this type are preserved + + + + + Flags the method as a method to preserve during linking if the container class is pulled in. + + + + + Helper class for XML + + + + + removes any unusual unicode characters that can't be encoded into XML + + + + + Cleans string of any invalid XML chars found + + unclean string + string with only valid XML chars + + + + Pretest, small text and not escape needed + + + + + + + + Converts object value to invariant format, and strips any invalid xml-characters + + Object value + Object value converted to string + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object value converted to string + + + + XML elements must follow these naming rules: + - Element names are case-sensitive + - Element names must start with a letter or underscore + - Element names can contain letters, digits, hyphens, underscores, and periods + - Element names cannot contain spaces + + + + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object TypeCode + Check and remove unusual unicode characters from the result string. + Object value converted to string + + + + Safe version of WriteAttributeString + + + + + + + + + + Safe version of WriteAttributeString + + + + + + + + Safe version of WriteElementSafeString + + + + + + + + + + Safe version of WriteCData + + + + + + + Interface for handling object transformation + + + + + Takes a dangerous (or massive) object and converts into a safe (or reduced) object + + + Null if unknown object, or object cannot be handled + + + + + Provides an interface to execute System.Actions without surfacing any exceptions raised for that action. + + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Render a message template property to a string + + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Log event context data. + + + + + Initializes a new instance of the class. + + + + + Gets or sets string that will be used to separate key/value pairs. + + + + + + Get or set if empty values should be included. + + A value is empty when null or in case of a string, null or empty string. + + + + + + Gets or sets the keys to exclude from the output. If omitted, none are excluded. + + + + + + Gets or sets how key/value pairs will be formatted. + + + + + + Renders all log event's properties and appends them to the specified . + + The to append the rendered data to. + Logging event. + + + + Designates a property of the class as an ambient property. + + + non-ambient: ${uppercase:${level}} + ambient : ${level:uppercase} + + + + + Initializes a new instance of the class. + + Ambient property name. + + + + Renders the assembly version information for the entry assembly or a named assembly. + + + As this layout renderer uses reflection and version information is unlikely to change during application execution, + it is recommended to use it in conjunction with the . + + + The entry assembly can't be found in some cases e.g. ASP.NET, unit tests, etc. + + + + + Initializes a new instance of the class. + + + + + The (full) name of the assembly. If null, using the entry assembly. + + + + + + Gets or sets the type of assembly version to retrieve. + + + Some version type and platform combinations are not fully supported. + - UWP earlier than .NET Standard 1.5: Value for is always returned unless the parameter is specified. + - Silverlight: Value for is always returned. + + + + + + Gets or sets the custom format of the assembly version output. + + + Supported placeholders are 'major', 'minor', 'build' and 'revision'. + The default .NET template for version numbers is 'major.minor.build.revision'. See + https://docs.microsoft.com/en-gb/dotnet/api/system.version?view=netframework-4.7.2#remarks + for details. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders an assembly version and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Type of assembly version to retrieve. + + + + + Gets the assembly version. + + + + + Gets the file version. + + + + + Gets additional version information. + + + + + The current application domain's base directory. + + + + + Use base dir of current process. Alternative one can just use ${processdir} + + + + + + Fallback to the base dir of current process, when AppDomain.BaseDirectory is Temp-Path (.NET Core 3 - Single File Publish) + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the base directory. + + + + + + Renders the application base directory and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site (class name, method name and source information). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to render the class name. + + + + + + Gets or sets a value indicating whether to render the include the namespace with . + + + + + + Gets or sets a value indicating whether to render the method name. + + + + + + Gets or sets a value indicating whether the method name will be cleaned up if it is detected as an anonymous delegate. + + + + + + Gets or sets a value indicating whether the method and class names will be cleaned up if it is detected as an async continuation + (everything after an await-statement inside of an async method). + + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A counter value (increases on each layout rendering). + + + + + Gets or sets the initial value of the counter. + + + + + + Gets or sets the value to be added to the counter after each layout rendering. + + + + + + Gets or sets the name of the sequence. Different named sequences can have individual values. + + + + + + + + + The current working directory of the application. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the current directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the current directory. + + + + + + + + + + + + Current date and time. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the date format. Can be any argument accepted by DateTime.ToString(format). + + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + + + + + + + + + + DB null for a database + + + + + + + + + + + The OS dependent directory separator + + + + + + + + + + + Log event context data. + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the name of the item. + + + + + + Renders the specified log event context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Log event context data. See . + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + + + + + + + + + + Exception information provided through + a call to one of the Logger.*Exception() methods. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the format of the output. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + + + Gets or sets the format of the output of inner exceptions. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + Gets or sets the separator used to concatenate parts specified in the Format. + + + + + + Gets or sets the separator used to concatenate exception data specified in the Format. + + + + + + Gets or sets the maximum number of inner exceptions to include in the output. + By default inner exceptions are not enabled for compatibility with NLog 1.0. + + + + + + Gets or sets the separator between inner exceptions. + + + + + + Gets or sets whether to render innermost Exception from + + + + + Gets the formats of the output of inner exceptions to be rendered in target. + + + + + + + Gets the formats of the output to be rendered in target. + + + + + + + + + + + + + Appends the Message of an Exception to the specified . + + The to append the rendered data to. + The exception containing the Message to append. + + + + Appends the method name from Exception's stack trace to the specified . + + The to append the rendered data to. + The Exception whose method name should be appended. + + + + Appends the stack trace from an Exception to the specified . + + The to append the rendered data to. + The Exception whose stack trace should be appended. + + + + Appends the result of calling ToString() on an Exception to the specified . + + The to append the rendered data to. + The Exception whose call to ToString() should be appended. + + + + Appends the type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose type should be appended. + + + + Appends the short type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose short type should be appended. + + + + Appends the application source of an Exception to the specified . + + The to append the rendered data to. + The Exception whose source should be appended. + + + + Appends the HResult of an Exception to the specified . + + The to append the rendered data to. + The Exception whose HResult should be appended. + + + + Appends the contents of an Exception's Data property to the specified . + + The to append the rendered data to. + The Exception whose Data property elements should be appended. + + + + Appends all the serialized properties of an Exception into the specified . + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Appends all the additional properties of an Exception like Data key-value-pairs + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Split the string and then compile into list of Rendering formats. + + + + + Find name of method on stracktrace. + + Full stracktrace + + + + + Renders contents of the specified file. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file. + + + + + + Gets or sets the encoding used in the file. + + The encoding. + + + + + Renders the contents of the specified file and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + Name used in config without ${}. E.g. "test" could be used as "${test}". + + + + + Method that renders the layout. + + + + + Format string for conversion from object to string. + + + + + + + + + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + The information about the garbage collector. + + + + + Gets or sets the property to retrieve. + + + + + + + + + Gets or sets the property of System.GC to retrieve. + + + + + Total memory allocated. + + + + + Total memory allocated (perform full garbage collection first). + + + + + Gets the number of Gen0 collections. + + + + + Gets the number of Gen1 collections. + + + + + Gets the number of Gen2 collections. + + + + + Maximum generation number supported by GC. + + + + + Render a Global Diagnostics Context item. See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + + + + Globally-unique identifier (GUID). + + + + + Gets or sets the GUID format as accepted by Guid.ToString() method. + + + + + + Generate the Guid from the NLog LogEvent (Will be the same for all targets) + + + + + + + + + + + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Gets or sets the name of the parameter. + + + + + + Renders the specified installation parameter and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render environmental information related to logging events. + + + + + Gets the logging configuration this target is part of. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Renders the the value of layout renderer in the context of the specified log event. + + The log event. + String representation of a layout renderer. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Renders the value of layout renderer in the context of the specified log event. + + The log event. + The layout render output is appended to builder + + + + Renders the value of layout renderer in the context of the specified log event into . + + The to append the rendered data to. + Logging event. + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Get the for rendering the messages to a + + LogEvent with culture + Culture in on Layout level + + + + + Get the for rendering the messages to a , needed for date and number formats + + LogEvent with culture + Culture in on Layout level + + + is preferred + + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Marks class as a layout renderer and assigns a name to it. + + This attribute is not required when registering the layout in the API. + + + + Initializes a new instance of the class. + + Name of the layout renderer, without the `${ }` + + + + Format of the ${level} layout renderer output. + + + + + Render the LogLevel standard name. + + + + + Render the first character of the level. + + + + + Render the ordinal (aka number) for the level. + + + + + Render the LogLevel full name, expanding Warn / Info abbreviations + + + + + The log level. + + + + + Gets or sets a value indicating the output format of the level. + + + + + + + + + + + + + + + A string literal. + + + This is used to escape '${' sequence + as ;${literal:text=${}' + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The literal text value. + This is used by the layout compiler. + + + + Gets or sets the literal text. + + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes the layout renderer. + + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets a value indicating whether the XML should use spaces for indentation. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the XML logging event and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The logger name. + + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + + + + + + + The date and time in a long, sortable format yyyy-MM-dd HH:mm:ss.ffff. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the date in the long format (yyyy-MM-dd HH:mm:ss.ffff) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render a Mapped Diagnostic Context item, See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + The formatted log message. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to log exception along with message. + + + + + + Gets or sets the string that separates message from the exception. + + + + + + Gets or sets whether it should render the raw message without formatting parameters + + + + + + + + + + + + Render a Nested Diagnostic Context item. + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested diagnostics context output. + + + + + + Renders the specified Nested Diagnostics Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A newline literal. + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The process time in format HH:mm:ss.mmm. + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + Write timestamp to builder with format hh:mm:ss:fff + + + + + The sequence ID + + + + + + + + + + + The short date in a sortable format yyyy-MM-dd. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the current short date string (yyyy-MM-dd) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Specifies application information to display in ${sl-appinfo} renderer. + + + + + URI of the current application XAP file. + + + + + Whether application is running out-of-browser. + + + + + Installed state of an application. + + + + + Whether application is running with elevated permissions. + + + + + System special folder path (includes My Documents, My Music, Program Files, Desktop, and more). + + + + + Gets or sets the system special folder to use. + + + Full list of options is available at MSDN. + The most common ones are: +
    +
  • ApplicationData - roaming application data for current user.
  • +
  • CommonApplicationData - application data for all users.
  • +
  • MyDocuments - My Documents
  • +
  • DesktopDirectory - Desktop directory
  • +
  • LocalApplicationData - non roaming application data
  • +
  • Personal - user profile directory
  • +
  • System - System directory
  • +
+
+ +
+ + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Format of the ${stacktrace} layout renderer output. + + + + + Raw format (multiline - as returned by StackFrame.ToString() method). + + + + + Flat format (class and method names displayed in a single line). + + + + + Detailed flat format (method signatures displayed in a single line). + + + + + Stack trace renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the output format of the stack trace. + + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets the stack frame separator string. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A temporary directory. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The identifier of the current thread. + + + + + + + + The name of the current thread. + + + + + + + + The Ticks value of current date and time. + + + + + + + + + + + The time in a 24-hour, sortable format HH:mm:ss.mmmm. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + Render a NLog variable (xml or config) + + + + + Gets or sets the name of the NLog variable. + + + + + + Gets or sets the default value to be used when the variable is not set. + + Not used if Name is null + + + + + Initializes the layout renderer. + + + + + Try get the + + + + + + + Renders the specified variable and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Applies caching to another layout output. + + + The value of the inner layout will be rendered only once and reused subsequently. + + + + + A value indicating when the cache is cleared. + + + + Never clear the cache. + + + Clear the cache whenever the is initialized. + + + Clear the cache whenever the is closed. + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether this is enabled. + + + + + + Gets or sets a value indicating when the cache is cleared. + + + + + + Cachekey. If the cachekey changes, resets the value. For example, the cachekey would be the current day.s + + + + + + Gets or sets a value indicating how many seconds the value should stay cached until it expires + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + + + + Filters characters not allowed in the file names by replacing them with safe character. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to modify the output of this renderer so it can be used as a part of file path + (illegal characters are replaced with '_'). + + + + + + + + + + + + Escapes output of another layout using JSON rules. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply JSON encoding. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + + + + + + + Left part of a text + + + + + Gets or sets the length in characters. + + + + + + Same as -property, so it can be used as ambient property. + + + ${message:truncate=80} + + + + + + + + + + + + Converts the result of another layout output to lower case. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Render the non-raw value of an object. + + For performance and/or full (formatted) control of the output. + + + + Gets or sets a value indicating whether to disable the IRawValue-interface + + A value of true if IRawValue-interface should be ignored; otherwise, false. + + + + + + + + + + + Render a single property of a object + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + Shortcut for + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + Only outputs the inner layout when exception has been defined for log message. + + + + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + ${onhasproperties:, Properties\: ${all-event-properties}} + + + + + + + + + + + Horizontal alignment for padding layout renderers. + + + + + When layout text is too long, align it to the left + (remove characters from the right). + + + + + When layout text is too long, align it to the right + (remove characters from the left). + + + + + Applies padding to another layout output. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of characters to pad the output to. + + + Positive padding values cause left padding, negative values + cause right padding to the desired width. + + + + + + Gets or sets the padding character. + + + + + + Gets or sets a value indicating whether to trim the + rendered text to the absolute value of the padding length. + + + + + + Gets or sets a value indicating whether a value that has + been truncated (when is true) + will be left-aligned (characters removed from the right) + or right-aligned (characters removed from the left). The + default is left alignment. + + RegistryLayoutRenderer + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Replaces a string in the output of another layout with another string. + + + ${replace:searchFor=\\n+:replaceWith=-:regex=true:inner=${message}} + + + + + Gets or sets the text to search for. + + The text search for. + + + + + Gets or sets a value indicating whether regular expressions should be used. + + A value of true if regular expressions should be used otherwise, false. + + + + + Gets or sets the replacement string. + + The replacement string. + + + + + Gets or sets the group name to replace when using regular expressions. + Leave null or empty to replace without using group name. + + The group name. + + + + + Gets or sets a value indicating whether to ignore case. + + A value of true if case should be ignored when searching; otherwise, false. + + + + + Gets or sets a value indicating whether to search for whole words. + + A value of true if whole words should be searched for; otherwise, false. + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Initializes the layout renderer. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + This class was created instead of simply using a lambda expression so that the "ThreadAgnosticAttributeTest" will pass + + + + + A match evaluator for Regular Expression based replacing + + Input string. + Group name in the regex. + Replace value. + Match from regex. + Groups replaced with . + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating the string that should be used for separating lines. + + + + + + + + + + + + Right part of a text + + + + + Gets or sets the length in characters. + + + + + + + + + + + + Decodes text "encrypted" with ROT-13. + + + See https://en.wikipedia.org/wiki/ROT13. + + + + + Gets or sets the layout to be wrapped. + + The layout to be wrapped. + This variable is for backwards compatibility + + + + + Encodes/Decodes ROT-13-encoded string. + + The string to be encoded/decoded. + Encoded/Decoded text. + + + + + + + + + + Encodes/Decodes ROT-13-encoded string. + + + + + Substring the result + + + ${substring:${level}:start=2:length=2} + ${substring:${level}:start=-2:length=2} + ${substring:Inner=${level}:start=2:length=2} + + + + + Initializes a new instance of the class. + + + + + Gets or sets the start index. + + Index + + + + + Gets or sets the length in characters. If null, then the whole string + + Index + + + + + + + + + + + Calculate start position + + 0 or positive number + + + + Calculate needed length + + 0 or positive number + + + + Trims the whitespace from the result of another layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + + + + + + + Converts the result of another layout output to upper case. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + ${level:uppercase} // [AmbientProperty] + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether upper case conversion should be applied. + + A value of true if upper case conversion should be applied otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Encodes the result of another layout output for use with URLs. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether spaces should be translated to '+' or '%20'. + + A value of true if space should be translated to '+'; otherwise, false. + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + + + Gets or sets the layout to be rendered when original layout produced empty result. + + + + + + + + + + + + + + + Only outputs the inner layout when the specified condition has been met. + + + + + Gets or sets the condition that must be met for the layout to be printed. + + + + + + If is not met, print this layout. + + + + + + + + + + + + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the line length for wrapping. + + + Only positive values are allowed + + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + Base class for s which wrapping other s. + + This has the property (which is default) and can be used to wrap. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + + + + + Gets or sets the wrapped layout. + + [DefaultParameter] so Inner: is not required if it's the first + + + + + + + + + Renders the inner message, processes it and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Appends the rendered output from -layout and transforms the added output (when necessary) + + Logging event. + The to append the rendered data to. + Start position for any necessary transformation of . + + + + Transforms the output of another layout. + + Logging event. + Output to be transform. + Transformed text. + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + Base class for s which wrapping other s. + + This expects the transformation to work on a + + + + + + + + Transforms the output of another layout. + + + Output to be transform. + + + + Transforms the output of another layout. + + Output to be transform. + + + + Renders the inner layout contents. + + + for the result + + + + + + + + + + + + + + + + + + Converts the result of another layout output to be XML-compliant. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply XML encoding. + + Ensures always valid XML, but gives a performance hit + + + + + Gets or sets a value indicating whether to transform newlines (\r\n) into ( ) + + + + + + + + + + + + A layout containing one or more nested layouts. + + + + + Initializes a new instance of the class. + + + + + Gets the inner layouts. + + + + + + Initializes the layout. + + + + + Formats the log event relying on inner layouts. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event relying on inner layouts. + + The logging event. + for the result + + + + Closes the layout. + + + + + Generate description of Compound Layout + + Compound Layout String Description + + + + A column in the CSV. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the column. + The layout of the column. + + + + Gets or sets the name of the column. + + + + + + Gets or sets the layout of the column. + + + + + + Gets or sets the override of Quoting mode + + + and are faster than the default + + + + + + Specifies allowed column delimiters. + + + + + Automatically detect from regional settings. + + + + + Comma (ASCII 44). + + + + + Semicolon (ASCII 59). + + + + + Tab character (ASCII 9). + + + + + Pipe character (ASCII 124). + + + + + Space character (ASCII 32). + + + + + Custom string, specified by the CustomDelimiter. + + + + + A specialized layout that renders CSV-formatted events. + + If is set, then the header generation with column names will be disabled. + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + Gets or sets a value indicating whether CVS should include header. + + A value of true if CVS should include header; otherwise, false. + + + + + Gets or sets the column delimiter. + + + + + + Gets or sets the quoting mode. + + + + + + Gets or sets the quote Character. + + + + + + Gets or sets the custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). + + + + + + Initializes the layout. + + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event for write. + + The logging event. + for the result + + + + Get the headers with the column names. + + + + + + Header with column names for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Generate description of CSV Layout + + CSV Layout String Description + + + + Specifies CSV quoting modes. + + + + + Quote all column (Fast) + + + + + Quote nothing (Very fast) + + + + + Quote only whose values contain the quote symbol or the separator (Slow) + + + + + JSON attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with json-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Json encoded. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A specialized layout that renders JSON-formatted events. + + + + + Initializes a new instance of the class. + + + + + Gets the array of attributes' configurations. + + + + + + Gets or sets the option to suppress the extra spaces in the output json + + + + + + Gets or sets the option to render the empty object value {} + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as JSON) + + + + + + List of property names to exclude when is true + + + + + + How far should the JSON serializer follow object references before backing off + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Formats the log event as a JSON document for writing. + + The logging event. + for the result + + + + Formats the log event as a JSON document for writing. + + The log event to be formatted. + A JSON string representation of the log event. + + + + Generate description of JSON Layout + + JSON Layout String Description + + + + Abstract interface that layouts must implement. + + + + + Is this layout initialized? See + + + + + Gets a value indicating whether this layout is thread-agnostic (can be rendered on any thread). + + + Layout is thread-agnostic if it has been marked with [ThreadAgnostic] attribute and all its children are + like that as well. + + Thread-agnostic layouts only use contents of for its output. + + + + + Gets the level of stack trace information required for rendering. + + + + + Gets the logging configuration this target is part of. + + + + + Converts a given text to a . + + Text to be converted. + object represented by the text. + + + + Implicitly converts the specified string to a . + + The layout string. + Instance of .' + + + + Implicitly converts the specified string to a . + + The layout string. + The NLog factories to use when resolving layout renderers. + Instance of . + + + + Implicitly converts the specified string to a . + + The layout string. + Whether should be thrown on parse errors (false = replace unrecognized tokens with a space). + Instance of . + + + + Create a from a lambda method. + + Method that renders the layout. + Tell if method is safe for concurrent threading. + Instance of . + + + + Precalculates the layout for the specified log event and stores the result + in per-log event cache. + + Only if the layout doesn't have [ThreadAgnostic] and doesn't contain layouts with [ThreadAgnostic]. + + The log event. + + Calling this method enables you to store the log event in a buffer + and/or potentially evaluate it in another thread even though the + layout may contain thread-dependent renderer. + + + + + Renders the event info in layout. + + The event info. + String representing log event. + + + + Optimized version of for internal Layouts. Works best + when override of is available. + + The event info. + Appends the string representing log event to target + Should rendering result be cached on LogEventInfo + + + + Valid default implementation of , when having implemented the optimized + + The logging event. + StringBuilder to help minimize allocations [optional]. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Optimized version of for internal Layouts, when + override of is available. + + + + + Try get value + + + rawValue if return result is true + false if we could not determine the rawValue + + + + Marks class as a layout renderer and assigns a format string to it. + + + + + Initializes a new instance of the class. + + Layout name. + + + + Parses layout strings. + + + + + Add to + + + + + + + Options available for + + + + + Default options + + + + + Layout renderer method can handle concurrent threads + + + + + Layout renderer method is agnostic to current thread context. This means it will render the same result indepdent of thread-context. + + + + + A specialized layout that supports header and footer. + + + + + Gets or sets the body layout (can be repeated multiple times). + + + + + + Gets or sets the header layout. + + + + + + Gets or sets the footer layout. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result. + + + + A specialized layout that renders Log4j-compatible XML events. + + + This layout is not meant to be used explicitly. Instead you can use ${log4jxmlevent} layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets the instance that renders log events. + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Represents a string with embedded placeholders that can render contextual information. + + + This layout is not meant to be used explicitly. Instead you can just use a string containing layout + renderers everywhere the layout is required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout string to parse. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + Whether should be thrown on parse errors. + + + + Original text before compile to Layout renderes + + + + + Gets or sets the layout text. + + + + + + Is the message fixed? (no Layout renderers used) + + + + + Get the fixed text. Only set when is true + + + + + Is the message a simple formatted string? (Can skip StringBuilder) + + + + + Gets a collection of objects that make up this layout. + + + + + Gets the level of stack trace information required for rendering. + + + + + Converts a text to a simple layout. + + Text to be converted. + A object. + + + + Escapes the passed text so that it can + be used literally in all places where + layout is normally expected without being + treated as layout. + + The text to be escaped. + The escaped text. + + Escaping is done by replacing all occurrences of + '${' with '${literal:text=${}' + + + + + Evaluates the specified text by expanding all layout renderers. + + The text to be evaluated. + Log event to be used for evaluation. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Evaluates the specified text by expanding all layout renderers + in new context. + + The text to be evaluated. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Returns a that represents the current object. + + + A that represents the current object. + + + + + + + + + + + + + + + + + + + + XML attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with xml-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A XML Element + + + + + + + + + + + Name of the element + + + + + + Value inside the element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + The name of the top XML node + The value of the top XML node + + + + Name of the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Value inside the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Auto indent and create new lines + + + + + + Gets the array of xml 'elements' configurations. + + + + + + Gets the array of 'attributes' configurations for the element + + + + + + Gets or sets whether a ElementValue with empty value should be included in the output + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as XML) + + + + + + List of property names to exclude when is true + + + + + + XML element name to use when rendering properties + + + Support string-format where {0} means property-key-name + + Skips closing element tag when having configured + + + + + + XML attribute name to use when rendering property-key + + When null (or empty) then key-attribute is not included + + + Will replace newlines in attribute-value with + + + + + + XML attribute name to use when rendering property-value + + When null (or empty) then value-attribute is not included and + value is formatted as XML-element-value + + + Skips closing element tag when using attribute for value + + Will replace newlines in attribute-value with + + + + + + XML element name to use for rendering IList-collections items + + + + + + How far should the XML serializer follow object references before backing off + + + + + + Initializes the layout. + + + + + Formats the log event as a XML document for writing. + + The logging event. + for the result + + + + Formats the log event as a XML document for writing. + + The log event to be formatted. + A XML string representation of the log event. + + + + write attribute, only if is not empty + + + + + rendered + + + + Generate description of XML Layout + + XML Layout String Description + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + + + + + + + Name of the root XML element + + + + + + Value inside the root XML element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Represents the logging event. + + + + + Gets the date of the first log event created. + + + + + The formatted log message. + + + + + The log message including any parameter placeholders + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + Exception information. + + + + Gets the unique identifier of log event which is automatically generated + and monotonously increasing. + + + + + Gets or sets the timestamp of the logging event. + + + + + Gets or sets the level of the logging event. + + + + + Gets a value indicating whether stack trace has been set for this event. + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Gets the entire stack trace. + + + + + Gets the callsite class name + + + + + Gets the callsite member function name + + + + + Gets the callsite source file path + + + + + Gets the callsite source file line number + + + + + Gets or sets the exception information. + + + + + Gets or sets the logger name. + + + + + Gets the logger short name. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the log message including any parameter placeholders. + + + + + Gets or sets the parameter values or null if no parameters have been specified. + + + + + Gets or sets the format provider that was provided while logging or + when no formatProvider was specified. + + + + + Gets or sets the message formatter for generating + Uses string.Format(...) when nothing else has been configured. + + + + + Gets the formatted message. + + + + + Checks if any per-event properties (Without allocation) + + + + + Gets the dictionary of per-event context properties. + + + + + Gets the dictionary of per-event context properties. + Internal helper for the PropertiesDictionary type. + + Create the event-properties dictionary, even if no initial template parameters + Provided when having parsed the message template and capture template parameters (else null) + + + + + Gets the named parameters extracted from parsing as MessageTemplate + + + + + Gets the dictionary of per-event context properties. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + The exception. + Instance of . + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates from this by attaching the specified asynchronous continuation. + + The asynchronous continuation. + Instance of with attached continuation. + + + + Returns a string representation of this log event. + + String representation of the log event. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace (Negative means NLog should skip stackframes from System-assemblies). + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Set the + + true = Always, false = Never, null = Auto Detect + + + + Specialized LogFactory that can return instances of custom logger types. + + Use this only when a custom Logger type is defined. + The type of the logger to be returned. Must inherit from . + + + + Gets the logger with type . + + The logger name. + An instance of . + + + + Gets a custom logger with the full name of the current class (so namespace and class name) and type . + + An instance of . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Overwrite possible file paths (including filename) for possible NLog config files. + When this property is null, the default file paths ( are used. + + + + + Occurs when logging changes. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The config. + + + + Initializes a new instance of the class. + + The config loader + The custom AppEnvironmnet override + + + + Gets the current . + + + + + Gets or sets a value indicating whether exceptions should be thrown. See also . + + A value of true if exception should be thrown; otherwise, false. + By default exceptions are not thrown under any circumstances. + + + + Gets or sets a value indicating whether should be thrown. + + If null then is used. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. After setting this property all + existing loggers will be re-configured, so there is no need to call + manually. + + + + + Gets or sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets the default culture info to use as . + + + Specific culture info or null to use + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting + unmanaged resources. + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Creates a logger that discards all log messages. + + Null logger instance. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets the logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + The logger with type . + Type of the logger + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The type of the logger to create. The type must inherit from + The logger of type . + This is a slow-running method. Make sure you are not calling this method in a + loop. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + Name of the logger. + Type of the logger + The logger reference with type . Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The type of the logger to create. The type must inherit from . + The logger of type . Multiple calls to GetLogger with the + same argument aren't guaranteed to return the same logger reference. + + + + Loops through all loggers previously returned by GetLogger and recalculates their + target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time + will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flushes any pending log messages on all appenders. + + Config containing Targets to Flush + Flush completed notification (success / timeout) + Optional timeout that guarantees that completed notication is called. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Returns if logging is currently enabled. + + A value of if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Raises the event when the configuration is reloaded. + + Event arguments. + + + + Currently this is disposing? + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Logger cache key. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Determines if two objects are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Determines if two objects of the same type are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Logger cache. + + + + + Inserts or updates. + + + + + + + Internal for unit tests + + + + + Enables logging in implementation. + + + + + Initializes a new instance of the class. + + The factory. + + + + Enables logging. + + + + + Logging methods which only are executed when the DEBUG conditional compilation symbol is set. + + Remarks: + The DEBUG conditional compilation symbol is default enabled (only) in a debug build. + + If the DEBUG conditional compilation symbol isn't set in the calling library, the compiler will remove all the invocations to these methods. + This could lead to better performance. + + See: https://msdn.microsoft.com/en-us/library/4xssyw96%28v=vs.90%29.aspx + + + Provides logging interface and utility functions. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Initializes a new instance of the class. + + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Collection of context properties for the Logger. The logger will append it for all log events + + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Creates new logger that automatically appends the specified property to all log events (without changing current logger) + + Property Name + Property Value + New Logger object that automatically appends specified property + + + + Updates the specified context property for the current logger. The logger will append it for all log events. + + It could be rendered with ${event-properties:YOURNAME} + + With property, all properties could be changed. + + + Will affect all locations/contexts that makes use of the same named logger object. + + Property Name + Property Value + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Raises the event when the logger is reconfigured. + + Event arguments + + + + Implementation of logging engine. + + + + + Gets the filter result. + + The filter chain. + The log event. + default result if there are no filters, or none of the filters decides. + The result of the filter. + + + + Defines available log levels. + + + + + Trace log level. + + + + + Debug log level. + + + + + Info log level. + + + + + Warn log level. + + + + + Error log level. + + + + + Fatal log level. + + + + + Off log level. + + + + + Gets all the available log levels (Trace, Debug, Info, Warn, Error, Fatal, Off). + + + + + Gets all the log levels that can be used to log events (Trace, Debug, Info, Warn, Error, Fatal) + i.e LogLevel.Off is excluded. + + + + + Initializes a new instance of . + + The log level name. + The log level ordinal number. + + + + Gets the name of the log level. + + + + + Gets the ordinal of the log level. + + + + + Compares two objects + and returns a value indicating whether + the first one is equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal == level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is not equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal != level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than the second one. + + The first level. + The second level. + The value of level1.Ordinal > level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal >= level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than the second one. + + The first level. + The second level. + The value of level1.Ordinal < level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal <= level2.Ordinal. + + + + Gets the that corresponds to the specified ordinal. + + The ordinal. + The instance. For 0 it returns , 1 gives and so on. + + + + Returns the that corresponds to the supplied . + + The textual representation of the log level. + The enumeration value. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Determines whether the specified instance is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Compares the level to the other object. + + + The object object. + + + A value less than zero when this logger's is + less than the other logger's ordinal, 0 when they are equal and + greater than zero when this ordinal is greater than the + other ordinal. + + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Delegate used to set/get the culture in use. + + This delegate marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the instance used in the . + + Could be used to pass the to other methods + + + + Occurs when logging changes. + + + + + Gets or sets a value indicating whether NLog should throw exceptions. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether should be thrown. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Gets or sets the global log threshold. Log events below this threshold are not logged. + + + + + Gets or sets the default culture to use. + + This property was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Adds the given assembly which will be skipped + when NLog is trying to find the calling method on stack trace. + + The assembly to skip. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The logger class. This class must inherit from . + The logger of type . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates a logger that discards all log messages. + + Null logger which discards all log messages. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + + + + Gets the specified named custom logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The logger class. This class must inherit from . + The logger of type . Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + The generic way for this method is + + + + Loops through all loggers previously returned by GetLogger. + and recalculates their target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Checks if logging is currently enabled. + + if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Dispose all targets, and shutdown logging. + + + + + Generates a formatted message from the log event + + Log event. + Formatted message + + + + Returns a log message. Used to defer calculation of + the log message until it's actually needed. + + Log message. + + + + Service contract for Log Receiver client. + + This class marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Internal configuration of Log Receiver Service contracts. + + + + + Wire format for NLog Event. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the client-generated identifier of the event. + + + + + Gets or sets the ordinal of the log level. + + + + + Gets or sets the logger ordinal (index into . + + The logger ordinal. + + + + Gets or sets the time delta (in ticks) between the time of the event and base time. + + + + + Gets or sets the message string index. + + + + + Gets or sets the collection of layout values. + + + + + Gets the collection of indexes into array for each layout value. + + + + + Converts the to . + + The object this is part of.. + The logger name prefix to prepend in front of the logger name. + Converted . + + + + Wire format for NLog event package. + + + + + Gets or sets the name of the client. + + The name of the client. + + + + Gets or sets the base time (UTC ticks) for all events in the package. + + The base time UTC. + + + + Gets or sets the collection of layout names which are shared among all events. + + The layout names. + + + + Gets or sets the collection of logger names. + + The logger names. + + + + Gets or sets the list of events. + + The events. + + + + Converts the events to sequence of objects suitable for routing through NLog. + + The logger name prefix to prepend in front of each logger name. + + Sequence of objects. + + + + + Converts the events to sequence of objects suitable for routing through NLog. + + + Sequence of objects. + + + + + List of strings annotated for more terse serialization. + + + + + Initializes a new instance of the class. + + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + + + + + Gets the thread-local dictionary + + Must be true for any subsequent dictionary modification operation + + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The to use when converting a value to a . + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Returns all item names + + A set of the names of all items in current thread-MDC. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified exists in current thread MDC. + + + + Removes the specified from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Mapped Diagnostics Context + + This class marked as obsolete before NLog 2.0 and it may be removed in a future release. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified item exists in current thread MDC. + + + + Removes the specified item from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Mark a parameter of a method for message templating + + + + + Specifies which parameter of an annotated method should be treated as message-template-string + + + + + The name of the parameter that should be as treated as message-template-string + + + + + The type of the captured hole + + + + + Not decided + + + + + normal {x} + + + + + Serialize operator {@x} (aka destructure) + + + + + stringification operator {$x} + + + + + A hole that will be replaced with a value + + + + + Constructor + + + + Parameter name sent to structured loggers. + This is everything between "{" and the first of ",:}". + Including surrounding spaces and names that are numbers. + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + Type + + + + When the template is positional, this is the parsed name of this parameter. + For named templates, the value of Index is undefined. + + + Alignment to render the parameter, by default 0. + This is the parsed value between "," and the first of ":}" + + + + A fixed value + + + + Number of characters from the original template to copy at the current position. + This can be 0 when the template starts with a hole or when there are multiple consecutive holes. + + + Number of characters to skip in the original template at the current position. + 0 is a special value that mean: 1 escaped char, no hole. It can also happen last when the template ends with a literal. + + + + Combines Literal and Hole + + + + Literal + + + Hole + Uninitialized when = 0. + + + + Description of a single parameter extracted from a MessageTemplate + + + + + Parameter Name extracted from + This is everything between "{" and the first of ",:}". + + + + + Parameter Value extracted from the -array + + + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + + Parameter method that should be used to render the parameter + See also + + + + + Returns index for , when + + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + Parameter CaptureType + + + + Parameters extracted from parsing as MessageTemplate + + + + + + + + + + + Gets the parameters at the given index + + + + + Number of parameters + + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Indicates whether the template was parsed successful, and there are no unmatched parameters + + + + + Constructor for parsing the message template with parameters + + including any parameter placeholders + All + + + + Constructor for named parameters that already has been parsed + + + + + Create MessageTemplateParameter from + + + + + A message template + + + + The original template string. + This is the key passed to structured targets. + + + The list of literal parts, useful for string rendering. + It indicates the number of characters from the original string to print, + then there's a hole with how many chars to skip. + + "Hello {firstName} {lastName}!" + ------------------------------------- + ║P |S ║P|S ║P|S║ + ║6 |11 ║1|10 ║1|0║ + ║Hello |{firstName}║ |{lastName}║!║ + + "{x} * 2 = {2x}" + -------------------- + ║P|S ║P |S ║ + ║0|3 ║7 |4 ║ + ║{x}║ * 2 = |{2x}║ + + The tricky part is escaped braces. They are represented by a skip = 0, + which is interpreted as "move one char forward, no hole". + + "Escaped }} is fun." + ---------------------- + ║P |S║P |S║ + ║9 |0║8 |0║ + ║Escaped }|}║ is fun.|║ + + + + This list of holes. It's used both to fill the string rendering + and to send values along the template to structured targets. + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Create a template, which is already parsed + + + + + + + + + Create a template, which is already parsed + + + + + + + + This is for testing only: recreates from the parsed data. + + + + This is for testing only: rebuilds the hole + + Add to this string builder + ref for performance + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Gets the current literal/hole in the template + + + + + Clears the enumerator + + + + + Restarts the enumerator of the template + + + + + Moves to the next literal/hole in the template + + Found new element [true/false] + + + + Parse format after hole name/index. Handle the escaped { and } in the format. Don't read the last } + + + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Error when parsing a template. + + + + + Current index when the error occurred. + + + + + The template we were parsing + + + + + New exception + + The message to be shown. + Current index when the error occurred. + + + + + Render templates + + + + + Render a template to a string. + + The template. + Culture. + Parameters for the holes. + Do not fallback to StringBuilder.Format for positional templates. + The String Builder destination. + Parameters for the holes. + + + + Render a template to a string. + + The template. + The String Builder destination. + Culture. + Parameters for the holes. + Rendered template, never null. + + + + Convert Render or serialize a value, with optionally backwards-compatible with + + + + Singleton + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Format an object to a readable string, or if it's an object, serialize + + The value to convert + + + + + + + + Try serializing a scalar (string, int, NULL) or simple type (IFormattable) + + + + + Serialize Dictionary as JSON like structure, without { and } + + + "FirstOrder"=true, "Previous login"=20-12-2017 14:55:32, "number of tries"=1 + + + formatstring of an item + + + + + + + + + Convert a value to a string with format and append to . + + The value to convert. + Format sting for the value. + Format provider for the value. + Append to this + + + + Nested Diagnostics Context + + This class marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top object off the NDC stack. The object is removed from the stack. + + The top object from the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all objects on the NDC stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Nested Diagnostics Context - a thread-local structure that keeps a stack + of strings and provides methods to output them in layouts + + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object at the top of the NDC stack if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified object on current thread NDC. + + The object to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top message from the NDC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top object off the NDC stack. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Peeks the first object on the NDC stack + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. + + Array of objects on the stack. + + + + Resets the stack to the original count during . + + + + + Initializes a new instance of the class. + + The stack. + The previous count. + + + + Reverts the stack to original item count. + + + + + Exception thrown during NLog configuration. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The inner exception. + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Exception thrown during log event processing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + It works as a normal but it discards all messages which an application requests + to be logged. + + It effectively implements the "Null Object" pattern for objects. + + + + + Initializes a new instance of . + + The factory class to be used for the creation of this logger. + + + + Extension methods to setup LogFactory options + + + + + Gets the logger with the full name of the current class, so namespace and class name. + + + + + Gets the specified named logger. + + + + + Configures loading of NLog extensions for Targets and LayoutRenderers + + + + + Configures the output of NLog for diagnostics / troubleshooting + + + + + Configures serialization and transformation of LogEvents + + + + + Loads NLog config created by the method + + + + + Loads NLog config provided in + + + + + Loads NLog config from filename if provided, else fallback to scanning for NLog.config + + + + + Loads NLog config from XML in + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Enable/disables autoloading of NLog extensions by scanning and loading available assemblies + + + Enabled by default, and gives a huge performance hit during startup. Recommended to disable this when running in the cloud. + + + + + Registers NLog extensions from the assembly. + + + + + Registers NLog extensions from the assembly type name + + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + MethodInfo extracted by reflection - typeof(MyClass).GetMethod("MyFunc", BindingFlags.Static). + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + Lambda method. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + Lambda method. + + + + Extension methods to setup NLog options + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Overrides the active with a new custom implementation + + + + + Overrides the active with a new custom implementation + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Specifies the way archive numbering is performed. + + + + + Sequence style numbering. The most recent archive has the highest number. + + + + + Rolling style numbering (the most recent is always #0 then #1, ..., #N. + + + + + Date style numbering. Archives will be stamped with the prior period + (Year, Month, Day, Hour, Minute) datetime. + + + + + Date and sequence style numbering. + Archives will be stamped with the prior period (Year, Month, Day) datetime. + The most recent archive has the highest number (in combination with the date). + + + + + Abstract Target with async Task support + + + + + How many milliseconds to delay the actual write operation to optimize for batching + + + + + How many seconds a Task is allowed to run before it is cancelled. + + + + + How many attempts to retry the same Task, before it is aborted + + + + + How many milliseconds to wait before next retry (will double with each retry) + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Task Scheduler used for processing async Tasks + + + + + Constructor + + + + + Initializes the internal queue for pending logevents + + + + + Override this to create the actual logging task + + Example of how to override this method, and call custom async method + + protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) + { + return CustomWriteAsync(logEvent, token); + } + + private async Task CustomWriteAsync(LogEventInfo logEvent, CancellationToken token) + { + await MyLogMethodAsync(logEvent, token).ConfigureAwait(false); + } + + + The log event. + The cancellation token + + + + + Override this to create the actual logging task for handling batch of logevents + + A batch of logevents. + The cancellation token + + + + + Handle cleanup after failed write operation + + Exception from previous failed Task + The cancellation token + Number of retries remaining + Time to sleep before retrying + Should attempt retry + + + + Schedules the LogEventInfo for async writing + + The log event. + + + + Write to queue without locking + + + + + + Schedules notification of when all messages has been written + + + + + + Closes Target by updating CancellationToken + + + + + Releases any managed resources + + + + + + Checks the internal queue for the next to create a new task for + + Used for race-condition validation between task-completion and timeout + Signals whether previousTask completed an almost full BatchSize + + + + Generates recursive task-chain to perform retry of writing logevents with increasing retry-delay + + + + + Creates new task to handle the writing of the input + + LogEvents to write + New Task created [true / false] + + + + Handles that scheduled task has completed (successfully or failed), and starts the next pending task + + Task just completed + AsyncContinuation to notify of success or failure + + + + Timer method, that is fired when pending task fails to complete within timeout + + + + + + Sends log messages to the remote instance of Chainsaw application from log4j. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a name. + + Name of the target. + + + + Writes log messages to the console. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default. In multi threaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Gets or sets a value indicating whether to send the log messages to the standard error instead of the standard output. + + + + + + Gets or sets a value indicating whether to auto-check if the console is available + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + + Gets or sets whether to enable batch writing using char[]-buffers, instead of using + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified logging event to the Console.Out or + Console.Error depending on the value of the Error flag. + + The logging event. + + Note that the Error option is not supported on .NET Compact Framework. + + + + + + + + Write to output + + + + + A descriptor for an archive created with the DateAndSequence numbering mode. + + + + + The full name of the archive file. + + + + + The parsed date contained in the file name. + + + + + The parsed sequence number contained in the file name. + + + + + Determines whether produces the same string as the current instance's date once formatted with the current instance's date format. + + The date to compare the current object's date to. + True if the formatted dates are equal, otherwise False. + + + + Initializes a new instance of the class. + + + + + Writes log messages to the attached managed debugger. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the attached debugger. + + The logging event. + + + + Mock target - useful for testing. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + Increases the number of messages. + + The logging event. + + + + Default class for serialization of values to JSON format. + + + + + Singleton instance of the serializer. + + + + + Private. Use + + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + Serialized value. + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + serialisation options + Serialized value. + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + The objects in path (Avoid cyclic reference loop). + The current depth (level) of recursion. + Object serialized successfully (true/false). + + + + No quotes needed for this type? + + + + + Checks the object if it is numeric + + TypeCode for the object + Accept fractional types as numeric type. + + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + all options + JSON escaped string + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + Should non-ascii characters be encoded + + JSON escaped string + + + + Check if cleanup should be performed on initialize new file + + Skip cleanup when initializing new file, just after having performed archive operation + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Characters determining the start of the . + + + + + Characters determining the end of the . + + + + + File name which is used as template for matching and replacements. + It is expected to contain a pattern to match. + + + + + The begging position of the + within the . -1 is returned + when no pattern can be found. + + + + + The ending position of the + within the . -1 is returned + when no pattern can be found. + + + + + Replace the pattern with the specified String. + + + + + + + Archives the log-files using a date style numbering. Archives will be stamped with the + prior period (Year, Month, Day, Hour, Minute) datetime. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Archives the log-files using a date and sequence style numbering. Archives will be stamped + with the prior period (Year, Month, Day) datetime. The most recent archive has the highest number (in + combination with the date). + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Parse filename with date and sequence pattern + + + dateformat for archive + + the found pattern. When failed, then default + the found pattern. When failed, then default + + + + + Archives the log-files using the provided base-archive-filename. If the base-archive-filename causes + duplicate archive filenames, then sequence-style is automatically enforced. + + Example: + Base Filename trace.log + Next Filename trace.0.log + + The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Dynamically converts a non-template archiveFilePath into a correct archiveFilePattern. + Before called the original IFileArchiveMode, that has been wrapped by this + + + + + Determines if the file name as contains a numeric pattern i.e. {#} in it. + + Example: + trace{#}.log Contains the numeric pattern. + trace{###}.log Contains the numeric pattern. + trace{#X#}.log Contains the numeric pattern (See remarks). + trace.log Does not contain the pattern. + + Occasionally, this method can identify the existence of the {#} pattern incorrectly. + File name to be checked. + when the pattern is found; otherwise. + + + + Archives the log-files using a rolling style numbering (the most recent is always #0 then + #1, ..., #N. + + When the number of archive files exceed the obsolete archives + are deleted. + + + + + Replaces the numeric pattern i.e. {#} in a file name with the parameter value. + + File name which contains the numeric pattern. + Value which will replace the numeric pattern. + File name with the value of in the position of the numeric pattern. + + + + Archives the log-files using a sequence style numbering. The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Modes of archiving files based on time. + + + + + Don't archive based on time. + + + + + AddToArchive every year. + + + + + AddToArchive every month. + + + + + AddToArchive daily. + + + + + AddToArchive every hour. + + + + + AddToArchive every minute. + + + + + AddToArchive every Sunday. + + + + + AddToArchive every Monday. + + + + + AddToArchive every Tuesday. + + + + + AddToArchive every Wednesday. + + + + + AddToArchive every Thursday. + + + + + AddToArchive every Friday. + + + + + AddToArchive every Saturday. + + + + + Type of filepath + + + + + Detect of relative or absolute + + + + + Relative path + + + + + Absolute path + + Best for performance + + + + Writes log messages to one or more files. + + Documentation on NLog Wiki + + + + Default clean up period of the initialized files. When a file exceeds the clean up period is removed from the list. + + Clean up period is defined in days. + + + + The maximum number of initialized files before clean up procedures are initiated, + to keep the number of initialized files to a minimum. Chose 25 to cater for monthly rolling of log-files. + + + + + This value disables file archiving based on the size. + + + + + Holds the initialized files each given time by the instance. Against each file, the last write time is stored. + + Last write time is store in local time (no UTC). + + + + List of the associated file appenders with the instance. + + + + + The number of initialized files at any one time. + + + + + The maximum number of archive files that should be kept. + + + + + The maximum days of archive files that should be kept. + + + + + The filename as target + + + + + The archive file name as target + + + + + The date of the previous log event. + + + + + The file name of the previous log event. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the name of the file to write to. + + + This FileName string is a layout which may include instances of layout renderers. + This lets you use a single target to write to multiple files. + + + The following value makes NLog write logging events to files based on the log level in the directory where + the application runs. + ${basedir}/${level}.log + All Debug messages will go to Debug.log, all Info messages will go to Info.log and so on. + You can combine as many of the layout renderers as you want to produce an arbitrary log file name. + + + + + + Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. + If set to false, nothing gets written when the filename is wrong. + + + + + + Is the an absolute or relative path? + + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + + Gets or sets a value indicating whether to delete old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + + + + + + Gets or sets a value indicating whether to replace file contents on each write instead of appending log message at the end. + + + + + + Gets or sets a value indicating whether to keep log file open instead of opening and closing it on each logging event. + + + Setting this property to True helps improve performance. + + + + + + Gets or sets the maximum number of log file names that should be stored as existing. + + + The bigger this number is the longer it will take to write each log record. The smaller the number is + the higher the chance that the clean function will be run when no new files have been opened. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + + Gets or sets the line ending mode. + + + + + + Gets or sets a value indicating whether to automatically flush the file buffers after each log message. + + + + + + Gets or sets the number of files to be kept open. Setting this to a higher value may improve performance + in a situation where a single File target is writing to many files + (such as splitting by level or by logger). + + + The files are managed on a LRU (least recently used) basis, which flushes + the files that have not been used for the longest period of time should the + cache become full. As a rule of thumb, you shouldn't set this parameter to + a very high value. A number like 10-15 shouldn't be exceeded, because you'd + be keeping a large number of files open which consumes system resources. + + + + + + Gets or sets the maximum number of seconds that files are kept open. If this number is negative the files are + not automatically closed after a period of inactivity. + + + + + + Gets or sets the maximum number of seconds before open files are flushed. If this number is negative or zero + the files are not flushed by timer. + + + + + + Gets or sets the log file buffer size in bytes. + + + + + + Gets or sets the file encoding. + + + + + + Gets or sets whether or not this target should just discard all data that its asked to write. + Mostly used for when testing NLog Stack except final write + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on different network hosts. + + + This effectively prevents files from being kept open. + + + + + + Gets or sets a value indicating whether to write BOM (byte order mark) in created files + + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + The actual delay is a random value between 0 and the value specified + in this parameter. On each failed attempt the delay base is doubled + up to times. + + + Assuming that ConcurrentWriteAttemptDelay is 10 the time to wait will be:

+ a random value between 0 and 10 milliseconds - 1st attempt
+ a random value between 0 and 20 milliseconds - 2nd attempt
+ a random value between 0 and 40 milliseconds - 3rd attempt
+ a random value between 0 and 80 milliseconds - 4th attempt
+ ...

+ and so on. + + + + +

+ Gets or sets a value indicating whether to archive old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + After archiving the old file, the current log file will be empty. + + +
+ + + Gets or sets a value of the file size threshold to archive old log file on startup. + + + This option won't work if is set to false + Default value is 0 which means that the file is archived as soon as archival on + startup is enabled. + + + + + + Gets or sets a value specifying the date format to use when archiving files. + + + This option works only when the "ArchiveNumbering" parameter is set either to Date or DateAndSequence. + + + + + + Gets or sets the size in bytes above which log files will be automatically archived. + + Warning: combining this with isn't supported. We cannot create multiple archive files, if they should have the same name. + Choose: + + + Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. + + + + + + Gets or sets a value indicating whether to automatically archive log files every time the specified time passes. + + + Files are moved to the archive as part of the write operation if the current period of time changes. For example + if the current hour changes from 10 to 11, the first write that will occur + on or after 11:00 will trigger the archiving. +

+ Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. +

+
+ +
+ + + Is the an absolute or relative path? + + + + + + Gets or sets the name of the file to be used for an archive. + + + It may contain a special placeholder {#####} + that will be replaced with a sequence of numbers depending on + the archiving strategy. The number of hash characters used determines + the number of numerical digits to be used for numbering files. + + + + + + Gets or sets the maximum number of archive files that should be kept. + + + + + + Gets or sets the maximum days of archive files that should be kept. + + + + + + Gets or sets the way file archives are numbered. + + + + + + Used to compress log files during archiving. + This may be used to provide your own implementation of a zip file compressor, + on platforms other than .Net4.5. + Defaults to ZipArchiveFileCompressor on .Net4.5 and to null otherwise. + + + + + + Gets or sets a value indicating whether to compress archive files into the zip archive format. + + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + + Gets or sets a value indicating whether the footer should be written only when the file is archived. + + + + + + Gets the characters that are appended after each line. + + + + + Refresh the ArchiveFilePatternToWatch option of the . + The log file must be watched for archiving when multiple processes are writing to the same + open file. + + + + + Removes records of initialized files that have not been + accessed in the last two days. + + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Removes records of initialized files that have not been + accessed after the specified date. + + The cleanup threshold. + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Flushes all pending file operations. + + The asynchronous continuation. + + The timeout parameter is ignored, because file APIs don't provide + the needed functionality. + + + + + Returns the suitable appender factory ( ) to be used to generate the file + appenders associated with the instance. + + The type of the file appender factory returned depends on the values of various properties. + + suitable for this instance. + + + + Initializes file logging by creating data structures that + enable efficient multi-file logging. + + + + + Closes the file(s) opened for writing. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Get full filename (=absolute) and cleaned if needed. + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes the specified array of logging events to a file specified in the FileName + parameter. + + An array of objects. + + This function makes use of the fact that the events are batched by sorting + the requests by filename. This optimizes the number of open/close calls + and can help improve performance. + + + + + Returns estimated size for memory stream, based on events count and first event size in bytes. + + Count of events + Bytes count of first event + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Gets the bytes to be written to the file. + + Log event. + Array of bytes that are ready to be written. + + + + Modifies the specified byte array before it gets sent to a file. + + The byte array. + The modified byte array. The function can do the modification in-place. + + + + Gets the bytes to be written to the file. + + The log event to be formatted. + to help format log event. + Optional temporary char-array to help format log event. + Destination for the encoded result. + + + + Formats the log event for write. + + The log event to be formatted. + for the result. + + + + Modifies the specified byte array before it gets sent to a file. + + The LogEvent being written + The byte array. + + + + Archives fileName to archiveFileName. + + File name to be archived. + Name of the archive file. + + + + Gets the correct formatting to be used based on the value of for converting values which will be inserting into file + names during archiving. + + This value will be computed only when a empty value or is passed into + + Date format to used irrespectively of value. + Formatting for dates. + + + + Calculate the DateTime of the requested day of the week. + + The DateTime of the previous log event. + The next occuring day of the week to return a DateTime for. + The DateTime of the next occuring dayOfWeek. + For example: if previousLogEventTimestamp is Thursday 2017-03-02 and dayOfWeek is Sunday, this will return + Sunday 2017-03-05. If dayOfWeek is Thursday, this will return *next* Thursday 2017-03-09. + + + + Invokes the archiving process after determining when and which type of archiving is required. + + File name to be checked and archived. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + + + + Gets the pattern that archive files will match + + Filename of the log file + Log event that the instance is currently processing. + A string with a pattern that will match the archive file names + + + + Archives the file if it should be archived. + + The file name to check for. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + True when archive operation of the file was completed (by this target or a concurrent target) + + + + Closes any active file-appenders that matches the input filenames. + File-appender is requested to invalidate/close its filehandle, but keeping its archive-mutex alive + + + + + Indicates if the automatic archiving process should be executed. + + File name to be written. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the correct filename to archive + + + + + + Gets the file name for archiving, or null if archiving should not occur based on file size. + + File name to be written. + The size in bytes of the next chunk of data to be written in the file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the file name for archiving, or null if archiving should not occur based on date/time. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Truncates the input-time, so comparison of low resolution times (like dates) are not affected by ticks + + High resolution Time + Time Resolution Level + Truncated Low Resolution Time + + + + Evaluates which parts of a file should be written (header, content, footer) based on various properties of + instance and writes them. + + File name to be written. + Raw sequence of to be written into the content part of the file. + File has just been opened. + + + + Initialise a file to be used by the instance. Based on the number of initialized + files and the values of various instance properties clean up and/or archiving processes can be invoked. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file (DateTime.MinValue if just initialized). + + + + Writes the file footer and finalizes the file in instance internal structures. + + File name to close. + Indicates if the file is being finalized for archiving. + + + + Writes the footer information to a file. + + The file path to write to. + + + + Decision logic whether to archive logfile on startup. + and properties. + + File name to be written. + Decision whether to archive or not. + + + + Invokes the archiving and clean up of older archive file based on the values of + and + properties respectively. + + File name to be written. + Log event that the instance is currently processing. + + + + Creates the file specified in and writes the file content in each entirety i.e. + Header, Content and Footer. + + The name of the file to be written. + Sequence of to be written in the content section of the file. + First attempt to write? + This method is used when the content of the log file is re-written on every write. + + + + Writes the header information and byte order mark to a file. + + File appender associated with the file. + + + + The sequence of to be written in a file after applying any formatting and any + transformations required from the . + + The layout used to render output message. + Sequence of to be written. + Usually it is used to render the header and hooter of the files. + + + + Check if cleanup should be performed on initialize new file + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Create a wildcard file-mask that allows one to find all files belonging to the same archive. + + Base archive file pattern + Wildcard file-mask + + + + Search directory for all existing files that are part of the same archive. + + Base archive file pattern + + + + + Generate the next archive filename for the archive. + + Base archive file pattern + File date of archive + Existing files in the same archive + + + + + Return all files that should be removed from the provided archive. + + Base archive file pattern + Existing files in the same archive + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + + + + may be configured to compress archived files in a custom way + by setting before logging your first event. + + + + + Create archiveFileName by compressing fileName. + + Absolute path to the log file to compress. + Absolute path to the compressed archive file to create. + + + + Interface for serialization of values, maybe even objects to JSON format. + Useful for wrappers for existing serializers. + + + + + Returns a serialization of an object + into JSON format. + + The object to serialize to JSON. + Serialized value (null = Serialize failed). + + + + Options for JSON serialisation + + + + + Add quotes around object keys? + + + + + Format provider for value + + + + + Format string for value + + + + + Should non-ascii characters be encoded + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + Serialize enum as string value + + + + + Should dictionary keys be sanitized. All characters must either be letters, numbers or underscore character (_). + + Any other characters will be converted to underscore character (_) + + + + + How far down the rabbit hole should the Json Serializer go with object-reflection before stopping + + + + Initializes a new instance of the class. + + + + Line ending mode. + + + + + Insert platform-dependent end-of-line sequence after each line. + + + + + Insert CR LF sequence (ASCII 13, ASCII 10) after each line. + + + + + Insert CR character (ASCII 13) after each line. + + + + + Insert LF character (ASCII 10) after each line. + + + + + Insert null terminator (ASCII 0) after each line. + + + + + Do not insert any line ending. + + + + + Gets the name of the LineEndingMode instance. + + + + + Gets the new line characters (value) of the LineEndingMode instance. + + + + + Initializes a new instance of . + + The mode name. + The new line characters to be used. + + + + Returns the that corresponds to the supplied . + + + The textual representation of the line ending mode, such as CRLF, LF, Default etc. + Name is not case sensitive. + + The value, that corresponds to the . + There is no line ending mode with the specified name. + + + + Compares two objects and returns a + value indicating whether the first one is equal to the second one. + + The first level. + The second level. + The value of mode1.NewLineCharacters == mode2.NewLineCharacters. + + + + Compares two objects and returns a + value indicating whether the first one is not equal to the second one. + + The first mode + The second mode + The value of mode1.NewLineCharacters != mode2.NewLineCharacters. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms + and data structures like a hash table. + + + + + Determines whether the specified is + equal to this instance. + + The to compare with + this instance. + + Value of true if the specified + is equal to this instance; otherwise, false. + + + The parameter is null. + + + + Indicates whether the current object is equal to another object of the same type. + true if the current object is equal to the parameter; otherwise, false. + An object to compare with this object. + + + + Provides a type converter to convert objects to and from other representations. + + + + + Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. + + + true if this converter can perform the conversion; otherwise, false. + + An that provides a format context. A that represents the type you want to convert from. + + + + Converts the given object to the type of this converter, using the specified context and culture information. + + + An that represents the converted value. + + An that provides a format context. The to use as the current culture. The to convert. The conversion cannot be performed. + + + + Writes log messages to an ArrayList in memory for programmatic retrieval. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the list of logs gathered in the . + + + + + Gets or sets the max number of items to have in memory + + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + A parameter to MethodCall. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout to use for parameter value. + + + + Initializes a new instance of the class. + + Name of the parameter. + The layout. + + + + Initializes a new instance of the class. + + The name of the parameter. + The layout. + The type of the parameter. + + + + Gets or sets the name of the parameter. + + + + + + Gets or sets the type of the parameter. Obsolete alias for + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets the class name. + + + + + + Gets or sets the method name. The method must be public and static. + + Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx + e.g. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Initializes a new instance of the class. + + Name of the target. + Method to call on logevent. + + + + Initializes the target. + + + + + Calls the specified Method. + + Method parameters. + The logging event. + + + + Calls the specified Method. + + Method parameters. + + + + The base class for all targets which call methods (local or remote). + Manages parameters and type coercion. + + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + + + + Prepares an array of parameters to be passed based on the logging event and calls DoInvoke(). + + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Sends log messages over the network. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ To print the results, use any application that's able to receive messages over + TCP or UDP. NetCat is + a simple but very powerful command-line tool that can be used for that. This image + demonstrates the NetCat tool receiving log messages from Network target. +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will be very slow. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+

+ There are two specialized versions of the Network target: Chainsaw + and NLogViewer which write to instances of Chainsaw log4j viewer + or NLogViewer application respectively. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6) (not supported on Windows Phone 7.0)
  • +
  • tcp4://host:port - force TCP/IPv4 (not supported on Windows Phone 7.0)
  • +
  • tcp6://host:port - force TCP/IPv6 (not supported on Windows Phone 7.0)
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6, not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp4://host:port - force UDP/IPv4 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp6://host:port - force UDP/IPv6 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • http://host:port/pageName - HTTP using POST verb
  • +
  • https://host:port/pageName - HTTPS using POST verb
  • +
+ For SOAP-based webservice support over HTTP use WebService target. +
+ +
+ + + Gets or sets a value indicating whether to keep connection open whenever possible. + + + + + + Gets or sets a value indicating whether to append newline at the end of log message. + + + + + + Gets or sets the end of line value if a newline is appended at the end of log message . + + + + + + Gets or sets the maximum message size in bytes. + + + + + + Gets or sets the size of the connection cache (number of connections which are kept alive). + + + + + + Gets or sets the maximum current connections. 0 = no maximum. + + + + + + Gets or sets the action that should be taken if the will be more connections than . + + + + + + Gets or sets the maximum queue size. + + + + + + Gets or sets the action that should be taken if the message is larger than + maxMessageSize. + + + + + + Gets or sets the encoding to be used. + + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Sends the + rendered logging event over the network optionally concatenating it with a newline character. + + The logging event. + + + + Try to remove. + + + + + removed something? + + + + Gets the bytes to be written. + + Log event. + Byte array. + + + + The action to be taken when there are more connections then the max. + + + + + Just allow it. + + + + + Discard the connection item. + + + + + Block until there's more room in the queue. + + + + + Action that should be taken if the message overflows. + + + + + Report an error. + + + + + Split the message into smaller pieces. + + + + + Discard the entire message. + + + + + Represents a parameter to a NLogViewer target. + + + + + Initializes a new instance of the class. + + + + + Gets or sets viewer parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + Sends log messages to the remote instance of NLog Viewer. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include stack contents. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets the layout renderer which produces Log4j-compatible XML events. + + + + + Gets or sets the instance of that is used to format log messages. + + + + + + Discards log messages. Used mainly for debugging and benchmarking. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets a value indicating whether to perform layout calculation. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Does nothing. Optionally it calculates the layout text but + discards the results. + + The logging event. + + + + Outputs log messages through the OutputDebugString() Win32 API. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Outputs the rendered logging event through the OutputDebugString() Win32 API. + + The logging event. + + + + Represents logging target. + + + + Are all layouts in this target thread-agnostic, if so we don't precalculate the layouts + + + + The Max StackTraceUsage of all the in this Target + + + + + Gets or sets the name of the target. + + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers + Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + Gets the object which can be used to synchronize asynchronous operations that must rely on the . + + + + + Gets the logging configuration this target is part of. + + + + + Gets a value indicating whether the target has been initialized. + + + + + Can be used if has been enabled. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Closes the target. + + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Calls the on each volatile layout + used by this target. + This method won't prerender if all layouts in this target are thread-agnostic. + + + The log event. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Writes the log to the target. + + Log event to write. + + + + Writes the array of log events. + + The log events. + + + + Writes the array of log events. + + The log events. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Closes the target and releases any unmanaged resources. + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Writes async log event to the log target. + + Async Log event to be written out. + + + + Writes a log event to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Log event to be written out. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + NOTE! Obsolete, instead override WriteAsyncThreadSafe(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target, in a thread safe manner. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Writes an array of logging events to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Merges (copies) the event context properties from any event info object stored in + parameters of the given event info object. + + The event info object to perform the merge to. + + + + Renders the event info in layout. + + The layout. + The event info. + String representing log event. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Should the exception be rethrown? + + + Upgrade to private protected when using C# 7.2 + + + + Marks class as a logging target and assigns a name to it. + + This attribute is not required when registering the target in the API. + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets a value indicating whether to the target is a wrapper target (used to generate the target summary documentation page). + + + + + Gets or sets a value indicating whether to the target is a compound target (used to generate the target summary documentation page). + + + + + Attribute details for + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Gets or sets when an empty value should cause the property to be included + + + + + Gets or sets the type of the property. + + + + + Represents target that supports context capture using MDLC, MDC, NDLC and NDC + + + + + + + + + + + + + + + + + + + + + + + Gets or sets a value indicating whether to include contents of the dictionary + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the + + + + + + Gets the array of custom attributes to be passed into the logevent context + + + + + + Constructor + + + + + + + + Check if logevent has properties (or context properties) + + + True if properties should be included + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Dictionary with any context properties for the logEvent (Null if none found) + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Optional prefilled dictionary + Dictionary with any context properties for the logEvent (Null if none found) + + + + Creates combined dictionary of all configured properties for logEvent + + + Dictionary with all collected properties for logEvent + + + + Creates combined dictionary of all configured properties for logEvent + + + Optional prefilled dictionary + Dictionary with all collected properties for logEvent + + + + Generates a new unique name, when duplicate names are detected + + LogEvent that triggered the duplicate name + Duplicate item name + Item Value + Dictionary of context values + New (unique) value (or null to skip value). If the same value is used then the item will be overwritten + + + + Returns the captured snapshot of for the + + + Dictionary with MDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with GDC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDC key + MDC value + Snapshot of MDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDC value + Snapshot of NDC value + Include object value in snapshot + + + + Take snapshot of a single object value + + Log event + Key Name (null when NDC / NDLC) + Object Value + Snapshot of value + Include object value in snapshot + + + Internal Layout that allows capture of MDC context + + + Internal Layout that allows capture of NDC context + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the layout used to format log messages. + + + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the text to be rendered. + + + + + + Gets or sets the footer. + + + + + + Gets or sets the header. + + + + + + Gets or sets the layout with header and footer. + + The layout with header and footer. + + + + Web service protocol. + + + + + Use SOAP 1.1 Protocol. + + + + + Use SOAP 1.2 Protocol. + + + + + Use HTTP POST Protocol. + + + + + Use HTTP GET Protocol. + + + + + Do an HTTP POST of a JSON document. + + + + + Do an HTTP POST of an XML document. + + + + + Web Service Proxy Configuration Type + + + + + Default proxy configuration from app.config (System.Net.WebRequest.DefaultWebProxy) + + + Example of how to configure default proxy using app.config + + <system.net> + <defaultProxy enabled = "true" useDefaultCredentials = "true" > + <proxy usesystemdefault = "True" /> + </defaultProxy> + </system.net> + + + + + + Automatic use of proxy with authentication (cached) + + + + + Disables use of proxy (fast) + + + + + Custom proxy address (cached) + + + + + Calls the specified web service on each log message. + + Documentation on NLog Wiki + + The web service must implement a method that accepts a number of string parameters. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

The example web service that works with this example is shown below

+ +
+
+ + + dictionary that maps a concrete implementation + to a specific -value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target + + + + Gets or sets the web service URL. + + + + + + Gets or sets the Web service method name. Only used with Soap. + + + + + + Gets or sets the Web service namespace. Only used with Soap. + + + + + + Gets or sets the protocol to be used when calling web service. + + + + + + Gets or sets the custom proxy address, include port separated by a colon + + + + + + Should we include the BOM (Byte-order-mark) for UTF? Influences the property. + + This will only work for UTF-8. + + + + + + Gets or sets the encoding. + + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Gets or sets the name of the root XML element, + if POST of XML document chosen. + If so, this property must not be null. + (see and ). + + + + + + Gets or sets the (optional) root namespace of the XML document, + if POST of XML document chosen. + (see and ). + + + + + + Gets the array of parameters to be passed. + + + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Invokes the web service method. + + Parameters to be passed. + The logging event. + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Builds the URL to use when calling the web service for a message, depending on the WebServiceProtocol. + + + + + + + Write from input to output. Fix the UTF-8 bom + + + + + + + + + base class for POST formatters, that + implement former PrepareRequest() method, + that creates the content for + the requested kind of HTTP request + + + + + Asynchronous request queue. + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Gets the number of requests currently in the queue. + + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + Queue was empty before enqueue + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued (-1 means everything). + The array of log events. + + + + Dequeues into a preallocated array, instead of allocating a new one + + Maximum number of items to be dequeued + Preallocated list + + + + Clears the queue. + + + + + Gets or sets the request limit. + + + + + Gets or sets the action to be taken when there's no more room in + the queue and another request is enqueued. + + + + + Notifies about log event that was dropped when set to + + + + + Notifies when queue size is growing over + + + + + Raise event when queued element was dropped because of queue overflow + + Dropped queue item + + + + Raise event when RequestCount overflow + + current requests count + + + + Provides asynchronous, buffered execution of target writes. + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queueing + messages and processing them in a separate thread. You should wrap targets + that spend a non-trivial amount of time in their Write() method with asynchronous + target to speed up logging. +

+

+ Because asynchronous logging is quite a common scenario, NLog supports a + shorthand notation for wrapping all targets with AsyncWrapper. Just add async="true" to + the <targets/> element in the configuration file. +

+ + + ... your targets go here ... + + ]]> +
+ +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of requests in the queue. + The action to be taken when the queue overflows. + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Gets or sets the time in milliseconds to sleep between batches. (1 or less means trigger on new activity) + + + + + + Raise event when Target cannot store LogEvent. + Event arg contains lost LogEvents + + + + + Raises when event queue grow. + Queue can grow when was set to + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the limit of full s to write before yielding into + Performance is better when writing many small batches, than writing a single large batch + + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + + Gets the queue of lazy writer thread requests. + + + + + Schedules a flush of pending events in the queue (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target by starting the lazy writer timer. + + + + + Shuts down the lazy writer timer. + + + + + Starts the lazy writer thread which periodically writes + queued log messages. + + + + + Attempts to start an instant timer-worker-thread which can write + queued log messages. + + Returns true when scheduled a timer-worker-thread + + + + Stops the lazy writer thread. + + + + + Adds the log event to asynchronous queue to be processed by + the lazy writer thread. + + The log event. + + The is called + to ensure that the log event can be processed in another thread. + + + + + Write to queue without locking + + + + + + The action to be taken when the queue overflows. + + + + + Grow the queue. + + + + + Discard the overflowing item. + + + + + Block until there's more room in the queue. + + + + + Causes a flush on a wrapped target if LogEvent satisfies the . + If condition isn't set, flushes on each write. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Gets or sets the condition expression. Log events who meet this condition will cause + a flush on the wrapped target. + + + + + + Delay the flush until the LogEvent has been confirmed as written + + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + The wrapped target. + Name of the target + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes the target. + + + + + Forwards the call to the .Write() + and calls on it if LogEvent satisfies + the flush condition or condition is null. + + Logging event to be written out. + + + + Schedules a flush operation, that triggers when all pending flush operations are completed (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + The action to take when the buffer overflows. + + + + Gets or sets the number of log events to be buffered. + + + + + + Gets or sets the timeout (in milliseconds) after which the contents of buffer will be flushed + if there's no write in the specified period of time. Use -1 to disable timed flushes. + + + + + + Gets or sets a value indicating whether to use sliding timeout. + + + This value determines how the inactivity period is determined. If sliding timeout is enabled, + the inactivity timer is reset after each write, if it is disabled - inactivity timer will + count from the first event written to the buffer. + + + + + + Gets or sets the action to take if the buffer overflows. + + + Setting to will replace the + oldest event with new events without sending events down to the wrapped target, and + setting to will flush the + entire buffer to the wrapped target. + + + + + + Flushes pending events in the buffer (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target. + + + + + Closes the target by flushing pending events in the buffer (if any). + + + + + Adds the specified log event to the buffer and flushes + the buffer in case the buffer gets full. + + The log event. + + + + The action to be taken when the buffer overflows. + + + + + Flush the content of the buffer. + + + + + Discard the oldest item. + + + + + A base class for targets which wrap other (multiple) targets + and provide various forms of target routing. + + + + + Initializes a new instance of the class. + + The targets. + + + + Gets the collection of targets managed by this compound target. + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Writes logging event to the log target. + + Logging event to be written out. + + + + Flush any pending log messages for all wrapped targets. + + The asynchronous continuation. + + + + Provides fallback-on-error. + + Documentation on NLog Wiki + +

This example causes the messages to be written to server1, + and if it fails, messages go to server2.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Gets or sets a value indicating whether to return to the first target after any successful write. + + + + + + + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + The method remembers the last-known-successful target + and starts the iteration from it. + If is set, the method + resets the target to the first target + stored in . + + + + + Filtering rule for . + + + + + Initializes a new instance of the FilteringRule class. + + + + + Initializes a new instance of the FilteringRule class. + + Condition to be tested against all events. + Filter to apply to all log events when the first condition matches any of them. + + + + Gets or sets the condition to be tested. + + + + + + Gets or sets the resulting filter to be applied when the condition matches. + + + + + + Filters log entries based on a condition. + + Documentation on NLog Wiki + +

This example causes the messages not contains the string '1' to be ignored.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The condition. + + + + Initializes a new instance of the class. + + The wrapped target. + The condition. + + + + Gets or sets the condition expression. Log events who meet this condition will be forwarded + to the wrapped target. + + + + + + Gets or sets the filter. Log events who evaluates to will be discarded + + + + + + + + + Checks the condition against the passed log event. + If the condition is met, the log event is forwarded to + the wrapped target. + + Log event. + + + + + + + Limits the number of messages written per timespan to the wrapped target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of messages written per interval. + Interval in which the maximum number of messages can be written. + + + + Gets or sets the maximum allowed number of messages written per . + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets or sets the interval in which messages will be written up to the number of messages. + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets the DateTime when the current will be reset. + + + + + + Gets the number of written in the current . + + + + + + Initializes the target and resets the current Interval and . + + + + + Writes log event to the wrapped target if the current is lower than . + If the is already reached, no log event will be written to the wrapped target. + resets when the current is expired. + + Log event to be written out. + + + + Arguments for events. + + + + + + + + Instance of that was dropped by + + + + + Raises by when + queue is full + and set to + By default queue doubles it size. + + + + + Contains items count and new queue size. + + Required queue size + Current queue size + + + + New queue size + + + + + Current requests count + + + + + Filters buffered log entries based on a set of conditions that are evaluated on a group of events. + + Documentation on NLog Wiki + + PostFilteringWrapper must be used with some type of buffering target or wrapper, such as + AsyncTargetWrapper, BufferingWrapper or ASPNetBufferingWrapper. + + +

+ This example works like this. If there are no Warn,Error or Fatal messages in the buffer + only Info messages are written to the file, but if there are any warnings or errors, + the output includes detailed trace (levels >= Debug). You can plug in a different type + of buffering wrapper (such as ASPNetBufferingWrapper) to achieve different + functionality. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Gets or sets the default filter to be applied when no specific rule matches. + + + + + + Gets the collection of filtering rules. The rules are processed top-down + and the first rule that matches determines the filtering condition to + be applied to log events. + + + + + + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Evaluates all filtering rules to find the first one that matches. + The matching rule determines the filtering condition to be applied + to all items in a buffer. If no condition matches, default filter + is applied to the array of log events. + + Array of log events to be post-filtered. + + + + Evaluate all the rules to get the filtering condition + + + + + + + Sends log messages to a randomly selected target. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt + chosen randomly on a per-message basis. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the log event to one of the sub-targets. + The sub-target is randomly chosen. + + The log event. + + + + Repeats each log event the specified number of times. + + Documentation on NLog Wiki + +

This example causes each log message to be repeated 3 times.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The repeat count. + + + + Initializes a new instance of the class. + + The wrapped target. + The repeat count. + + + + Gets or sets the number of times to repeat each log message. + + + + + + Forwards the log message to the by calling the method times. + + The log event. + + + + Retries in case of write error. + + Documentation on NLog Wiki + +

This example causes each write attempt to be repeated 3 times, + sleeping 1 second between attempts if first one fails.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Initializes a new instance of the class. + + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Gets or sets the number of retries that should be attempted on the wrapped target in case of a failure. + + + + + + Gets or sets the time to wait between retries in milliseconds. + + + + + + Special SyncObject to allow closing down Target while busy retrying + + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Writes the specified log event to the wrapped target in a thread-safe manner. + + The log event. + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Distributes log events to targets in a round-robin fashion. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt. + Each odd message is written to file2.txt, each even message goes to file1.txt. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Ensures forwarding happens without holding lock + + + + + + Forwards the write to one of the targets from + the collection. + + The log event. + + The writes are routed in a round-robin fashion. + The first log event goes to the first target, the second + one goes to the second target and so on looping to the + first target when there are no more targets available. + In general request N goes to Targets[N % Targets.Count]. + + + + + Writes log events to all targets. + + Documentation on NLog Wiki + +

This example causes the messages to be written to both file1.txt or file2.txt +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the specified log event to all sub-targets. + + The log event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Base class for targets wrap other (single) targets. + + + + + Gets or sets the target that is wrapped by this target. + + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Current local time retrieved directly from DateTime.Now. + + + + + Gets current local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Current UTC time retrieved directly from DateTime.UtcNow. + + + + + Gets current UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Fast time source that updates current time only once per tick (15.6 milliseconds). + + + + + Gets raw uncached time from derived time source. + + + + + Gets current time cached for one system tick (15.6 milliseconds). + + + + + Fast local time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Fast UTC time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Defines source of current time. + + + + + Gets current time. + + + + + Gets or sets current global time source used in all log events. + + + Default time source is . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to the same form + as time values originated from this source. + + + + There are situations when NLog have to compare the time originated from TimeSource + to the time originated externally in the system. + To be able to provide meaningful result of such comparisons the system time must be expressed in + the same form as TimeSource time. + + + Examples: + - If the TimeSource provides time values of local time, it should also convert the provided + to the local time. + - If the TimeSource shifts or skews its time values, it should also apply + the same transform to the given . + + + + + + Marks class as a time source and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the time source. + + + + Define Localizable attribute for platforms that don't have it. + + + + + Initializes a new instance of the class. + + Determines whether the target is localizable. + + + + Gets or sets a value indicating whether the target is localizable. + + + + diff --git a/packages/NLog.4.7.2/lib/xamarinios10/NLog.dll b/packages/NLog.4.7.2/lib/xamarinios10/NLog.dll new file mode 100644 index 0000000000000000000000000000000000000000..bd89a1b1aa73c5c2b2578bbe59918119a8946bbe GIT binary patch literal 764416 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
TF*xUp6a-|`0fv|nr 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

U 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%0AEX1ehu>Sb!i7WMlk`}%glCBP_HV~|tdGg-9>e^U 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

M>`dy3h|}`wRmvt{^_VEQF=yQ)HqTMPbDl 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 + + + NLog + + + +

+ Indicates that the value of the marked element could be null sometimes, + so the check for null is necessary before its usage. + + + [CanBeNull] object Test() => null; + + void UseTest() { + var p = Test(); + var s = p.ToString(); // Warning: Possible 'System.NullReferenceException' + } + + + + + Indicates that the value of the marked element could never be null. + + + [NotNull] object Foo() { + return null; // Warning: Possible 'null' assignment + } + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can never be null. + + + + + Can be applied to symbols of types derived from IEnumerable as well as to symbols of Task + and Lazy classes to indicate that the value of a collection item, of the Task.Result property + or of the Lazy.Value property can be null. + + + + + Indicates that the marked method builds string by format pattern and (optional) arguments. + Parameter, which contains format string, should be given in constructor. The format string + should be in -like form. + + + [StringFormatMethod("message")] + void ShowError(string message, params object[] args) { /* do something */ } + + void Foo() { + ShowError("Failed: {0}"); // Warning: Non-existing argument in format string + } + + + + + Specifies which parameter of an annotated method should be treated as format-string + + + + + For a parameter that is expected to be one of the limited set of values. + Specify fields of which type should be used as values for this parameter. + + + + + Indicates that the function argument should be string literal and match one + of the parameters of the caller function. For example, ReSharper annotates + the parameter of . + + + void Foo(string param) { + if (param == null) + throw new ArgumentNullException("par"); // Warning: Cannot resolve symbol + } + + + + + Indicates that the method is contained in a type that implements + System.ComponentModel.INotifyPropertyChanged interface and this method + is used to notify that some property value changed. + + + The method should be non-static and conform to one of the supported signatures: + + NotifyChanged(string) + NotifyChanged(params string[]) + NotifyChanged{T}(Expression{Func{T}}) + NotifyChanged{T,U}(Expression{Func{T,U}}) + SetProperty{T}(ref T, T, string) + + + + public class Foo : INotifyPropertyChanged { + public event PropertyChangedEventHandler PropertyChanged; + + [NotifyPropertyChangedInvocator] + protected virtual void NotifyChanged(string propertyName) { ... } + + string _name; + + public string Name { + get { return _name; } + set { _name = value; NotifyChanged("LastName"); /* Warning */ } + } + } + + Examples of generated notifications: + + NotifyChanged("Property") + NotifyChanged(() => Property) + NotifyChanged((VM x) => x.Property) + SetProperty(ref myField, value, "Property") + + + + + + Describes dependency between method input and output. + + +

Function Definition Table syntax:

+ + FDT ::= FDTRow [;FDTRow]* + FDTRow ::= Input => Output | Output <= Input + Input ::= ParameterName: Value [, Input]* + Output ::= [ParameterName: Value]* {halt|stop|void|nothing|Value} + Value ::= true | false | null | notnull | canbenull + + If method has single input parameter, it's name could be omitted.
+ Using halt (or void/nothing, which is the same) for method output + means that the methods doesn't return normally (throws or terminates the process).
+ Value canbenull is only applicable for output parameters.
+ You can use multiple [ContractAnnotation] for each FDT row, or use single attribute + with rows separated by semicolon. There is no notion of order rows, all rows are checked + for applicability and applied per each program state tracked by R# analysis.
+
+ + + [ContractAnnotation("=> halt")] + public void TerminationMethod() + + + [ContractAnnotation("halt <= condition: false")] + public void Assert(bool condition, string text) // regular assertion method + + + [ContractAnnotation("s:null => true")] + public bool IsNullOrEmpty(string s) // string.IsNullOrEmpty() + + + // A method that returns null if the parameter is null, + // and not null if the parameter is not null + [ContractAnnotation("null => null; notnull => notnull")] + public object Transform(object data) + + + [ContractAnnotation("=> true, result: notnull; => false, result: null")] + public bool TryParse(string s, out Person result) + + +
+ + + Indicates that marked element should be localized or not. + + + [LocalizationRequiredAttribute(true)] + class Foo { + string str = "my string"; // Warning: Localizable string + } + + + + + Indicates that the value of the marked type (or its derivatives) + cannot be compared using '==' or '!=' operators and Equals() + should be used instead. However, using '==' or '!=' for comparison + with null is always permitted. + + + [CannotApplyEqualityOperator] + class NoEquality { } + + class UsesNoEquality { + void Test() { + var ca1 = new NoEquality(); + var ca2 = new NoEquality(); + if (ca1 != null) { // OK + bool condition = ca1 == ca2; // Warning + } + } + } + + + + + When applied to a target attribute, specifies a requirement for any type marked + with the target attribute to implement or inherit specific type or types. + + + [BaseTypeRequired(typeof(IComponent)] // Specify requirement + class ComponentAttribute : Attribute { } + + [Component] // ComponentAttribute requires implementing IComponent interface + class MyComponent : IComponent { } + + + + + Indicates that the marked symbol is used implicitly (e.g. via reflection, in external library), + so this symbol will not be marked as unused (as well as by other usage inspections). + + + + + Should be used on attributes and causes ReSharper to not mark symbols marked with such attributes + as unused (as well as by other usage inspections) + + + + Only entity marked with attribute considered used. + + + Indicates implicit assignment to a member. + + + + Indicates implicit instantiation of a type with fixed constructor signature. + That means any unused constructor parameters won't be reported as such. + + + + Indicates implicit instantiation of a type. + + + + Specify what is considered used implicitly when marked + with or . + + + + Members of entity marked with attribute are considered used. + + + Entity marked with attribute and all its members considered used. + + + + This attribute is intended to mark publicly available API + which should not be removed and so is treated as used. + + + + + Tells code analysis engine if the parameter is completely handled when the invoked method is on stack. + If the parameter is a delegate, indicates that delegate is executed while the method is executed. + If the parameter is an enumerable, indicates that it is enumerated while the method is executed. + + + + + Indicates that a method does not make any observable state changes. + The same as System.Diagnostics.Contracts.PureAttribute. + + + [Pure] int Multiply(int x, int y) => x * y; + + void M() { + Multiply(123, 42); // Waring: Return value of pure method is not used + } + + + + + Indicates that the return value of method invocation must be used. + + + + + Indicates the type member or parameter of some type, that should be used instead of all other ways + to get the value that type. This annotation is useful when you have some "context" value evaluated + and stored somewhere, meaning that all other ways to get this value must be consolidated with existing one. + + + class Foo { + [ProvidesContext] IBarService _barService = ...; + + void ProcessNode(INode node) { + DoSomething(node, node.GetGlobalServices().Bar); + // ^ Warning: use value of '_barService' field + } + } + + + + + Indicates that a parameter is a path to a file or a folder within a web project. + Path can be relative or absolute, starting from web root (~). + + + + + An extension method marked with this attribute is processed by ReSharper code completion + as a 'Source Template'. When extension method is completed over some expression, it's source code + is automatically expanded like a template at call site. + + + Template method body can contain valid source code and/or special comments starting with '$'. + Text inside these comments is added as source code when the template is applied. Template parameters + can be used either as additional method parameters or as identifiers wrapped in two '$' signs. + Use the attribute to specify macros for parameters. + + + In this example, the 'forEach' method is a source template available over all values + of enumerable types, producing ordinary C# 'foreach' statement and placing caret inside block: + + [SourceTemplate] + public static void forEach<T>(this IEnumerable<T> xs) { + foreach (var x in xs) { + //$ $END$ + } + } + + + + + + Allows specifying a macro for a parameter of a source template. + + + You can apply the attribute on the whole method or on any of its additional parameters. The macro expression + is defined in the property. When applied on a method, the target + template parameter is defined in the property. To apply the macro silently + for the parameter, set the property value = -1. + + + Applying the attribute on a source template method: + + [SourceTemplate, Macro(Target = "item", Expression = "suggestVariableName()")] + public static void forEach<T>(this IEnumerable<T> collection) { + foreach (var item in collection) { + //$ $END$ + } + } + + Applying the attribute on a template method parameter: + + [SourceTemplate] + public static void something(this Entity x, [Macro(Expression = "guid()", Editable = -1)] string newguid) { + /*$ var $x$Id = "$newguid$" + x.ToString(); + x.DoSomething($x$Id); */ + } + + + + + + Allows specifying a macro that will be executed for a source template + parameter when the template is expanded. + + + + + Allows specifying which occurrence of the target parameter becomes editable when the template is deployed. + + + If the target parameter is used several times in the template, only one occurrence becomes editable; + other occurrences are changed synchronously. To specify the zero-based index of the editable occurrence, + use values >= 0. To make the parameter non-editable when the template is expanded, use -1. + > + + + + Identifies the target parameter of a source template if the + is applied on a template method. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC action. If applied to a method, the MVC action name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC area. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is + an MVC controller. If applied to a method, the MVC controller name is calculated + implicitly from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.ChildActionExtensions.RenderAction(HtmlHelper, String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC Master. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC model type. Use this attribute + for custom wrappers similar to System.Web.Mvc.Controller.View(String, Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter is an MVC + partial view. If applied to a method, the MVC partial view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.RenderPartialExtensions.RenderPartial(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Allows disabling inspections for MVC views within a class or a method. + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC display template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.DisplayExtensions.DisplayForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC editor template. + Use this attribute for custom wrappers similar to + System.Web.Mvc.Html.EditorExtensions.EditorForModel(HtmlHelper, String). + + + + + ASP.NET MVC attribute. Indicates that a parameter is an MVC template. + Use this attribute for custom wrappers similar to + System.ComponentModel.DataAnnotations.UIHintAttribute(System.String). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component. If applied to a method, the MVC view name is calculated implicitly + from the context. Use this attribute for custom wrappers similar to + System.Web.Mvc.Controller.View(Object). + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component name. + + + + + ASP.NET MVC attribute. If applied to a parameter, indicates that the parameter + is an MVC view component view. If applied to a method, the MVC view component view name is default. + + + + + ASP.NET MVC attribute. When applied to a parameter of an attribute, + indicates that this parameter is an MVC action name. + + + [ActionName("Foo")] + public ActionResult Login(string returnUrl) { + ViewBag.ReturnUrl = Url.Action("Foo"); // OK + return RedirectToAction("Bar"); // Error: Cannot resolve action + } + + + + + Razor attribute. Indicates that a parameter or a method is a Razor section. + Use this attribute for custom wrappers similar to + System.Web.WebPages.WebPageBase.RenderSection(String). + + + + + Indicates how method, constructor invocation or property access + over collection type affects content of the collection. + + + + Method does not use or modify content of the collection. + + + Method only reads content of the collection but does not modify it. + + + Method can change content of the collection but does not add new elements. + + + Method can add new elements to the collection. + + + + Indicates that the marked method is assertion method, i.e. it halts control flow if + one of the conditions is satisfied. To set the condition, mark one of the parameters with + attribute. + + + + + Indicates the condition parameter of the assertion method. The method itself should be + marked by attribute. The mandatory argument of + the attribute is the assertion type. + + + + + Specifies assertion type. If the assertion method argument satisfies the condition, + then the execution continues. Otherwise, execution is assumed to be halted. + + + + Marked parameter should be evaluated to true. + + + Marked parameter should be evaluated to false. + + + Marked parameter should be evaluated to null value. + + + Marked parameter should be evaluated to not null value. + + + + Indicates that the marked method unconditionally terminates control flow execution. + For example, it could unconditionally throw exception. + + + + + Indicates that method is pure LINQ method, with postponed enumeration (like Enumerable.Select, + .Where). This annotation allows inference of [InstantHandle] annotation for parameters + of delegate type by analyzing LINQ method chains. + + + + + Indicates that IEnumerable, passed as parameter, is not enumerated. + + + + + Indicates that parameter is regular expression pattern. + + + + + Prevents the Member Reordering feature from tossing members of the marked class. + + + The attribute must be mentioned in your member reordering patterns + + + + + XAML attribute. Indicates the type that has ItemsSource property and should be treated + as ItemsControl-derived type, to enable inner items DataContext type resolve. + + + + + XAML attribute. Indicates the property of some BindingBase-derived type, that + is used to bind some item of ItemsControl-derived type. This annotation will + enable the DataContext type resolve for XAML bindings for such properties. + + + Property should have the tree ancestor of the ItemsControl type or + marked with the attribute. + + + + + Support implementation of + + + + + + + + + + + + + + + + + Asynchronous continuation delegate - function invoked at the end of asynchronous + processing. + + Exception during asynchronous processing or null if no exception + was thrown. + + + + Helpers for asynchronous operations. + + + + + Iterates over all items in the given collection and runs the specified action + in sequence (each action executes only after the preceding one has completed without an error). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Repeats the specified asynchronous action multiple times and invokes asynchronous continuation at the end. + + The repeat count. + The asynchronous continuation to invoke at the end. + The action to invoke. + + + + Modifies the continuation by pre-pending given action to execute just before it. + + The async continuation. + The action to pre-pend. + Continuation which will execute the given action before forwarding to the actual continuation. + + + + Attaches a timeout to a continuation which will invoke the continuation when the specified + timeout has elapsed. + + The asynchronous continuation. + The timeout. + Wrapped continuation. + + + + Iterates over all items in the given collection and runs the specified action + in parallel (each action executes on a thread from thread pool). + + Type of each item. + The items to iterate. + The asynchronous continuation to invoke once all items + have been iterated. + The action to invoke for each item. + + + + Runs the specified asynchronous action synchronously (blocks until the continuation has + been invoked). + + The action. + + Using this method is not recommended because it will block the calling thread. + + + + + Wraps the continuation with a guard which will only make sure that the continuation function + is invoked only once. + + The asynchronous continuation. + Wrapped asynchronous continuation. + + + + Gets the combined exception from all exceptions in the list. + + The exceptions. + Combined exception or null if no exception was thrown. + + + + Disposes the Timer, and waits for it to leave the Timer-callback-method + + The Timer object to dispose + Timeout to wait (TimeSpan.Zero means dispose without waiting) + Timer disposed within timeout (true/false) + + + + Asynchronous action. + + Continuation to be invoked at the end of action. + + + + Asynchronous action with one argument. + + Type of the argument. + Argument to the action. + Continuation to be invoked at the end of action. + + + + Represents the logging event with asynchronous continuation. + + + + + Initializes a new instance of the struct. + + The log event. + The continuation. + + + + Gets the log event. + + + + + Gets the continuation. + + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Implements the operator ==. + + The event info1. + The event info2. + The result of the operator. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + A value of true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + String Conversion Helpers + + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + Output value + Default value + Returns false if the input value could not be parsed + + + + Converts input string value into . Parsing is case-insensitive. + + Input value + The type of the enum + Output value. Null if parse failed + + + + Converts the string representation of the name or numeric value of one or more enumerated constants to an equivalent enumerated object. A parameter specifies whether the operation is case-sensitive. The return value indicates whether the conversion succeeded. + + The enumeration type to which to convert value. + The string representation of the enumeration name or underlying value to convert. + true to ignore case; false to consider case. + When this method returns, result contains an object of type TEnum whose value is represented by value if the parse operation succeeds. If the parse operation fails, result contains the default value of the underlying type of TEnum. Note that this value need not be a member of the TEnum enumeration. This parameter is passed uninitialized. + true if the value parameter was converted successfully; otherwise, false. + Wrapper because Enum.TryParse is not present in .net 3.5 + + + + Enum.TryParse implementation for .net 3.5 + + + + Don't uses reflection + + + + Enables to extract extra context details for + + + + + Name of context + + + + + The current LogFactory next to LogManager + + + + + NLog internal logger. + + Writes to file, console or custom text writer (see ) + + + Don't use as that can lead to recursive calls - stackoverflow + + + + + Gets a value indicating whether internal log includes Trace messages. + + + + + Gets a value indicating whether internal log includes Debug messages. + + + + + Gets a value indicating whether internal log includes Info messages. + + + + + Gets a value indicating whether internal log includes Warn messages. + + + + + Gets a value indicating whether internal log includes Error messages. + + + + + Gets a value indicating whether internal log includes Fatal messages. + + + + + Logs the specified message without an at the Trace level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + Log message. + + + + Logs the specified message without an at the Trace level. + will be only called when logging is enabled for level Trace. + + Function that returns the log message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Trace level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Trace level. + will be only called when logging is enabled for level Trace. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Debug level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Debug level. + + Log message. + + + + Logs the specified message without an at the Debug level. + will be only called when logging is enabled for level Debug. + + Function that returns the log message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Debug level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Debug level. + will be only called when logging is enabled for level Debug. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Info level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Info level. + + Log message. + + + + Logs the specified message without an at the Info level. + will be only called when logging is enabled for level Info. + + Function that returns the log message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Info level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Info level. + will be only called when logging is enabled for level Info. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Warn level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Warn level. + + Log message. + + + + Logs the specified message without an at the Warn level. + will be only called when logging is enabled for level Warn. + + Function that returns the log message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Warn level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Warn level. + will be only called when logging is enabled for level Warn. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Error level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Error level. + + Log message. + + + + Logs the specified message without an at the Error level. + will be only called when logging is enabled for level Error. + + Function that returns the log message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Error level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Error level. + will be only called when logging is enabled for level Error. + + Exception to be logged. + Function that returns the log message. + + + + Logs the specified message without an at the Fatal level. + + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Fatal level. + + Log message. + + + + Logs the specified message without an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Function that returns the log message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + Message which may include positional parameters. + Argument {0} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + + + + Logs the specified message without an at the Trace level. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + Message which may include positional parameters. + Argument {0} to the message. + Argument {1} to the message. + Argument {2} to the message. + + + + Logs the specified message with an at the Fatal level. + + Exception to be logged. + Log message. + + + + Logs the specified message with an at the Fatal level. + will be only called when logging is enabled for level Fatal. + + Exception to be logged. + Function that returns the log message. + + + + Initializes static members of the InternalLogger class. + + + + + Set the config of the InternalLogger with defaults and config. + + + + + Gets or sets the minimal internal log level. + + If set to , then messages of the levels , and will be written. + + + + Gets or sets a value indicating whether internal messages should be written to the console output stream. + + Your application must be a console application. + + + + Gets or sets a value indicating whether internal messages should be written to the console error stream. + + Your application must be a console application. + + + + Gets or sets the file path of the internal log file. + + A value of value disables internal logging to a file. + + + + Gets or sets the text writer that will receive internal logs. + + + + + Event written to the internal log. + Please note that the event is not triggered when then event hasn't the minimal log level set by + + + + + Gets or sets a value indicating whether timestamp should be included in internal log output. + + + + + Is there an thrown when writing the message? + + + + + Logs the specified message without an at the specified level. + + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message without an at the specified level. + + Log level. + Log message. + + + + Logs the specified message without an at the specified level. + will be only called when logging is enabled for level . + + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + will be only called when logging is enabled for level . + + Exception to be logged. + Log level. + Function that returns the log message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Message which may include positional parameters. + Arguments to the message. + + + + Logs the specified message with an at the specified level. + + Exception to be logged. + Log level. + Log message. + + + + Write to internallogger. + + optional exception to be logged. + level + message + optional args for + + + + Create log line with timestamp, exception message etc (if configured) + + + + + Determine if logging should be avoided because of exception type. + + The exception to check. + true if logging should be avoided; otherwise, false. + + + + Determine if logging is enabled for given LogLevel + + The for the log event. + true if logging is enabled; otherwise, false. + + + + Determine if logging is enabled. + + true if logging is enabled; otherwise, false. + + + + Write internal messages to the log file defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the defined in . + + Message to write. + + Message will be logged only when the property is not null, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged only when the property is true, otherwise the + method has no effect. + + + + + Write internal messages to the . + + Message to write. + + Message will be logged when the property is true, otherwise the + method has no effect. + + + + + Logs the assembly version and file version of the given Assembly. + + The assembly to log. + + + + A message has been written to the internal logger + + + + + The rendered message + + + + + The log level + + + + + The exception. Could be null. + + + + + The type that triggered this internal log event, for example the FileTarget. + This property is not always populated. + + + + + The context name that triggered this internal log event, for example the name of the Target. + This property is not always populated. + + + + + + + + A cyclic buffer of object. + + + + + Initializes a new instance of the class. + + Buffer size. + Whether buffer should grow as it becomes full. + The maximum number of items that the buffer can grow to. + + + + Gets the capacity of the buffer + + + + + Gets the number of items in the buffer + + + + + Adds the specified log event to the buffer. + + Log event. + The number of items in the buffer. + + + + Gets the array of events accumulated in the buffer and clears the buffer as one atomic operation. + + Events in the buffer. + + + + Condition and expression. + + + + + Initializes a new instance of the class. + + Left hand side of the AND expression. + Right hand side of the AND expression. + + + + Gets the left hand side of the AND expression. + + + + + Gets the right hand side of the AND expression. + + + + + Returns a string representation of this expression. + + A concatenated '(Left) and (Right)' string. + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the conjunction operator. + + + + Exception during evaluation of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Base class for representing nodes in condition expression trees. + + + + + Converts condition text to a condition expression tree. + + Condition text to be converted. + Condition expression tree. + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition layout expression (represented by a string literal + with embedded ${}). + + + + + Initializes a new instance of the class. + + The layout. + + + + Gets the layout. + + The layout. + + + + Returns a string representation of this expression. + + String literal in single quotes. + + + + Evaluates the expression by calculating the value + of the layout in the specified evaluation context. + + Evaluation context. + The value of the layout. + + + + Condition level expression (represented by the level keyword). + + + + + Returns a string representation of the expression. + + The 'level' string. + + + + Evaluates to the current log level. + + Evaluation context. Ignored. + The object representing current log level. + + + + Condition literal expression (numeric, LogLevel.XXX, true or false). + + + + + Initializes a new instance of the class. + + Literal value. + + + + Gets the literal value. + + The literal value. + + + + Returns a string representation of the expression. + + The literal value. + + + + Evaluates the expression. + + Evaluation context. + The literal value as passed in the constructor. + + + + Condition logger name expression (represented by the logger keyword). + + + + + Returns a string representation of this expression. + + A logger string. + + + + Evaluates to the logger name. + + Evaluation context. + The logger name. + + + + Condition message expression (represented by the message keyword). + + + + + Returns a string representation of this expression. + + The 'message' string. + + + + Evaluates to the logger message. + + Evaluation context. + The logger message. + + + + Marks class as a log event Condition and assigns a name to it. + + + + + Initializes a new instance of the class. + + Condition method name. + + + + Condition method invocation expression (represented by method(p1,p2,p3) syntax). + + + + + Initializes a new instance of the class. + + Name of the condition method. + of the condition method. + Precompiled delegate of the condition method. + The method parameters. + + + + Gets the method info. + + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + A bunch of utility methods (mostly predicates) which can be used in + condition expressions. Partially inspired by XPath 1.0. + + + + + Compares two values for equality. + + The first value. + The second value. + true when two objects are equal, false otherwise. + + + + Compares two strings for equality. + + The first string. + The second string. + Optional. If true, case is ignored; if false (default), case is significant. + true when two strings are equal, false otherwise. + + + + Gets or sets a value indicating whether the second string is a substring of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a substring of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a prefix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Gets or sets a value indicating whether the second string is a suffix of the first one. + + The first string. + The second string. + Optional. If true (default), case is ignored; if false, case is significant. + true when the second string is a prefix of the first string, false otherwise. + + + + Returns the length of a string. + + A string whose lengths is to be evaluated. + The length of the string. + + + + Indicates whether the specified regular expression finds a match in the specified input string. + + The string to search for a match. + The regular expression pattern to match. + A string consisting of the desired options for the test. The possible values are those of the separated by commas. + true if the regular expression finds a match; otherwise, false. + + + + + + + + + + + Marks the class as containing condition methods. + + + + + Condition not expression. + + + + + Initializes a new instance of the class. + + The expression. + + + + Gets the expression to be negated. + + The expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Condition or expression. + + + + + Initializes a new instance of the class. + + Left hand side of the OR expression. + Right hand side of the OR expression. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression by evaluating and recursively. + + Evaluation context. + The value of the alternative operator. + + + + Exception during parsing of condition expression. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Condition parser. Turns a string representation of condition expression + into an expression tree. + + + + + Initializes a new instance of the class. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The expression to be parsed. + Instance of used to resolve references to condition methods and layout renderers. + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + Parses the specified condition string and turns it into + tree. + + The string reader. + Instance of used to resolve references to condition methods and layout renderers. + + The root of the expression syntax tree which can be used to get the value of the condition in a specified context. + + + + + Try stringed keyword to + + + + success? + + + + Parse number + + negative number? minus should be parsed first. + + + + + Condition relational (==, !=, <, <=, + > or >=) expression. + + + + + Initializes a new instance of the class. + + The left expression. + The right expression. + The relational operator. + + + + Gets the left expression. + + The left expression. + + + + Gets the right expression. + + The right expression. + + + + Gets the relational operator. + + The operator. + + + + Returns a string representation of the expression. + + + A that represents the condition expression. + + + + + Evaluates the expression. + + Evaluation context. + Expression result. + + + + Compares the specified values using specified relational operator. + + The first value. + The second value. + The relational operator. + Result of the given relational operator. + + + + Promote values to the type needed for the comparision, e.g. parse a string to int. + + + + + + + Promotes to type + + + + success? + + + + Try to promote both values. First try to promote to , + when failed, try to . + + + + + + Get the order for the type for comparision. + + + index, 0 to max int. Lower is first + + + + Dictionary from type to index. Lower index should be tested first. + + + + + Build the dictionary needed for the order of the types. + + + + + + Get the string representing the current + + + + + + Relational operators used in conditions. + + + + + Equality (==). + + + + + Inequality (!=). + + + + + Less than (<). + + + + + Greater than (>). + + + + + Less than or equal (<=). + + + + + Greater than or equal (>=). + + + + + Hand-written tokenizer for conditions. + + + + + Initializes a new instance of the class. + + The string reader. + + + + Gets the type of the token. + + The type of the token. + + + + Gets the token value. + + The token value. + + + + Gets the value of a string token. + + The string token value. + + + + Asserts current token type and advances to the next token. + + Expected token type. + If token type doesn't match, an exception is thrown. + + + + Asserts that current token is a keyword and returns its value and advances to the next token. + + Keyword value. + + + + Gets or sets a value indicating whether current keyword is equal to the specified value. + + The keyword. + + A value of true if current keyword is equal to the specified value; otherwise, false. + + + + + Gets or sets a value indicating whether the tokenizer has reached the end of the token stream. + + + A value of true if the tokenizer has reached the end of the token stream; otherwise, false. + + + + + Gets or sets a value indicating whether current token is a number. + + + A value of true if current token is a number; otherwise, false. + + + + + Gets or sets a value indicating whether the specified token is of specified type. + + The token type. + + A value of true if current token is of specified type; otherwise, false. + + + + + Gets the next token and sets and properties. + + + + + Try the comparison tokens (greater, smaller, greater-equals, smaller-equals) + + current char + is match + + + + Try the logical tokens (and, or, not, equals) + + current char + is match + + + + Mapping between characters and token types for punctuations. + + + + + Initializes a new instance of the CharToTokenType struct. + + The character. + Type of the token. + + + + Token types for condition expressions. + + + + + Marks the class or a member as advanced. Advanced classes and members are hidden by + default in generated documentation. + + + + + Initializes a new instance of the class. + + + + + Identifies that the output of layout or layout render does not change for the lifetime of the current appdomain. + + + A layout(renderer) could be converted to a literal when: + - The layout and all layout properties are SimpleLayout or [AppDomainFixedOutput] + + Recommendation: Apply this attribute to a layout or layout-renderer which have the result only changes by properties of type Layout. + + + + + Used to mark configurable parameters which are arrays. + Specifies the mapping between XML elements and .NET types. + + + + + Initializes a new instance of the class. + + The type of the array item. + The XML element name that represents the item. + + + + Gets the .NET type of the array item. + + + + + Gets the XML element name. + + + + + An assembly is trying to load. + + + + + New event args + + + + + + The assembly that is trying to load. + + + + + Constructs a new instance the configuration item (target, layout, layout renderer, etc.) given its type. + + Type of the item. + Created object of the specified type. + + + + Provides registration information for named items (targets, layouts, layout renderers, etc.) managed by NLog. + + Everything of an assembly could be loaded by + + + + + Called before the assembly will be loaded. + + + + + Initializes a new instance of the class. + + The assemblies to scan for named items. + + + + Gets or sets default singleton instance of . + + + This property implements lazy instantiation so that the is not built before + the internal logger is configured. + + + + + Gets or sets the creator delegate used to instantiate configuration objects. + + + By overriding this property, one can enable dependency injection or interception for created objects. + + + + + Gets the factory. + + The target factory. + + + + Gets the factory. + + The filter factory. + + + + gets the factory + + not using due to backwards-compatibility. + + + + + Gets the factory. + + The layout renderer factory. + + + + Gets the factory. + + The layout factory. + + + + Gets the ambient property factory. + + The ambient property factory. + + + + Legacy interface, no longer used by the NLog engine + + + + + Gets or sets the JSON serializer to use with or + + + + + Gets or sets the string serializer to use with + + + + + Gets or sets the custom object-type transformation for use in , or + + + + + Gets or sets the parameter converter to use with , or + + + + + Perform message template parsing and formatting of LogEvent messages (True = Always, False = Never, Null = Auto Detect) + + + - Null (Auto Detect) : NLog-parser checks for positional parameters, and will then fallback to string.Format-rendering. + - True: Always performs the parsing of and rendering of using the NLog-parser (Allows custom formatting with ) + - False: Always performs parsing and rendering using string.Format (Fastest if not using structured logging) + + + + + Gets the time source factory. + + The time source factory. + + + + Gets the condition method factory. + + The condition method factory. + + + + Gets the condition method factory (precompiled) + + The condition method factory. + + + + Registers named items from the assembly. + + The assembly. + + + + Registers named items from the assembly. + + The assembly. + Item name prefix. + + + + Call Preload for NLogPackageLoader + + + Every package could implement a class "NLogPackageLoader" (namespace not important) with the public static method "Preload" (no arguments) + This method will be called just before registering all items in the assembly. + + + + + + Call the Preload method for . The Preload method must be static. + + + + + + Clears the contents of all factories. + + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Builds the default configuration item factory. + + Default factory. + + + + Registers items in NLog.Extended.dll using late-bound types, so that we don't need a reference to NLog.Extended.dll. + + + + + Attribute used to mark the default parameters for layout renderers. + + + + + Initializes a new instance of the class. + + + + + Dynamic filtering with a positive list of enabled levels + + + + + Dynamic filtering with a minlevel and maxlevel range + + + + + Format of the exception output to the specific target. + + + + + Appends the Message of an Exception to the specified target. + + + + + Appends the type of an Exception to the specified target. + + + + + Appends the short type of an Exception to the specified target. + + + + + Appends the result of calling ToString() on an Exception to the specified target. + + + + + Appends the method name from Exception's stack trace to the specified target. + + + + + Appends the stack trace from an Exception to the specified target. + + + + + Appends the contents of an Exception's Data property to the specified target. + + + + + Destructure the exception (usually into JSON) + + + + + Appends the from the application or the object that caused the error. + + + + + Appends the from the application or the object that caused the error. + + + + + Appends any additional properties that specific type of Exception might have. + + + + + Factory for class-based items. + + The base type of each item. + The type of the attribute used to annotate items. + + + + Scans the assembly. + + The types to scan. + The prefix. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Registers the item based on a type name. + + Name of the item. + Name of the type. + + + + Clears the contents of the factory. + + + + + Registers a single type definition. + + The item name. + The type of the item. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Creates an item instance. + + The name of the item. + Created item. + + + + Factory specialized for s. + + + + + Clear all func layouts + + + + + Register a layout renderer with a callback function. + + Name of the layoutrenderer, without ${}. + the renderer that renders the value. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides means to populate factories of named items (such as targets, layouts, layout renderers, etc.). + + + + + Implemented by objects which support installation and uninstallation. + + + + + Performs installation which requires administrative permissions. + + The installation context. + + + + Performs uninstallation which requires administrative permissions. + + The installation context. + + + + Determines whether the item is installed. + + The installation context. + + Value indicating whether the item is installed or null if it is not possible to determine. + + + + + Interface for accessing configuration details + + + + + Name of the config section + + + + + Configuration Key/Value Pairs + + + + + Child config sections + + + + + Interface for loading NLog + + + + + Finds and loads the NLog configuration + + LogFactory that owns the NLog configuration + Name of NLog.config file (optional) + NLog configuration (or null if none found) + + + + Notifies when LoggingConfiguration has been successfully applied + + LogFactory that owns the NLog configuration + NLog Config + + + + Get file paths (including filename) for the possible NLog config files. + + Name of NLog.config file (optional) + The file paths to the possible config file + + + + Level enabled flags for each LogLevel ordinal + + + + + Converts the filter into a simple + + + + + Represents a factory of named items (such as targets, layouts, layout renderers, etc.). + + Base type for each item instance. + Item definition type (typically or ). + + + + Registers new item definition. + + Name of the item. + Item definition. + + + + Tries to get registered item definition. + + Name of the item. + Reference to a variable which will store the item definition. + Item definition. + + + + Creates item instance. + + Name of the item. + Newly created item instance. + + + + Tries to create an item instance. + + Name of the item. + The result. + True if instance was created successfully, false otherwise. + + + + Provides context for install/uninstall operations. + + + + + Mapping between log levels and console output colors. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The log output. + + + + Gets or sets the installation log level. + + + + + Gets or sets a value indicating whether to ignore failures during installation. + + + + + Whether installation exceptions should be rethrown. If IgnoreFailures is set to true, + this property has no effect (there are no exceptions to rethrow). + + + + + Gets the installation parameters. + + + + + Gets or sets the log output. + + + + + Logs the specified trace message. + + The message. + The arguments. + + + + Logs the specified debug message. + + The message. + The arguments. + + + + Logs the specified informational message. + + The message. + The arguments. + + + + Logs the specified warning message. + + The message. + The arguments. + + + + Logs the specified error message. + + The message. + The arguments. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Creates the log event which can be used to render layouts during installation/uninstallations. + + Log event info object. + + + + Convert object-value into specified type + + + + + Parses the input value and converts into the wanted type + + Input Value + Wanted Type + Format to use when parsing + Culture to use when parsing + Output value with wanted type + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for extension loading + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options for enabling NLog + + + + + LogFactory under configuration + + + + + Interface for fluent setup of LogFactory options + + + + + LogFactory under configuration + + + + + LoggingConfiguration being built + + + + + Interface for fluent setup of LogFactory options for logevent serialization + + + + + LogFactory under configuration + + + + + Encapsulates and the logic to match the actual logger name + All subclasses defines immutable objects. + Concrete subclasses defines various matching rules through + + + + + Creates a concrete based on . + + + Rules used to select the concrete implementation returned: + + if is null => returns (never matches) + if doesn't contains any '*' nor '?' => returns (matches only on case sensitive equals) + if == '*' => returns (always matches) + if doesn't contain '?' + + if contains exactly 2 '*' one at the beginning and one at the end (i.e. "*foobar*) => returns + if contains exactly 1 '*' at the beginning (i.e. "*foobar") => returns + if contains exactly 1 '*' at the end (i.e. "foobar*") => returns + + + returns + + + + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + A concrete + + + + Returns the argument passed to + + + + + Checks whether given name matches the logger name pattern. + + String to be matched. + A value of when the name matches, otherwise. + + + + Defines a that never matches. + Used when pattern is null + + + + + Defines a that always matches. + Used when pattern is '*' + + + + + Defines a that matches with a case-sensitive Equals + Used when pattern is a string without wildcards '?' '*' + + + + + Defines a that matches with a case-sensitive StartsWith + Used when pattern is a string like "*foobar" + + + + + Defines a that matches with a case-sensitive EndsWith + Used when pattern is a string like "foobar*" + + + + + Defines a that matches with a case-sensitive Contains + Used when pattern is a string like "*foobar*" + + + + + Defines a that matches with a complex wildcards combinations: + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + used when pattern is a string containing any number of '?' or '*' in any position + i.e. "*Server[*].Connection[?]" + + + + + Keeps logging configuration and provides simple API to modify it. + + This class is thread-safe..ToList() is used for that purpose. + + + + Variables defined in xml or in API. name is case case insensitive. + + + + + Gets the factory that will be configured + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete on NLog 4.1 and it may be removed in a future release. + + + + Gets the variables defined in the configuration. + + + + + Gets a collection of named targets specified in the configuration. + + + A list of named targets. + + + Unnamed targets (such as those wrapped by other targets) are not returned. + + + + + Gets the collection of file names which should be watched for changes by NLog. + + + + + Gets the collection of logging rules. + + + + + Gets or sets the default culture info to use as . + + + Specific culture info or null to use + + + + + Gets all targets. + + + + + Compare objects based on their name. + + This property is use to cache the comparer object. + + + + Defines methods to support the comparison of objects for equality based on their name. + + + + + Registers the specified target object. The name of the target is read from . + + + The target object with a non + + when is + + + + Registers the specified target object under a given name. + + Name of the target. + The target object. + when is + when is + + + + Finds the target with the specified name. + + + The name of the target to be found. + + + Found target or when the target is not found. + + + + + Finds the target with the specified name and specified type. + + + The name of the target to be found. + + Type of the target + + Found target or when the target is not found of not of type + + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule with min- and maxLevel. + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for one loglevel. + + log level needed to trigger this rule. + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Add a rule for all loglevels. + + Name of the target to be written when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + + + + Add a rule for all loglevels. + + Target to be written to when the rule matches. + Logger name pattern. It may include the '*' wildcard at the beginning, at the end or at both ends. + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + Finds the logging rule with the specified name. + + The name of the logging rule to be found. + Found logging rule or when not found. + + + + Removes the specified named logging rule. + + The name of the logging rule to be removed. + Found one or more logging rule to remove, or when not found. + + + + Called by LogManager when one of the log configuration files changes. + + + A new instance of that represents the updated configuration. + + + + + Removes the specified named target. + + Name of the target. + + + + Installs target-specific objects on current system. + + The installation context. + + Installation typically runs with administrative permissions. + + + + + Uninstalls target-specific objects from current system. + + The installation context. + + Uninstallation typically runs with administrative permissions. + + + + + Closes all targets and releases any unmanaged resources. + + + + + Log to the internal (NLog) logger the information about the and associated with this instance. + + + The information are only recorded in the internal logger if Debug level is enabled, otherwise nothing is + recorded. + + + + + Validates the configuration. + + + + + Copies all variables from provided dictionary into current configuration variables. + + Master variables dictionary + + + + Replace a simple variable with a value. The original value is removed and thus we cannot redo this in a later stage. + + + + + + + Checks whether unused targets exist. If found any, just write an internal log at Warn level. + If initializing not started or failed, then checking process will be canceled + + + + + + + + Arguments for events. + + + + + Initializes a new instance of the class. + + The new configuration. + The old configuration. + + + + Gets the old configuration. + + The old configuration. + + + + Gets the new configuration. + + The new configuration. + + + + Gets the new configuration + + The new configuration. + + + + Gets the old configuration + + The old configuration. + + + + Gets the optional boolean attribute value. + + + Name of the attribute. + Default value to return if the attribute is not found or if there is a parse error + Boolean attribute value or default. + + + + Remove the namespace (before :) + + + x:a, will be a + + + + + + + Enables loading of NLog configuration from a file + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Get default file paths (including filename) for possible NLog config files. + + + + + Loads NLog configuration from + + + + + Constructor + + + + + + Loads NLog configuration from provided config section + + + + + + + Builds list with unique keys, using last value of duplicates. High priority keys placed first. + + + + + + + Parse loglevel, but don't throw if exception throwing is disabled + + Name of attribute for logging. + Value of parse. + Used if there is an exception + + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Parse {Rules} xml element + + + Rules are added to this parameter. + + + + Parse {Logger} xml element + + + + + + Parse boolean + + Name of the property for logging. + value to parse + Default value to return if the parse failed + Boolean attribute value or default. + + + + Represents a logging rule. An equivalent of <logger /> configuration element. + + + + + Create an empty . + + + + + Create an empty . + + + + + Create a new with a and which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a new with a which writes to . + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Minimum log level needed to trigger this rule. + Target to be written to when the rule matches. + + + + Create a (disabled) . You should call or see cref="EnableLoggingForLevels"/> to enable logging. + + Logger name pattern used for . It may include one or more '*' or '?' wildcards at any position. + Target to be written to when the rule matches. + + + + Rule identifier to allow rule lookup + + + + + Gets a collection of targets that should be written to when this rule matches. + + + + + Gets a collection of child rules to be evaluated when this rule matches. + + + + + Gets a collection of filters to be checked before writing to targets. + + + + + Gets or sets a value indicating whether to quit processing any further rule when this one matches. + + + + + Gets or sets logger name pattern. + + + Logger name pattern used by to check if a logger name matches this rule. + It may include one or more '*' or '?' wildcards at any position. + + '*' means zero or more occurrences of any character + '?' means exactly one occurrence of any character + + + + + + Gets the collection of log levels enabled by this rule. + + + + + Default action if none of the filters match + + + + + Enables logging for a particular level. + + Level to be enabled. + + + + Enables logging for a particular levels between (included) and . + + Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Disables logging for a particular level. + + Level to be disabled. + + + + Disables logging for particular levels between (included) and . + + Minimum log level to be disables. + Maximum log level to de disabled. + + + + Enables logging the levels between (included) and . All the other levels will be disabled. + + >Minimum log level needed to trigger this rule. + Maximum log level needed to trigger this rule. + + + + Returns a string representation of . Used for debugging. + + + A that represents the current . + + + + + Checks whether te particular log level is enabled for this rule. + + Level to be checked. + A value of when the log level is enabled, otherwise. + + + + Checks whether given name matches the . + + String to be matched. + A value of when the name matches, otherwise. + + + + Default filtering with static level config + + + + + Factory for locating methods. + + + + + Initializes a new instance of the class. + + Helper method to extract relevant methods from type + + + + Scans the assembly for classes marked with expected class + and methods marked with expected and adds them + to the factory. + + The types to scan. + The prefix to use for names. + + + + Registers the type. + + The type to register. + The item name prefix. + + + + Scans a type for relevant methods with their symbolic names + + Include types that are marked with this attribute + Include methods that are marked with this attribute + Class Type to scan + Collection of methods with their symbolic names + + + + Clears contents of the factory. + + + + + Registers the definition of a single method. + + The method name. + The method info. + + + + Registers the definition of a single method. + + The method name. + The method info. + The precompiled method delegate. + + + + Tries to retrieve method by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Tries to retrieve method-delegate by name. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Retrieves method by name. + + Method name. + MethodInfo object. + + + + Retrieves method by name. + + Method name. + Method delegate object. + + + + Tries to get method definition. + + The method name. + The result. + A value of true if the method was found, false otherwise. + + + + Marks the layout or layout renderer depends on mutable objects from the LogEvent + + This can be or + + + + + Attaches a simple name to an item (such as , + , , etc.). + + + + + Initializes a new instance of the class. + + The name of the item. + + + + Gets the name of the item. + + The name of the item. + + + + Indicates NLog should not scan this property during configuration. + + + + + Initializes a new instance of the class. + + + + + Marks the object as configuration item for NLog. + + + + + Initializes a new instance of the class. + + + + + Represents simple XML element with case-insensitive attribute semantics. + + + + + Initializes a new instance of the class. + + The reader to initialize element from. + + + + Prevents a default instance of the class from being created. + + + + + Gets the element name. + + + + + Gets the dictionary of attribute values. + + + + + Gets the collection of child elements. + + + + + Gets the value of the element. + + + + + Last error occured during configuration read + + + + + Returns children elements with the specified element name. + + Name of the element. + Children elements with the specified element name. + + + + Asserts that the name of the element is among specified element names. + + The allowed names. + + + + Returns all parsing errors from current and all child elements. + + + + + Special attribute we could ignore + + + + + Default implementation of + + + + + + + + Attribute used to mark the required parameters for targets, + layout targets and filters. + + + + + Provides simple programmatic configuration API used for trivial logging cases. + + Warning, these methods will overwrite the current config. + + + + + Configures NLog for console logging so that all messages above and including + the level are output to the console. + + + + + Configures NLog for console logging so that all messages above and including + the specified level are output to the console. + + The minimal logging level. + + + + Configures NLog for to log to the specified target so that all messages + above and including the level are output. + + The target to log all messages to. + + + + Configures NLog for to log to the specified target so that all messages + above and including the specified level are output. + + The target to log all messages to. + The minimal logging level. + + + + Configures NLog for file logging so that all messages above and including + the level are written to the specified file. + + Log file name. + + + + Configures NLog for file logging so that all messages above and including + the specified level are written to the specified file. + + Log file name. + The minimal logging level. + + + + Value indicating how stack trace should be captured when processing the log event. + + + + + Stack trace should not be captured. + + + + + Stack trace should be captured without source-level information. + + + + + Stack trace should be captured including source-level information such as line numbers. + + + + + Capture maximum amount of the stack trace information supported on the platform. + + + + + Marks the layout or layout renderer as thread independent - it producing correct results + regardless of the thread it's running on. + + Without this attribute everything is rendered on the main thread. + + + If this attribute is set on a layout, it could be rendered on the another thread. + This could be more efficient as it's skipped when not needed. + + If context like HttpContext.Current is needed, which is only available on the main thread, this attribute should not be applied. + + See the AsyncTargetWrapper and BufferTargetWrapper with the , using + + Apply this attribute when: + - The result can we rendered in another thread. Delaying this could be more efficient. And/Or, + - The result should not be precalculated, for example the target sends some extra context information. + + + + + Marks the layout or layout renderer as thread safe - it producing correct results + regardless of the number of threads it's running on. + + Without this attribute then the target concurrency will be reduced + + + + + A class for configuring NLog through an XML configuration file + (App.config style or App.nlog style). + + Parsing of the XML file is also implemented in this class. + + + - This class is thread-safe..ToList() is used for that purpose. + - Update TemplateXSD.xml for changes outside targets + + + + + Initializes a new instance of the class. + + Configuration file to be read. + + + + Initializes a new instance of the class. + + Configuration file to be read. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + Configuration file to be read. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + XML reader to read from. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Initializes a new instance of the class. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + The to which to apply any applicable configuration values. + + + + Initializes a new instance of the class. + + The XML contents. + Name of the XML file. + The to which to apply any applicable configuration values. + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + + + + Parse XML string as NLog configuration + + NLog configuration in XML to be parsed + NLog LogFactory + + + + Did the Succeeded? true= success, false= error, null = initialize not started yet. + + + + + Gets or sets a value indicating whether all of the configuration files + should be watched for changes and reloaded automatically when changed. + + + + + Gets the collection of file names which should be watched for changes by NLog. + This is the list of configuration files processed. + If the autoReload attribute is not set it returns empty collection. + + + + + Re-reads the original configuration file and returns the new object. + + The new object. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Create XML reader for (xml config) file. + + filepath + reader or null if filename is empty. + + + + Initializes the configuration. + + containing the configuration section. + Name of the file that contains the element (to be used as a base for including other files). null is allowed. + Ignore any errors during configuration. + + + + Checks whether any error during XML configuration parsing has occured. + If there are any and ThrowConfigExceptions or ThrowExceptions + setting is enabled - throws NLogConfigurationException, otherwise + just write an internal log at Warn level. + + Root NLog configuration xml element + + + + Add a file with configuration. Check if not already included. + + + + + + + Parse the root + + + path to config file. + The default value for the autoReload option. + + + + Parse {configuration} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parse {NLog} xml element. + + + path to config file. + The default value for the autoReload option. + + + + Parses a single config section within the NLog-config + + + Section was recognized + + + + Include (multiple) files by filemask, e.g. *.nlog + + base directory in case if is relative + relative or absolute fileMask + + + + + + + + Matches when the specified condition is met. + + + Conditions are expressed using a simple language + described
here. + + + + + Gets or sets the condition expression. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + An abstract filter class. Provides a way to eliminate log messages + based on properties other than logger name and log level. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the action to be taken when filter matches. + + + + + + Gets the result of evaluating filter against given log event. + + The log event. + Filter result. + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Marks class as a layout renderer and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the filter. + + + + Filter result. + + + + + The filter doesn't want to decide whether to log or discard the message. + + + + + The message should be logged. + + + + + The message should not be logged. + + + + + The message should be logged and processing should be finished. + + + + + The message should not be logged and processing should be finished. + + + + + A base class for filters that are based on comparing a value to a layout. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the layout to be used to filter log messages. + + The layout. + + + + + Matches when the calculated layout contains the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets the substring to be matched. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Gets or sets a string to compare the layout to. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches the provided filter-method + + + + + Initializes a new instance of the class. + + + + + + + + Matches when the calculated layout does NOT contain the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Gets or sets the substring to be matched. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the calculated layout is NOT equal to the specified substring. + This filter is deprecated in favor of <when /> which is based on conditions. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a string to compare the layout to. + + + + + + Gets or sets a value indicating whether to ignore case when comparing strings. + + + + + + Checks whether log event should be logged or not. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Matches when the result of the calculated layout has been repeated a moment ago + + + + + How long before a filter expires, and logging is accepted again + + + + + + Max length of filter values, will truncate if above limit + + + + + + Applies the configured action to the initial logevent that starts the timeout period. + Used to configure that it should ignore all events until timeout. + + + + + + Max number of unique filter values to expect simultaneously + + + + + + Default number of unique filter values to expect, will automatically increase if needed + + + + + + Insert FilterCount value into when an event is no longer filtered + + + + + + Append FilterCount to the when an event is no longer filtered + + + + + + Reuse internal buffers, and doesn't have to constantly allocate new buffers + + + + + + Default buffer size for the internal buffers + + + + + + Can be used if has been enabled. + + + + + Initializes a new instance of the class. + + + + + Checks whether log event should be logged or not. In case the LogEvent has just been repeated. + + Log event. + + - if the log event should be ignored
+ - if the filter doesn't want to decide
+ - if the log event should be logged
+ .
+
+ + + Uses object pooling, and prunes stale filter items when the pool runs dry + + + + + Remove stale filter-value from the cache, and fill them into the pool for reuse + + + + + Renders the Log Event into a filter value, that is used for checking if just repeated + + + + + Repeated LogEvent detected. Checks if it should activate filter-action + + + + + Filter Value State (mutable) + + + + + Filter Lookup Key (immutable) + + + + + A fluent class to build log events for NLog. + + + + + Initializes a new instance of the class. + + The to send the log event. + + + + Initializes a new instance of the class. + + The to send the log event. + The for the log event. + + + + Gets the created by the builder. + + + + + Sets the information of the logging event. + + The exception information of the logging event. + current for chaining calls. + + + + Sets the level of the logging event. + + The level of the logging event. + current for chaining calls. + + + + Sets the logger name of the logging event. + + The logger name of the logging event. + current for chaining calls. + + + + Sets the log message on the logging event. + + The log message for the logging event. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + The first object to format. + The second object to format. + The third object to format. + The fourth object to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets the log message and parameters for formatting on the logging event. + + An object that supplies culture-specific formatting information. + A composite format string. + An object array that contains zero or more objects to format. + current for chaining calls. + + + + Sets a per-event context property on the logging event. + + The name of the context property. + The value of the context property. + current for chaining calls. + + + + Sets multiple per-event context properties on the logging event. + + The properties to set. + current for chaining calls. + + + + Sets the timestamp of the logging event. + + The timestamp of the logging event. + current for chaining calls. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + current for chaining calls. + + + + Writes the log event to the underlying logger. + + + + + Writes the log event to the underlying logger. + + If condition is true, write log event; otherwise ignore event. + + + + Writes the log event to the underlying logger. + + If condition is true, write log event; otherwise ignore event. + + + + Extension methods for NLog . + + + + + Starts building a log event with the specified . + + The logger to write the log event to. + The log level. + current for chaining calls. + + + + Starts building a log event at the Trace level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Debug level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Info level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Warn level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Error level. + + The logger to write the log event to. + current for chaining calls. + + + + Starts building a log event at the Fatal level. + + The logger to write the log event to. + current for chaining calls. + + + + Global Diagnostics Context + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Global Diagnostics Context - a dictionary structure to hold per-application-instance values. + + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Sets the Global Diagnostics Context item to the specified value. + + Item name. + Item value. + + + + Gets the Global Diagnostics Context named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context item. + + Item name. + to use when converting the item's value to a string. + The value of as a string, if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the Global Diagnostics Context named item. + + Item name. + The item value, if defined; otherwise null. + + + + Returns all item names + + A collection of the names of all items in the Global Diagnostics Context. + + + + Checks whether the specified item exists in the Global Diagnostics Context. + + Item name. + A boolean indicating whether the specified item exists in current thread GDC. + + + + Removes the specified item from the Global Diagnostics Context. + + Item name. + + + + Clears the content of the GDC. + + + + + Include context properties + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Interface for serialization of object values into JSON format + + + + + Serialization of an object into JSON format. + + The object to serialize to JSON. + Output destination. + Serialize succeeded (true/false) + + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format.s + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Logger with only generic methods (passing 'LogLevel' to methods) and core properties. + + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Extensions for NLog . + + + + + Writes the diagnostic message and exception at the specified level. + + A logger implementation that will handle the message. + The log level. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A logger implementation that will handle the message. + An exception to be logged. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Allocates new builder and appends to the provided target builder on dispose + + + + + Access the new builder allocated + + + + + Helpers for . + + + + + Load from url + + file or path, including .dll + basepath, optional + + + + + Load from url + + name without .dll + + + + + Forward declare of system delegate type for use by other classes + + + + + Keeps track of pending operation count, and can notify when pending operation count reaches zero + + + + + Mark operation has started + + + + + Mark operation has completed + + Exception coming from the completed operation [optional] + + + + Registers an AsyncContinuation to be called when all pending operations have completed + + Invoked on completion + AsyncContinuation operation + + + + Clear o + + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace. + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Legacy attempt to skip async MoveNext, but caused source file line number to be lost + + + + + Gets the entire stack trace. + + + + + Finds first user stack frame in a stack trace + + The stack trace of the logging method invocation + Type of the logger or logger wrapper. This is still Logger if it's a subclass of Logger. + Index of the first user stack frame or 0 if all stack frames are non-user + + + + This is only done for legacy reason, as the correct method-name and line-number should be extracted from the MoveNext-StackFrame + + The stack trace of the logging method invocation + Starting point for skipping async MoveNext-frames + + + + Assembly to skip? + + Find assembly via this frame. + true, we should skip. + + + + Is this the type of the logger? + + get type of this logger in this frame. + Type of the logger. + + + + + Memory optimized filtering + + Passing state too avoid delegate capture and memory-allocations. + + + + Provides untyped IDictionary interface on top of generic IDictionary. + + The type of the key. + The type of the value. + + + + Initializes a new instance of the DictionaryAdapter class. + + The implementation. + + + + Gets an object containing the values in the object. + + + + An object containing the values in the object. + + + + + Gets the number of elements contained in the . + + + + The number of elements contained in the . + + + + + Gets a value indicating whether access to the is synchronized (thread safe). + + + true if access to the is synchronized (thread safe); otherwise, false. + + + + + Gets an object that can be used to synchronize access to the . + + + + An object that can be used to synchronize access to the . + + + + + Gets a value indicating whether the object has a fixed size. + + + true if the object has a fixed size; otherwise, false. + + + + + Gets a value indicating whether the object is read-only. + + + true if the object is read-only; otherwise, false. + + + + + Gets an object containing the keys of the object. + + + + An object containing the keys of the object. + + + + + Gets or sets the with the specified key. + + Dictionary key. + Value corresponding to key or null if not found + + + + Adds an element with the provided key and value to the object. + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + + Removes all elements from the object. + + + + + Determines whether the object contains an element with the specified key. + + The key to locate in the object. + + True if the contains an element with the key; otherwise, false. + + + + + Returns an object for the object. + + + An object for the object. + + + + + Removes the element with the specified key from the object. + + The key of the element to remove. + + + + Copies the elements of the to an , starting at a particular index. + + The one-dimensional that is the destination of the elements copied from . The must have zero-based indexing. + The zero-based index in at which copying begins. + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Wrapper IDictionaryEnumerator. + + + + + Initializes a new instance of the class. + + The wrapped. + + + + Gets both the key and the value of the current dictionary entry. + + + + A containing both the key and the value of the current dictionary entry. + + + + + Gets the key of the current dictionary entry. + + + + The key of the current element of the enumeration. + + + + + Gets the value of the current dictionary entry. + + + + The value of the current element of the enumeration. + + + + + Gets the current element in the collection. + + + + The current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + + True if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Ensures that IDictionary.GetEnumerator returns DictionaryEntry values + + + + + UTF-8 BOM 239, 187, 191 + + + + + Safe way to get environment variables. + + + + + Helper class for dealing with exceptions. + + + + + Mark this exception as logged to the . + + + + + + + Is this exception logged to the ? + + + trueif the has been logged to the . + + + + Determines whether the exception must be rethrown and logs the error to the if is false. + + Advised to log first the error to the before calling this method. + + The exception to check. + Target context of the exception. + trueif the must be rethrown, false otherwise. + + + + Determines whether the exception must be rethrown immediately, without logging the error to the . + + Only used this method in special cases. + + The exception to check. + trueif the must be rethrown, false otherwise. + + + + Object construction helper. + + + + + Adapter for to + + + + + Initializes a new instance of the class. + + The to wrap. + + + + Creates an AppDomainWrapper for the current + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Interface for fakeable the current . Not fully implemented, please methods/properties as necessary. + + + + + Gets or sets the base directory that the assembly resolver uses to probe for assemblies. + + + + + Gets or sets the name of the configuration file for an application domain. + + + + + Gets or sets the list of directories under the application base directory that are probed for private assemblies. + + + + + Gets or set the friendly name. + + + + + Gets an integer that uniquely identifies the application domain within the process. + + + + + Gets the assemblies that have been loaded into the execution context of this application domain. + + A list of assemblies in this application domain. + + + + Process exit event. + + + + + Domain unloaded event. + + + + + Abstract calls for the application environment + + + + + Gets current process name (excluding filename extension, if any). + + + + + Abstract calls to FileSystem + + + + Determines whether the specified file exists. + The file to check. + + + Returns the content of the specified file + The file to load. + + + + Base class for optimized file appenders. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Gets the path of the file, including file extension. + + The name of the file. + + + + Gets or sets the creation time for a file associated with the appender. The time returned is in Coordinated + Universal Time [UTC] standard. + + The creation time of the file. + + + + Gets or sets the creation time for a file associated with the appender. Synchronized by + The time format is based on + + + + + Gets the last time the file associated with the appender is opened. The time returned is in Coordinated + Universal Time [UTC] standard. + + The time the file was last opened. + + + + Gets the file creation parameters. + + The file creation parameters. + + + + Writes the specified bytes. + + The bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Creates the file stream. + + If set to true sets the file stream to allow shared writing. + If larger than 0 then it will be used instead of the default BufferSize for the FileStream. + A object which can be used to write to the file. + + + + Base class for optimized file appenders which require the usage of a mutex. + + It is possible to use this class as replacement of BaseFileAppender and the mutex functionality + is not enforced to the implementing subclasses. + + + + + Initializes a new instance of the class. + + Name of the file. + The create parameters. + + + + Implementation of which caches + file information. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Closes this instance of the appender. + + + + + Flushes this current appender. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Writes the specified bytes to a file. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Factory class which creates objects. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Maintains a collection of file appenders usually associated with file targets. + + + + + An "empty" instance of the class with zero size and empty list of appenders. + + + + + Initializes a new "empty" instance of the class with zero size and empty + list of appenders. + + + + + Initializes a new instance of the class. + + + The size of the list should be positive. No validations are performed during initialization as it is an + internal class. + + Total number of appenders allowed in list. + Factory used to create each appender. + Parameters used for creating a file. + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + Interface that provides parameters for create file function. + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + Gets or sets the log file buffer size in bytes. + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + Should archive mutex be created? + + + + + Should manual simple detection of file deletion be enabled? + + + + + Gets the parameters which will be used for creating a file. + + + + + Gets the file appender factory used by all the appenders in this list. + + + + + Gets the number of appenders which the list can hold. + + + + + Subscribe to background monitoring of active file appenders + + + + + It allocates the first slot in the list when the file name does not already in the list and clean up any + unused slots. + + File name associated with a single appender. + The allocated appender. + + Thrown when is called on an Empty instance. + + + + + Close all the allocated appenders. + + + + + Close the allocated appenders initialized before the supplied time. + + The time which prior the appenders considered expired + + + + Flush all the allocated appenders. + + + + + File Archive Logic uses the File-Creation-TimeStamp to detect if time to archive, and the File-LastWrite-Timestamp to name the archive-file. + + + NLog always closes all relevant appenders during archive operation, so no need to lookup file-appender + + + + + Closes the specified appender and removes it from the list. + + File name of the appender to be closed. + File Appender that matched the filePath (null if none found) + + + + Interface implemented by all factories capable of creating file appenders. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + Instance of which can be used to write to the file. + + + + Appender used to discard data for the FileTarget. + Used mostly for testing entire stack except the actual writing to disk. + Throws away all data. + + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Multi-process and multi-host file appender which attempts + to get exclusive write access and retries if it's not available. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + Optimized single-process file appender which keeps the file open for exclusive write. + + + + + Initializes a new instance of the class. + + Name of the file. + The parameters. + + + + Writes the specified bytes. + + The bytes array. + The bytes array offset. + The number of bytes. + + + + Flushes this instance. + + + + + Closes this instance. + + + + + Gets the creation time for a file associated with the appender. The time returned is in Coordinated Universal + Time [UTC] standard. + + The file creation time. + + + + Gets the length in bytes of the file associated with the appender. + + A long value representing the length of the file in bytes. + + + + Factory class. + + + + + Opens the appender for given file name and parameters. + + Name of the file. + Creation parameters. + + Instance of which can be used to write to the file. + + + + + A layout that represents a filePath. + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Cached invalid file names char array to avoid memory allocation every time Path.GetInvalidFileNameChars() is called. + + + + + not null when == false + + + + + non null is fixed, + + + + + is the cache-key, and when newly rendered filename matches the cache-key, + then it reuses the cleaned cache-value . + + + + + is the cache-value that is reused, when the newly rendered filename + matches the cache-key + + + + Initializes a new instance of the class. + + + + Render the raw filename from Layout + + The log event. + StringBuilder to minimize allocations [optional]. + String representation of a layout. + + + + Convert the raw filename to a correct filename + + The filename generated by Layout. + String representation of a correct filename. + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Is this (templated/invalid) path an absolute, relative or unknown? + + + + + Convert object to string + + value + format for conversion. + + + If is null and isn't a already, then the will get a locked by + + + + + Interface for the wrapper around System.Configuration.ConfigurationManager. + + + + + Gets the wrapper around ConfigurationManager.AppSettings. + + + + + Format a log message + + + + + Format the message and return + + LogEvent with message to be formatted + formatted message + + + + Has the logevent properties? + + LogEvent with message to be formatted + False when logevent has no properties to be extracted + + + + Appends the logevent message to the provided StringBuilder + + LogEvent with message to be formatted + The to append the formatted message. + + + + Get the Raw, unformatted and unstrinyfied, value + + + + + Get the raw value + + + The value + RawValue supported? + + + + Interface implemented by layouts and layout renderers. + + + + + Renders the the value of layout or layout renderer in the context of the specified log event. + + The log event. + String representation of a layout. + + + + Supports mocking of SMTP Client code. + + + + + Specifies how outgoing email messages will be handled. + + + + + Gets or sets the name or IP address of the host used for SMTP transactions. + + + + + Gets or sets the port used for SMTP transactions. + + + + + Gets or sets a value that specifies the amount of time after which a synchronous Send call times out. + + + + + Gets or sets the credentials used to authenticate the sender. + + + + + Sends an e-mail message to an SMTP server for delivery. These methods block while the message is being transmitted. + + + System.Net.Mail.MailMessage + MailMessage + A MailMessage that contains the message to send. + + + + Gets or sets the folder where applications save mail messages to be processed by the local SMTP server. + + + + + Supports rendering as string value with limited or no allocations (preferred) + + + + + Renders the value of layout renderer in the context of the specified log event + + + null if not possible or unknown + + + + Supports object initialization and termination. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Allows components to request stack trace information to be provided in the . + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Render the event info as parse as short + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as int + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Render the event info as parse as bool + + current layout + + default value when the render + layout name for log message to internal log when logging fails + + + + + Logger configuration. + + + + + Initializes a new instance of the class. + + The targets by level. + Use the old exception log handling of NLog 3.0? + + + + Use the old exception log handling of NLog 3.0? + + This method was marked as obsolete before NLog 4.3.11 and it will be removed in NLog 5. + + + + Gets targets for the specified level. + + The level. + Chain of targets with attached filters. + + + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + New formatter + + When true: Do not fallback to StringBuilder.Format for positional templates + + + + + The MessageFormatter delegate + + + + + + + + Most-Recently-Used-Cache, that discards less frequently used items on overflow + + + + + Constructor + + Maximum number of items the cache will hold before discarding. + + + + Attempt to insert item into cache. + + Key of the item to be inserted in the cache. + Value of the item to be inserted in the cache. + true when the key does not already exist in the cache, false otherwise. + + + + Lookup existing item in cache. + + Key of the item to be searched in the cache. + Output value of the item found in the cache. + True when the key is found in the cache, false otherwise. + + + + Supports mocking of SMTP Client code. + + + Disabled Error CS0618 'SmtpClient' is obsolete: 'SmtpClient and its network of types are poorly designed, + we strongly recommend you use https://github.com/jstedfast/MailKit and https://github.com/jstedfast/MimeKit instead' + + + + + Network sender which uses HTTP or HTTPS POST. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Creates instances of objects for given URLs. + + + + + Creates a new instance of the network sender based on a network URL. + + URL that determines the network sender to be created. + The maximum queue size. + SSL protocols for TCP + KeepAliveTime for TCP + + A newly created network sender. + + + + + Interface for mocking socket calls. + + + + + A base class for all network senders. Supports one-way sending of messages + over various protocols. + + + + + Initializes a new instance of the class. + + The network URL. + + + + Gets the address of the network endpoint. + + + + + Gets the last send time. + + + + + Initializes this network sender. + + + + + Closes the sender and releases any unmanaged resources. + + The continuation. + + + + Flushes any pending messages and invokes a continuation. + + The continuation. + + + + Send the given text over the specified protocol. + + Bytes to be sent. + Offset in buffer. + Number of bytes to send. + The asynchronous continuation. + + + + Closes the sender and releases any unmanaged resources. + + + + + Performs sender-specific initialization. + + + + + Performs sender-specific close operation. + + The continuation. + + + + Performs sender-specific flush. + + The continuation. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Parses the URI into an endpoint address. + + The URI to parse. + The address family. + Parsed endpoint. + + + + Default implementation of . + + + + + + + + A base class for network senders that can block or send out-of-order + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + + + + Actually sends the given text over the specified protocol. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Performs sender-specific flush. + + The continuation. + + + + Socket proxy for mocking Socket code. + + + + + Initializes a new instance of the class. + + The address family. + Type of the socket. + Type of the protocol. + + + + Gets underlying socket instance. + + + + + Closes the wrapped socket. + + + + + Invokes ConnectAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Invokes SendToAsync method on the wrapped socket. + + The instance containing the event data. + Result of original method. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Sends messages over a TCP network connection. + + + + + Initializes a new instance of the class. + + URL. Must start with tcp://. + The address family. + + + + Creates the socket with given parameters. + + The host address. + The address family. + Type of the socket. + Type of the protocol. + Instance of which represents the socket. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Facilitates mocking of class. + + + + + Raises the Completed event. + + + + + Sends messages over the network as UDP datagrams. + + + + + Initializes a new instance of the class. + + URL. Must start with udp://. + The address family. + + + + Creates the socket. + + The address family. + Type of the socket. + Type of the protocol. + Implementation of to use. + + + + Performs sender-specific initialization. + + + + + Closes the socket. + + The continuation. + + + + Sends the specified text as a UDP datagram. + + The bytes to be sent. + Offset in buffer. + Number of bytes to send. + The async continuation to be invoked after the buffer has been sent. + To be overridden in inheriting classes. + + + + Scans (breadth-first) the object graph following all the edges whose are + instances have attached and returns + all objects implementing a specified interfaces. + + + + + Finds the objects which have attached which are reachable + from any of the given root objects when traversing the object graph over public properties. + + Type of the objects to return. + Also search the properties of the wanted objects. + The root objects. + Ordered list of objects implementing T. + + + ISet is not there in .net35, so using HashSet + + + + Helper for extracting propertyPath + + + + + Object Path to check + + + + + Try get value from , using , and set into + + + + + + + + Converts object into a List of property-names and -values using reflection + + + + + Scans properties for name (Skips string-compare and value-lookup until finding match) + + + + + Scans properties for name (Skips property value lookup until finding match) + + + + + Scans properties for name + + + + + Combine paths + + basepath, not null + optional dir + optional file + + + + + Cached directory separator char array to avoid memory allocation on each method call. + + + + + Trims directory separators from the path + + path, could be null + never null + + + + Detects the platform the NLog is running on. + + + + + Gets the current runtime OS. + + + + + Gets a value indicating whether current OS is Win32-based (desktop or mobile). + + + + + Gets a value indicating whether current OS is Unix-based. + + + + + Gets a value indicating whether current runtime is Mono-based + + + + + Gets a value indicating whether current runtime supports use of mutex + + + + + Will creating a mutex succeed runtime? + "Cached" detection + + + + + Will creating a mutex succeed runtime? + + + + + Dictionary that combines the standard with the + MessageTemplate-properties extracted from the . + + The are returned as the first items + in the collection, and in positional order. + + + + + Value of the property + + + + + Is this a property of the message? + + + + + + + Value of the property + Is this a property of the message? + + + + The properties of the logEvent + + + + + The properties extracted from the message + + + + + Injects the list of message-template-parameter into the IDictionary-interface + + Message-template-parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Check if the message-template-parameters can be used directly without allocating a dictionary + + Message-template-parameters + Are all parameter names unique (true / false) + + + + Attempt to insert the message-template-parameters into an empty dictionary + + Message-template-parameters + The initially empty dictionary + Message-template-parameters was inserted into dictionary without trouble (true/false) + + + + Attempt to override the existing dictionary values using the message-template-parameters + + Message-template-parameters + The already filled dictionary + List of unique message-template-parameters + + + + + + + + + + + + + + + + + + + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + Will always throw, as collection is readonly + + + + + + + + + + + + + + + + + + + Reflection helpers for accessing properties. + + + + + Set value parsed from string. + + object instance to set with property + name of the property on + The value to be parsed. + + + + + Get property info + + object which could have property + property name on + result when success. + success. + + + + Try parse of string to (Generic) list, comma separated. + + + If there is a comma in the value, then (single) quote the value. For single quotes, use the backslash as escape + + + + + Attempt to reuse the HashSet.Comparer from the original HashSet-object (Ex. StringComparer.OrdinalIgnoreCase) + + + + + Try get the property + + + + + Reflection helpers. + + + + + Gets all usable exported types from the given assembly. + + Assembly to scan. + Usable types from the given assembly. + Types which cannot be loaded are skipped. + + + + Is this a static class? + + + + This is a work around, as Type doesn't have this property. + From: https://stackoverflow.com/questions/1175888/determine-if-a-type-is-static + + + + + Optimized delegate for calling MethodInfo + + Object instance, use null for static methods. + Complete list of parameters that matches the method, including optional/default parameters. + + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Creates an optimized delegate for calling the MethodInfo using Expression-Trees + + Method to optimize + Optimized delegate for invoking the MethodInfo + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Controls a single allocated AsyncLogEventInfo-List for reuse (only one active user) + + + + + Controls a single allocated char[]-buffer for reuse (only one active user) + + + + + Controls a single allocated StringBuilder for reuse (only one active user) + + + + + Controls a single allocated object for reuse (only one active user) + + + + Empty handle when is disabled + + + + Creates handle to the reusable char[]-buffer for active usage + + Handle to the reusable item, that can release it again + + + + Access the acquired reusable object + + + + + Controls a single allocated MemoryStream for reuse (only one active user) + + + + + Supported operating systems. + + + If you add anything here, make sure to add the appropriate detection + code to + + + + + Unknown operating system. + + + + + Unix/Linux operating systems. + + + + + Desktop versions of Windows (95,98,ME). + + + + + Windows NT, 2000, 2003 and future versions based on NT technology. + + + + + Macintosh Mac OSX + + + + + Simple character tokenizer. + + + + + Initializes a new instance of the class. + + The text to be tokenized. + + + + Current position in + + + + + Full text to be parsed + + + + + Check current char while not changing the position. + + + + + + Read the current char and change position + + + + + + Get the substring of the + + + + + + + + Implements a single-call guard around given continuation function. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + + + + Continuation function which implements the single-call guard. + + The exception. + + + + HashSet optimized for single item + + + + + + Insert single item on scope start, and remove on scope exit + + Item to insert in scope + Existing hashset to update + Force allocation of real hashset-container + HashSet EqualityComparer + + + + Add item to collection, if it not already exists + + Item to insert + + + + Clear hashset + + + + + Check if hashset contains item + + + Item exists in hashset (true/false) + + + + Remove item from hashset + + + Item removed from hashset (true/false) + + + + Copy items in hashset to array + + Destination array + Array offset + + + + Create hashset enumerator + + Enumerator + + + + Provides helpers to sort log events and associated continuations. + + + + + Key selector delegate. + + The type of the value. + The type of the key. + Value to extract key information from. + Key selected from log event. + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Performs bucket sort (group by) on an array of items and returns a dictionary for easy traversal of the result set. + + The type of the value. + The type of the key. + The inputs. + The key selector function. + The key comparer function. + + Dictionary where keys are unique input keys, and values are lists of . + + + + + Single-Bucket optimized readonly dictionary. Uses normal internally Dictionary if multiple buckets are needed. + + Avoids allocating a new dictionary, when all items are using the same bucket + + The type of the key. + The type of the value. + + + + + + + + + + + + + + + + Allows direct lookup of existing keys. If trying to access non-existing key exception is thrown. + Consider to use instead for better safety. + + Key value for lookup + Mapped value found + + + + Non-Allocating struct-enumerator + + + + + + + + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + Will always throw, as dictionary is readonly + + + Will always throw, as dictionary is readonly + + + + + + + + + Will always throw, as dictionary is readonly + + + + Utilities for dealing with values. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + + + + Gets the fully qualified name of the class invoking the calling method, including the + namespace but not the assembly. + + StackFrame from the calling method + Fully qualified class name + + + + Returns the assembly from the provided StackFrame (If not internal assembly) + + Valid assembly, or null if assembly was internal + + + + Returns the classname from the provided StackFrame (If not from internal assembly) + + + Valid class name, or empty string if assembly was internal + + + + Stream helpers + + + + + Copy to output stream and skip BOM if encoding is UTF8 + + + + + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + .net35 doesn't have a .copyto + + + + Copy stream input to output. Skip the first bytes + + stream to read from + stream to write to + first bytes to skip (optional) + + + + Helpers for , which is used in e.g. layout renderers. + + + + + Renders the specified log event context item and appends it to the specified . + + append to this + value to be appended + format string. If @, then serialize the value with the Default JsonConverter. + provider, for example culture + + + + Appends int without using culture, and most importantly without garbage + + + value to append + + + + Appends uint without using culture, and most importantly without garbage + + Credits Gavin Pugh - https://www.gavpugh.com/2010/04/01/xnac-avoiding-garbage-when-working-with-stringbuilder/ + + + value to append + + + + Convert DateTime into UTC and format to yyyy-MM-ddTHH:mm:ss.fffffffZ - ISO 6801 date (Round-Trip-Time) + + + + + Clears the provider StringBuilder + + + + + + Copies the contents of the StringBuilder to the MemoryStream using the specified encoding (Without BOM/Preamble) + + StringBuilder source + MemoryStream destination + Encoding used for converter string into byte-stream + Helper char-buffer to minimize memory allocations + + + + Copies the contents of the StringBuilder to the destination StringBuilder + + StringBuilder source + StringBuilder destination + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle character to search for + + Index of the first occurrence (Else -1) + + + + Scans the StringBuilder for the position of needle character + + StringBuilder source + needle characters to search for + + Index of the first occurrence (Else -1) + + + + Compares the contents of two StringBuilders + + + Correct implementation of that also works when is not the same + + True when content is the same + + + + Compares the contents of a StringBuilder and a String + + True when content is the same + + + + Append a number and pad with 0 to 2 digits + + append to this + the number + + + + Append a number and pad with 0 to 4 digits + + append to this + the number + + + + Append a int type (byte, int) as string + + + + + Constructor + + Max number of items + Initial StringBuilder Size + Max StringBuilder Size + + + + Takes StringBuilder from pool + + Allow return to pool + + + + Releases StringBuilder back to pool at its right place + + + + + Keeps track of acquired pool item + + + + + Releases pool item back into pool + + + + + Helpers for . + + + + + IsNullOrWhiteSpace, including for .NET 3.5 + + + + + + + Split a string + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Split a string, optional quoted value + + Text to split + Character to split the + Quote character + + Escape for the , not escape for the + , use quotes for that. + + + + + Represents target with a chain of filters which determine + whether logging should happen. + + + + + cached result as calculating is expensive. + + + + + Initializes a new instance of the class. + + The target. + The filter chain. + Default action if none of the filters match. + + + + Gets the target. + + The target. + + + + Gets the filter chain. + + The filter chain. + + + + Default action if none of the filters match. + + + + + Gets or sets the next item in the chain. + + The next item in the chain. + This is for example the 'target2' logger in writeTo='target1,target2' + + + + Gets the stack trace usage. + + A value that determines stack trace handling. + + + + Helper for dealing with thread-local storage. + + + + + Allocates the data slot for storing thread-local information. + + Allocated slot key. + + + + Gets the data for a slot in thread-local storage. + + Type of the data. + The slot to get data for. + Automatically create the object if it doesn't exist. + + Slot data (will create T if null). + + + + + Wraps with a timeout. + + + + + Initializes a new instance of the class. + + The asynchronous continuation. + The timeout. + + + + Continuation function which implements the timeout logic. + + The exception. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Transformation on a layout. Pre-calculated if the layout has a fixed value. + + + + + Create TransformedLayout. + + Layout + Transformation method + Optional renderer, otherwise is used + + + + + + + Create TransformedLayout. If is null, then the returns null + + Layout + Transformation method + Optional renderer, otherwise is used + null if is null + + + + + + + + + + URL Encoding helper. + + + + Allow UnreservedMarks instead of ReservedMarks, as specified by chosen RFC + + + Use RFC2396 standard (instead of RFC3986) + + + Should use lowercase when doing HEX escaping of special characters + + + Replace space ' ' with '+' instead of '%20' + + + Skip UTF8 encoding, and prefix special characters with '%u' + + + + Escape unicode string data for use in http-requests + + unicode string-data to be encoded + target for the encoded result + s for how to perform the encoding + + + + Convert the wide-char into utf8-bytes, and then escape + + + + + + + + + Is allowed? + + + + + + + + Is a-z / A-Z / 0-9 + + + + + + + Prevents the Xamarin linker from linking the target. + + + By applying this attribute all of the members of the target will be kept as if they had been referenced by the code. + + + + + Ensures that all members of this type are preserved + + + + + Flags the method as a method to preserve during linking if the container class is pulled in. + + + + + Helper class for XML + + + + + removes any unusual unicode characters that can't be encoded into XML + + + + + Cleans string of any invalid XML chars found + + unclean string + string with only valid XML chars + + + + Pretest, small text and not escape needed + + + + + + + + Converts object value to invariant format, and strips any invalid xml-characters + + Object value + Object value converted to string + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object value converted to string + + + + XML elements must follow these naming rules: + - Element names are case-sensitive + - Element names must start with a letter or underscore + - Element names can contain letters, digits, hyphens, underscores, and periods + - Element names cannot contain spaces + + + + + + + Converts object value to invariant format (understood by JavaScript) + + Object value + Object TypeCode + Check and remove unusual unicode characters from the result string. + Object value converted to string + + + + Safe version of WriteAttributeString + + + + + + + + + + Safe version of WriteAttributeString + + + + + + + + Safe version of WriteElementSafeString + + + + + + + + + + Safe version of WriteCData + + + + + + + Interface for handling object transformation + + + + + Takes a dangerous (or massive) object and converts into a safe (or reduced) object + + + Null if unknown object, or object cannot be handled + + + + + Provides an interface to execute System.Actions without surfacing any exceptions raised for that action. + + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Render a message template property to a string + + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Log event context data. + + + + + Initializes a new instance of the class. + + + + + Gets or sets string that will be used to separate key/value pairs. + + + + + + Get or set if empty values should be included. + + A value is empty when null or in case of a string, null or empty string. + + + + + + Gets or sets the keys to exclude from the output. If omitted, none are excluded. + + + + + + Gets or sets how key/value pairs will be formatted. + + + + + + Renders all log event's properties and appends them to the specified . + + The to append the rendered data to. + Logging event. + + + + Designates a property of the class as an ambient property. + + + non-ambient: ${uppercase:${level}} + ambient : ${level:uppercase} + + + + + Initializes a new instance of the class. + + Ambient property name. + + + + Used to render the application domain name. + + + + + Create a new renderer + + + + + Create a new renderer + + + + + Format string. Possible values: "Short", "Long" or custom like {0} {1}. Default "Long" + The first parameter is the , the second the second the + This string is used in + + + + + + + + + + + + + + + Renders the assembly version information for the entry assembly or a named assembly. + + + As this layout renderer uses reflection and version information is unlikely to change during application execution, + it is recommended to use it in conjunction with the . + + + The entry assembly can't be found in some cases e.g. ASP.NET, unit tests, etc. + + + + + Initializes a new instance of the class. + + + + + The (full) name of the assembly. If null, using the entry assembly. + + + + + + Gets or sets the type of assembly version to retrieve. + + + Some version type and platform combinations are not fully supported. + - UWP earlier than .NET Standard 1.5: Value for is always returned unless the parameter is specified. + - Silverlight: Value for is always returned. + + + + + + Gets or sets the custom format of the assembly version output. + + + Supported placeholders are 'major', 'minor', 'build' and 'revision'. + The default .NET template for version numbers is 'major.minor.build.revision'. See + https://docs.microsoft.com/en-gb/dotnet/api/system.version?view=netframework-4.7.2#remarks + for details. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders an assembly version and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Gets the assembly specified by , or entry assembly otherwise + + Found assembly + + + + Type of assembly version to retrieve. + + + + + Gets the assembly version. + + + + + Gets the file version. + + + + + Gets additional version information. + + + + + The current application domain's base directory. + + + + + cached + + + + + Use base dir of current process. Alternative one can just use ${processdir} + + + + + + Fallback to the base dir of current process, when AppDomain.BaseDirectory is Temp-Path (.NET Core 3 - Single File Publish) + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the base directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the base directory. + + + + + + Renders the application base directory and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site source file name. Full callsite + + + + + Gets or sets a value indicating whether to include source file path. + + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + + + + + + The call site (class name, method name and source information). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to render the class name. + + + + + + Gets or sets a value indicating whether to render the include the namespace with . + + + + + + Gets or sets a value indicating whether to render the method name. + + + + + + Gets or sets a value indicating whether the method name will be cleaned up if it is detected as an anonymous delegate. + + + + + + Gets or sets a value indicating whether the method and class names will be cleaned up if it is detected as an async continuation + (everything after an await-statement inside of an async method). + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets a value indicating whether to render the source file name and line number. + + + + + + Gets or sets a value indicating whether to include source file path. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The call site source line number. Full callsite + + + + + Gets or sets the number of frames to skip. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + + + + + + A counter value (increases on each layout rendering). + + + + + Gets or sets the initial value of the counter. + + + + + + Gets or sets the value to be added to the counter after each layout rendering. + + + + + + Gets or sets the name of the sequence. Different named sequences can have individual values. + + + + + + + + + The current working directory of the application. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the current directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the current directory. + + + + + + + + + + + + Current date and time. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the date format. Can be any argument accepted by DateTime.ToString(format). + + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + + + + + + + + + + DB null for a database + + + + + + + + + + + The OS dependent directory separator + + + + + + + + + + + The environment variable. + + + + + Gets or sets the name of the environment variable. + + + + + + Gets or sets the default value to be used when the environment variable is not set. + + + + + + + + + + + + Thread identity information (username). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether username should be included. + + + + + + Gets or sets a value indicating whether domain name should be included. + + + + + + Gets or sets the default value to be used when the User is not set. + + + + + + Gets or sets the default value to be used when the Domain is not set. + + + + + + + + + + + + Log event context data. + + This class was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the name of the item. + + + + + + Renders the specified log event context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Log event context data. See . + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + + + + + + + + + + Exception information provided through + a call to one of the Logger.*Exception() methods. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the format of the output. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + + + Gets or sets the format of the output of inner exceptions. Must be a comma-separated list of exception + properties: Message, Type, ShortType, ToString, Method, StackTrace. + This parameter value is case-insensitive. + + + + + + Gets or sets the separator used to concatenate parts specified in the Format. + + + + + + Gets or sets the separator used to concatenate exception data specified in the Format. + + + + + + Gets or sets the maximum number of inner exceptions to include in the output. + By default inner exceptions are not enabled for compatibility with NLog 1.0. + + + + + + Gets or sets the separator between inner exceptions. + + + + + + Gets or sets whether to render innermost Exception from + + + + + Gets the formats of the output of inner exceptions to be rendered in target. + + + + + + + Gets the formats of the output to be rendered in target. + + + + + + + + + + + + + Appends the Message of an Exception to the specified . + + The to append the rendered data to. + The exception containing the Message to append. + + + + Appends the method name from Exception's stack trace to the specified . + + The to append the rendered data to. + The Exception whose method name should be appended. + + + + Appends the stack trace from an Exception to the specified . + + The to append the rendered data to. + The Exception whose stack trace should be appended. + + + + Appends the result of calling ToString() on an Exception to the specified . + + The to append the rendered data to. + The Exception whose call to ToString() should be appended. + + + + Appends the type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose type should be appended. + + + + Appends the short type of an Exception to the specified . + + The to append the rendered data to. + The Exception whose short type should be appended. + + + + Appends the application source of an Exception to the specified . + + The to append the rendered data to. + The Exception whose source should be appended. + + + + Appends the HResult of an Exception to the specified . + + The to append the rendered data to. + The Exception whose HResult should be appended. + + + + Appends the contents of an Exception's Data property to the specified . + + The to append the rendered data to. + The Exception whose Data property elements should be appended. + + + + Appends all the serialized properties of an Exception into the specified . + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Appends all the additional properties of an Exception like Data key-value-pairs + + The to append the rendered data to. + The Exception whose properties should be appended. + + + + Split the string and then compile into list of Rendering formats. + + + + + Renders contents of the specified file. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the name of the file. + + + + + + Gets or sets the encoding used in the file. + + The encoding. + + + + + Renders the contents of the specified file and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + Name used in config without ${}. E.g. "test" could be used as "${test}". + + + + + Method that renders the layout. + + + + + Format string for conversion from object to string. + + + + + + + + + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + A layout renderer which could have different behavior per instance by using a . + + + + + Initializes a new instance of the class. + + Name without ${}. + Method that renders the layout. + + + + The information about the garbage collector. + + + + + Gets or sets the property to retrieve. + + + + + + + + + Gets or sets the property of System.GC to retrieve. + + + + + Total memory allocated. + + + + + Total memory allocated (perform full garbage collection first). + + + + + Gets the number of Gen0 collections. + + + + + Gets the number of Gen1 collections. + + + + + Gets the number of Gen2 collections. + + + + + Maximum generation number supported by GC. + + + + + Render a Global Diagnostics Context item. See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + + + + Globally-unique identifier (GUID). + + + + + Gets or sets the GUID format as accepted by Guid.ToString() method. + + + + + + Generate the Guid from the NLog LogEvent (Will be the same for all targets) + + + + + + + + + + + + + + + The host name that the process is running on. + + + + + + + + Gets the host name and falls back to computer name if not available + + + + + Tries the lookup value. + + The lookup function. + Type of the lookup. + + + + + + + + Thread identity information (name and authentication information). + + + + + Gets or sets the separator to be used when concatenating + parts of identity information. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.Name. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.AuthenticationType. + + + + + + Gets or sets a value indicating whether to render Thread.CurrentPrincipal.Identity.IsAuthenticated. + + + + + + + + + Installation parameter (passed to InstallNLogConfig). + + + + + Gets or sets the name of the parameter. + + + + + + Renders the specified installation parameter and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render environmental information related to logging events. + + + + + Gets the logging configuration this target is part of. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Renders the the value of layout renderer in the context of the specified log event. + + The log event. + String representation of a layout renderer. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Renders the value of layout renderer in the context of the specified log event. + + The log event. + The layout render output is appended to builder + + + + Renders the value of layout renderer in the context of the specified log event into . + + The to append the rendered data to. + Logging event. + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Get the for rendering the messages to a + + LogEvent with culture + Culture in on Layout level + + + + + Get the for rendering the messages to a , needed for date and number formats + + LogEvent with culture + Culture in on Layout level + + + is preferred + + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Short-cut for registering to default + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Marks class as a layout renderer and assigns a name to it. + + This attribute is not required when registering the layout in the API. + + + + Initializes a new instance of the class. + + Name of the layout renderer, without the `${ }` + + + + Format of the ${level} layout renderer output. + + + + + Render the LogLevel standard name. + + + + + Render the first character of the level. + + + + + Render the ordinal (aka number) for the level. + + + + + Render the LogLevel full name, expanding Warn / Info abbreviations + + + + + The log level. + + + + + Gets or sets a value indicating the output format of the level. + + + + + + + + + + + + + + + A string literal. + + + This is used to escape '${' sequence + as ;${literal:text=${}' + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The literal text value. + This is used by the layout compiler. + + + + Gets or sets the literal text. + + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + XML event description compatible with log4j, Chainsaw and NLogViewer. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes the layout renderer. + + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets a value indicating whether the XML should use spaces for indentation. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDLC item separator. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the level of stack trace information required by the implementing class. + + + + + Renders the XML logging event and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The logger name. + + + + + Gets or sets a value indicating whether to render short logger name (the part after the trailing dot character). + + + + + + + + + + + + The date and time in a long, sortable format yyyy-MM-dd HH:mm:ss.ffff. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the date in the long format (yyyy-MM-dd HH:mm:ss.ffff) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The machine name that the process is running on. + + + + + + + + + + + Render a Mapped Diagnostic Context item, See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + Render a Mapped Diagnostic Logical Context item (based on CallContext). + See + + + + + Gets or sets the name of the item. + + + + + + Format string for conversion from object to string. + + + + + + + + + + + + The formatted log message. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to log exception along with message. + + + + + + Gets or sets the string that separates message from the exception. + + + + + + Gets or sets whether it should render the raw message without formatting parameters + + + + + + + + + + + + Render a Nested Diagnostic Context item. + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested diagnostics context output. + + + + + + Renders the specified Nested Diagnostics Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Render a Nested Diagnostic Logical Context item (Async scope) + See + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of bottom stack frames to be rendered. + + + + + + Gets or sets the separator to be used for concatenating nested logical context output. + + + + + + Renders the specified Nested Logical Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Timing Renderer (Async scope) + + + + + Gets or sets whether to only include the duration of the last scope created + + + + + + Gets or sets whether to just display the scope creation time, and not the duration + + + + + + Gets or sets the TimeSpan format. Can be any argument accepted by TimeSpan.ToString(format). + + + + + + Renders the timing details of the Nested Logical Context item and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A newline literal. + + + + + Renders the specified string literal and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The directory where NLog.dll is located. + + + + + Initializes static members of the NLogDirLayoutRenderer class. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The executable directory from the FileName, + using the current process + + + + + Gets or sets the name of the file to be Path.Combine()'d with with the process directory. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with with the process directory. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + + + + The information about the running process. + + + + + Gets or sets the property to retrieve. + + + + + + Gets or sets the format-string to use if the property supports it (Ex. DateTime / TimeSpan / Enum) + + + + + + + + + + + + + + + Property of System.Diagnostics.Process to retrieve. + + + + + Base Priority. + + + + + Exit Code. + + + + + Exit Time. + + + + + Process Handle. + + + + + Handle Count. + + + + + Whether process has exited. + + + + + Process ID. + + + + + Machine name. + + + + + Handle of the main window. + + + + + Title of the main window. + + + + + Maximum Working Set. + + + + + Minimum Working Set. + + + + + Non-paged System Memory Size. + + + + + Non-paged System Memory Size (64-bit). + + + + + Paged Memory Size. + + + + + Paged Memory Size (64-bit).. + + + + + Paged System Memory Size. + + + + + Paged System Memory Size (64-bit). + + + + + Peak Paged Memory Size. + + + + + Peak Paged Memory Size (64-bit). + + + + + Peak Virtual Memory Size. + + + + + Peak Virtual Memory Size (64-bit).. + + + + + Peak Working Set Size. + + + + + Peak Working Set Size (64-bit). + + + + + Whether priority boost is enabled. + + + + + Priority Class. + + + + + Private Memory Size. + + + + + Private Memory Size (64-bit). + + + + + Privileged Processor Time. + + + + + Process Name. + + + + + Whether process is responding. + + + + + Session ID. + + + + + Process Start Time. + + + + + Total Processor Time. + + + + + User Processor Time. + + + + + Virtual Memory Size. + + + + + Virtual Memory Size (64-bit). + + + + + Working Set Size. + + + + + Working Set Size (64-bit). + + + + + The process time in format HH:mm:ss.mmm. + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + Write timestamp to builder with format hh:mm:ss:fff + + + + + The sequence ID + + + + + + + + + + + The short date in a sortable format yyyy-MM-dd. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Renders the current short date string (yyyy-MM-dd) and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + System special folder path (includes My Documents, My Music, Program Files, Desktop, and more). + + + + + Gets or sets the system special folder to use. + + + Full list of options is available at MSDN. + The most common ones are: +
    +
  • ApplicationData - roaming application data for current user.
  • +
  • CommonApplicationData - application data for all users.
  • +
  • MyDocuments - My Documents
  • +
  • DesktopDirectory - Desktop directory
  • +
  • LocalApplicationData - non roaming application data
  • +
  • Personal - user profile directory
  • +
  • System - System directory
  • +
+
+ +
+ + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Format of the ${stacktrace} layout renderer output. + + + + + Raw format (multiline - as returned by StackFrame.ToString() method). + + + + + Flat format (class and method names displayed in a single line). + + + + + Detailed flat format (method signatures displayed in a single line). + + + + + Stack trace renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the output format of the stack trace. + + + + + + Gets or sets the number of top stack frames to be rendered. + + + + + + Gets or sets the number of frames to skip. + + + + + + Gets or sets the stack frame separator string. + + + + + + Logger should capture StackTrace, if it was not provided manually + + + + + Gets the level of stack trace information required by the implementing class. + + + + + + Renders the call site and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + A temporary directory. + + + + + Gets or sets the name of the file to be Path.Combine()'d with the directory name. + + + + + + Gets or sets the name of the directory to be Path.Combine()'d with the directory name. + + + + + + + + + Renders the directory where NLog is located and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + The identifier of the current thread. + + + + + + + + The name of the current thread. + + + + + + + + The Ticks value of current date and time. + + + + + + + + + + + The time in a 24-hour, sortable format HH:mm:ss.mmmm. + + + + + Gets or sets a value indicating whether to output UTC time instead of local time. + + + + + + Gets or sets a value indicating whether to output in culture invariant format + + + + + + + + + + + + A renderer that puts into log a System.Diagnostics trace correlation id. + + + + + + + + + + + Render a NLog variable (xml or config) + + + + + Gets or sets the name of the NLog variable. + + + + + + Gets or sets the default value to be used when the variable is not set. + + Not used if Name is null + + + + + Initializes the layout renderer. + + + + + Try get the + + + + + + + Renders the specified variable and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Thread Windows identity information (username). + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether domain name should be included. + + + + + + Gets or sets a value indicating whether username should be included. + + + + + + Renders the current thread windows identity information and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Applies caching to another layout output. + + + The value of the inner layout will be rendered only once and reused subsequently. + + + + + A value indicating when the cache is cleared. + + + + Never clear the cache. + + + Clear the cache whenever the is initialized. + + + Clear the cache whenever the is closed. + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether this is enabled. + + + + + + Gets or sets a value indicating when the cache is cleared. + + + + + + Cachekey. If the cachekey changes, resets the value. For example, the cachekey would be the current day.s + + + + + + Gets or sets a value indicating how many seconds the value should stay cached until it expires + + + + + + Initializes the layout renderer. + + + + + Closes the layout renderer. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + + + + Filters characters not allowed in the file names by replacing them with safe character. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to modify the output of this renderer so it can be used as a part of file path + (illegal characters are replaced with '_'). + + + + + + + + + + + + Escapes output of another layout using JSON rules. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply JSON encoding. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + + + + + + + Left part of a text + + + + + Gets or sets the length in characters. + + + + + + Same as -property, so it can be used as ambient property. + + + ${message:truncate=80} + + + + + + + + + + + + Converts the result of another layout output to lower case. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Render the non-raw value of an object. + + For performance and/or full (formatted) control of the output. + + + + Gets or sets a value indicating whether to disable the IRawValue-interface + + A value of true if IRawValue-interface should be ignored; otherwise, false. + + + + + + + + + + + Render a single property of a object + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + Shortcut for + + + + + + Gets or sets the object-property-navigation-path for lookup of nested property + + + + + + Format string for conversion from object to string. + + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + + + + Only outputs the inner layout when exception has been defined for log message. + + + + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + ${onhasproperties:, Properties\: ${all-event-properties}} + + + + + + + + + + + Horizontal alignment for padding layout renderers. + + + + + When layout text is too long, align it to the left + (remove characters from the right). + + + + + When layout text is too long, align it to the right + (remove characters from the left). + + + + + Applies padding to another layout output. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the number of characters to pad the output to. + + + Positive padding values cause left padding, negative values + cause right padding to the desired width. + + + + + + Gets or sets the padding character. + + + + + + Gets or sets a value indicating whether to trim the + rendered text to the absolute value of the padding length. + + + + + + Gets or sets a value indicating whether a value that has + been truncated (when is true) + will be left-aligned (characters removed from the right) + or right-aligned (characters removed from the left). The + default is left alignment. + + RegistryLayoutRenderer + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Replaces a string in the output of another layout with another string. + + + ${replace:searchFor=\\n+:replaceWith=-:regex=true:inner=${message}} + + + + + Gets or sets the text to search for. + + The text search for. + + + + + Gets or sets a value indicating whether regular expressions should be used. + + A value of true if regular expressions should be used otherwise, false. + + + + + Gets or sets the replacement string. + + The replacement string. + + + + + Gets or sets the group name to replace when using regular expressions. + Leave null or empty to replace without using group name. + + The group name. + + + + + Gets or sets a value indicating whether to ignore case. + + A value of true if case should be ignored when searching; otherwise, false. + + + + + Gets or sets a value indicating whether to search for whole words. + + A value of true if whole words should be searched for; otherwise, false. + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Initializes the layout renderer. + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + This class was created instead of simply using a lambda expression so that the "ThreadAgnosticAttributeTest" will pass + + + + + A match evaluator for Regular Expression based replacing + + Input string. + Group name in the regex. + Replace value. + Match from regex. + Groups replaced with . + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating the string that should be used for separating lines. + + + + + + + + + + + + Right part of a text + + + + + Gets or sets the length in characters. + + + + + + + + + + + + Decodes text "encrypted" with ROT-13. + + + See https://en.wikipedia.org/wiki/ROT13. + + + + + Gets or sets the layout to be wrapped. + + The layout to be wrapped. + This variable is for backwards compatibility + + + + + Encodes/Decodes ROT-13-encoded string. + + The string to be encoded/decoded. + Encoded/Decoded text. + + + + + + + + + + Encodes/Decodes ROT-13-encoded string. + + + + + Substring the result + + + ${substring:${level}:start=2:length=2} + ${substring:${level}:start=-2:length=2} + ${substring:Inner=${level}:start=2:length=2} + + + + + Initializes a new instance of the class. + + + + + Gets or sets the start index. + + Index + + + + + Gets or sets the length in characters. If null, then the whole string + + Index + + + + + + + + + + + Calculate start position + + 0 or positive number + + + + Calculate needed length + + 0 or positive number + + + + Trims the whitespace from the result of another layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether lower case conversion should be applied. + + A value of true if lower case conversion should be applied; otherwise, false. + + + + + + + + + + + Converts the result of another layout output to upper case. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + ${level:uppercase} // [AmbientProperty] + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether upper case conversion should be applied. + + A value of true if upper case conversion should be applied otherwise, false. + + + + + Gets or sets the culture used for rendering. + + + + + + + + + + + + Encodes the result of another layout output for use with URLs. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether spaces should be translated to '+' or '%20'. + + A value of true if space should be translated to '+'; otherwise, false. + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Outputs alternative layout when the inner layout produces empty result. + + + + + Gets or sets the layout to be rendered when original layout produced empty result. + + + + + + + + + + + + + + + Only outputs the inner layout when the specified condition has been met. + + + + + Gets or sets the condition that must be met for the layout to be printed. + + + + + + If is not met, print this layout. + + + + + + + + + + + + + + + Replaces newline characters from the result of another layout renderer with spaces. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the line length for wrapping. + + + Only positive values are allowed + + + + + + Post-processes the rendered message. + + The text to be post-processed. + Post-processed text. + + + + Base class for s which wrapping other s. + + This has the property (which is default) and can be used to wrap. + + + ${uppercase:${level}} //[DefaultParameter] + ${uppercase:Inner=${level}} + + + + + Gets or sets the wrapped layout. + + [DefaultParameter] so Inner: is not required if it's the first + + + + + + + + + Renders the inner message, processes it and appends it to the specified . + + The to append the rendered data to. + Logging event. + + + + Appends the rendered output from -layout and transforms the added output (when necessary) + + Logging event. + The to append the rendered data to. + Start position for any necessary transformation of . + + + + Transforms the output of another layout. + + Logging event. + Output to be transform. + Transformed text. + + + + Transforms the output of another layout. + + Output to be transform. + Transformed text. + + + + Renders the inner layout contents. + + The log event. + Contents of inner layout. + + + + Base class for s which wrapping other s. + + This expects the transformation to work on a + + + + + + + + Transforms the output of another layout. + + + Output to be transform. + + + + Transforms the output of another layout. + + Output to be transform. + + + + Renders the inner layout contents. + + + for the result + + + + + + + + + + + + + + + + + + Converts the result of another layout output to be XML-compliant. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value indicating whether to apply XML encoding. + + Ensures always valid XML, but gives a performance hit + + + + + Gets or sets a value indicating whether to transform newlines (\r\n) into ( ) + + + + + + + + + + + + A layout containing one or more nested layouts. + + + + + Initializes a new instance of the class. + + + + + Gets the inner layouts. + + + + + + Initializes the layout. + + + + + Formats the log event relying on inner layouts. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event relying on inner layouts. + + The logging event. + for the result + + + + Closes the layout. + + + + + Generate description of Compound Layout + + Compound Layout String Description + + + + A column in the CSV. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the column. + The layout of the column. + + + + Gets or sets the name of the column. + + + + + + Gets or sets the layout of the column. + + + + + + Gets or sets the override of Quoting mode + + + and are faster than the default + + + + + + Specifies allowed column delimiters. + + + + + Automatically detect from regional settings. + + + + + Comma (ASCII 44). + + + + + Semicolon (ASCII 59). + + + + + Tab character (ASCII 9). + + + + + Pipe character (ASCII 124). + + + + + Space character (ASCII 32). + + + + + Custom string, specified by the CustomDelimiter. + + + + + A specialized layout that renders CSV-formatted events. + + If is set, then the header generation with column names will be disabled. + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + Gets or sets a value indicating whether CVS should include header. + + A value of true if CVS should include header; otherwise, false. + + + + + Gets or sets the column delimiter. + + + + + + Gets or sets the quoting mode. + + + + + + Gets or sets the quote Character. + + + + + + Gets or sets the custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). + + + + + + Initializes the layout. + + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Formats the log event for write. + + The logging event. + for the result + + + + Get the headers with the column names. + + + + + + Header with column names for CSV layout. + + + + + Initializes a new instance of the class. + + The parent. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Generate description of CSV Layout + + CSV Layout String Description + + + + Specifies CSV quoting modes. + + + + + Quote all column (Fast) + + + + + Quote nothing (Very fast) + + + + + Quote only whose values contain the quote symbol or the separator (Slow) + + + + + JSON attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with json-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Json encoded. + + + + + + Gets or sets a value indicating whether to escape non-ascii characters + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A specialized layout that renders JSON-formatted events. + + + + + Initializes a new instance of the class. + + + + + Gets the array of attributes' configurations. + + + + + + Gets or sets the option to suppress the extra spaces in the output json + + + + + + Gets or sets the option to render the empty object value {} + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as JSON) + + + + + + List of property names to exclude when is true + + + + + + How far should the JSON serializer follow object references before backing off + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Formats the log event as a JSON document for writing. + + The logging event. + for the result + + + + Formats the log event as a JSON document for writing. + + The log event to be formatted. + A JSON string representation of the log event. + + + + Generate description of JSON Layout + + JSON Layout String Description + + + + Abstract interface that layouts must implement. + + + + + Is this layout initialized? See + + + + + Gets a value indicating whether this layout is thread-agnostic (can be rendered on any thread). + + + Layout is thread-agnostic if it has been marked with [ThreadAgnostic] attribute and all its children are + like that as well. + + Thread-agnostic layouts only use contents of for its output. + + + + + Gets the level of stack trace information required for rendering. + + + + + Gets the logging configuration this target is part of. + + + + + Converts a given text to a . + + Text to be converted. + object represented by the text. + + + + Implicitly converts the specified string to a . + + The layout string. + Instance of .' + + + + Implicitly converts the specified string to a . + + The layout string. + The NLog factories to use when resolving layout renderers. + Instance of . + + + + Implicitly converts the specified string to a . + + The layout string. + Whether should be thrown on parse errors (false = replace unrecognized tokens with a space). + Instance of . + + + + Create a from a lambda method. + + Method that renders the layout. + Tell if method is safe for concurrent threading. + Instance of . + + + + Precalculates the layout for the specified log event and stores the result + in per-log event cache. + + Only if the layout doesn't have [ThreadAgnostic] and doesn't contain layouts with [ThreadAgnostic]. + + The log event. + + Calling this method enables you to store the log event in a buffer + and/or potentially evaluate it in another thread even though the + layout may contain thread-dependent renderer. + + + + + Renders the event info in layout. + + The event info. + String representing log event. + + + + Optimized version of for internal Layouts. Works best + when override of is available. + + The event info. + Appends the string representing log event to target + Should rendering result be cached on LogEventInfo + + + + Valid default implementation of , when having implemented the optimized + + The logging event. + StringBuilder to help minimize allocations [optional]. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Initializes the layout. + + + + + Closes the layout. + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Register a custom Layout. + + Short-cut for registering to default + Type of the Layout. + Name of the Layout. + + + + Optimized version of for internal Layouts, when + override of is available. + + + + + Try get value + + + rawValue if return result is true + false if we could not determine the rawValue + + + + Marks class as a layout renderer and assigns a format string to it. + + + + + Initializes a new instance of the class. + + Layout name. + + + + Parses layout strings. + + + + + Add to + + + + + + + Options available for + + + + + Default options + + + + + Layout renderer method can handle concurrent threads + + + + + Layout renderer method is agnostic to current thread context. This means it will render the same result indepdent of thread-context. + + + + + A specialized layout that supports header and footer. + + + + + Gets or sets the body layout (can be repeated multiple times). + + + + + + Gets or sets the header layout. + + + + + + Gets or sets the footer layout. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result. + + + + A specialized layout that renders Log4j-compatible XML events. + + + This layout is not meant to be used explicitly. Instead you can use ${log4jxmlevent} layout renderer. + + + + + Initializes a new instance of the class. + + + + + Gets the instance that renders log events. + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + The rendered layout. + + + + Renders the layout for the specified logging event by invoking layout renderers. + + The logging event. + for the result + + + + Represents a string with embedded placeholders that can render contextual information. + + + This layout is not meant to be used explicitly. Instead you can just use a string containing layout + renderers everywhere the layout is required. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout string to parse. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + + + + Initializes a new instance of the class. + + The layout string to parse. + The NLog factories to use when creating references to layout renderers. + Whether should be thrown on parse errors. + + + + Original text before compile to Layout renderes + + + + + Gets or sets the layout text. + + + + + + Is the message fixed? (no Layout renderers used) + + + + + Get the fixed text. Only set when is true + + + + + Is the message a simple formatted string? (Can skip StringBuilder) + + + + + Gets a collection of objects that make up this layout. + + + + + Gets the level of stack trace information required for rendering. + + + + + Converts a text to a simple layout. + + Text to be converted. + A object. + + + + Escapes the passed text so that it can + be used literally in all places where + layout is normally expected without being + treated as layout. + + The text to be escaped. + The escaped text. + + Escaping is done by replacing all occurrences of + '${' with '${literal:text=${}' + + + + + Evaluates the specified text by expanding all layout renderers. + + The text to be evaluated. + Log event to be used for evaluation. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Evaluates the specified text by expanding all layout renderers + in new context. + + The text to be evaluated. + The input text with all occurrences of ${} replaced with + values provided by the appropriate layout renderers. + + + + Returns a that represents the current object. + + + A that represents the current object. + + + + + + + + + + + + + + + + + + + + XML attribute. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + Encode value with xml-encode + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + A XML Element + + + + + + + + + + + Name of the element + + + + + + Value inside the element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + The name of the top XML node + The value of the top XML node + + + + Name of the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Value inside the XML element + + Upgrade to private protected when using C# 7.2 + + + + + Auto indent and create new lines + + + + + + Gets the array of xml 'elements' configurations. + + + + + + Gets the array of 'attributes' configurations for the element + + + + + + Gets or sets whether a ElementValue with empty value should be included in the output + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets a value indicating whether to include contents of the dictionary. + + + + + + Gets or sets the option to include all properties from the log event (as XML) + + + + + + List of property names to exclude when is true + + + + + + XML element name to use when rendering properties + + + Support string-format where {0} means property-key-name + + Skips closing element tag when having configured + + + + + + XML attribute name to use when rendering property-key + + When null (or empty) then key-attribute is not included + + + Will replace newlines in attribute-value with + + + + + + XML attribute name to use when rendering property-value + + When null (or empty) then value-attribute is not included and + value is formatted as XML-element-value + + + Skips closing element tag when using attribute for value + + Will replace newlines in attribute-value with + + + + + + XML element name to use for rendering IList-collections items + + + + + + How far should the XML serializer follow object references before backing off + + + + + + Initializes the layout. + + + + + Formats the log event as a XML document for writing. + + The logging event. + for the result + + + + Formats the log event as a XML document for writing. + + The log event to be formatted. + A XML string representation of the log event. + + + + write attribute, only if is not empty + + + + + rendered + + + + Generate description of XML Layout + + XML Layout String Description + + + + A specialized layout that renders XML-formatted events. + + + + + Initializes a new instance of the class. + + + + + + + + Name of the root XML element + + + + + + Value inside the root XML element + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + Represents the logging event. + + + + + Gets the date of the first log event created. + + + + + The formatted log message. + + + + + The log message including any parameter placeholders + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + Log message including parameter placeholders. + Log message including parameter placeholders. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + + + + Initializes a new instance of the class. + + Log level. + Logger name. + An IFormatProvider that supplies culture-specific formatting information. + Log message including parameter placeholders. + Parameter array. + Exception information. + + + + Gets the unique identifier of log event which is automatically generated + and monotonously increasing. + + + + + Gets or sets the timestamp of the logging event. + + + + + Gets or sets the level of the logging event. + + + + + Gets a value indicating whether stack trace has been set for this event. + + + + + Gets the stack frame of the method that did the logging. + + + + + Gets the number index of the stack frame that represents the user + code (not the NLog code). + + + + + Gets the entire stack trace. + + + + + Gets the callsite class name + + + + + Gets the callsite member function name + + + + + Gets the callsite source file path + + + + + Gets the callsite source file line number + + + + + Gets or sets the exception information. + + + + + Gets or sets the logger name. + + + + + Gets the logger short name. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets or sets the log message including any parameter placeholders. + + + + + Gets or sets the parameter values or null if no parameters have been specified. + + + + + Gets or sets the format provider that was provided while logging or + when no formatProvider was specified. + + + + + Gets or sets the message formatter for generating + Uses string.Format(...) when nothing else has been configured. + + + + + Gets the formatted message. + + + + + Checks if any per-event properties (Without allocation) + + + + + Gets the dictionary of per-event context properties. + + + + + Gets the dictionary of per-event context properties. + Internal helper for the PropertiesDictionary type. + + Create the event-properties dictionary, even if no initial template parameters + Provided when having parsed the message template and capture template parameters (else null) + + + + + Gets the named parameters extracted from parsing as MessageTemplate + + + + + Gets the dictionary of per-event context properties. + + This property was marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Creates the null event. + + Null log event. + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The message. + The exception. + Instance of . + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + Instance of . + + + + Creates the log event. + + The log level. + Name of the logger. + The exception. + The format provider. + The message. + The parameters. + Instance of . + + + + Creates from this by attaching the specified asynchronous continuation. + + The asynchronous continuation. + Instance of with attached continuation. + + + + Returns a string representation of this log event. + + String representation of the log event. + + + + Sets the stack trace for the event info. + + The stack trace. + Index of the first user stack frame within the stack trace (Negative means NLog should skip stackframes from System-assemblies). + + + + Sets the details retrieved from the Caller Information Attributes + + + + + + + + + Set the + + true = Always, false = Never, null = Auto Detect + + + + Specialized LogFactory that can return instances of custom logger types. + + Use this only when a custom Logger type is defined. + The type of the logger to be returned. Must inherit from . + + + + Gets the logger with type . + + The logger name. + An instance of . + + + + Gets a custom logger with the full name of the current class (so namespace and class name) and type . + + An instance of . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Overwrite possible file paths (including filename) for possible NLog config files. + When this property is null, the default file paths ( are used. + + + + + Occurs when logging changes. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The config. + + + + Initializes a new instance of the class. + + The config loader + The custom AppEnvironmnet override + + + + Gets the current . + + + + + Gets or sets a value indicating whether exceptions should be thrown. See also . + + A value of true if exception should be thrown; otherwise, false. + By default exceptions are not thrown under any circumstances. + + + + Gets or sets a value indicating whether should be thrown. + + If null then is used. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. After setting this property all + existing loggers will be re-configured, so there is no need to call + manually. + + + + + Gets or sets the global log level threshold. Log events below this threshold are not logged. + + + + + Gets the default culture info to use as . + + + Specific culture info or null to use + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting + unmanaged resources. + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Creates a logger that discards all log messages. + + Null logger instance. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets the logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + The logger with type . + Type of the logger + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The type of the logger to create. The type must inherit from + The logger of type . + This is a slow-running method. Make sure you are not calling this method in a + loop. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the type parameter. + + Name of the logger. + Type of the logger + The logger reference with type . Multiple calls to GetLogger with the same argument + are not guaranteed to return the same logger reference. + + + + Gets the specified named logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The type of the logger to create. The type must inherit from . + The logger of type . Multiple calls to GetLogger with the + same argument aren't guaranteed to return the same logger reference. + + + + Loops through all loggers previously returned by GetLogger and recalculates their + target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time + will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages + after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flushes any pending log messages on all appenders. + + Config containing Targets to Flush + Flush completed notification (success / timeout) + Optional timeout that guarantees that completed notication is called. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + This method was marked as obsolete on NLog 4.0 and it may be removed in a future release. + + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + + Logging is enabled if the number of calls is greater than + or equal to calls. + + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Returns if logging is currently enabled. + + A value of if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Raises the event when the configuration is reloaded. + + Event arguments. + + + + Currently this is disposing? + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Get file paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Overwrite the paths (including filename) for the possible NLog config files. + + The file paths to the possible config file + + + + Clear the candidate file paths and return to the defaults. + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Logger cache key. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Determines if two objects are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Determines if two objects of the same type are equal in value. + + Other object to compare to. + True if objects are equal, false otherwise. + + + + Logger cache. + + + + + Inserts or updates. + + + + + + + Internal for unit tests + + + + + Enables logging in implementation. + + + + + Initializes a new instance of the class. + + The factory. + + + + Enables logging. + + + + + Logging methods which only are executed when the DEBUG conditional compilation symbol is set. + + Remarks: + The DEBUG conditional compilation symbol is default enabled (only) in a debug build. + + If the DEBUG conditional compilation symbol isn't set in the calling library, the compiler will remove all the invocations to these methods. + This could lead to better performance. + + See: https://msdn.microsoft.com/en-us/library/4xssyw96%28v=vs.90%29.aspx + + + Provides logging interface and utility functions. + + + Auto-generated Logger members for binary compatibility with NLog 1.0. + + + Provides logging interface and utility functions. + + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Debug level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + A to be written. + + + + Writes the diagnostic message at the Trace level. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + Only executed when the DEBUG conditional compilation symbol is set. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + Only executed when the DEBUG conditional compilation symbol is set. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + Only executed when the DEBUG conditional compilation symbol is set. + A containing one format item. + The argument to format. + + + + Gets a value indicating whether logging is enabled for the Trace level. + + A value of if logging is enabled for the Trace level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Debug level. + + A value of if logging is enabled for the Debug level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Info level. + + A value of if logging is enabled for the Info level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Warn level. + + A value of if logging is enabled for the Warn level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Error level. + + A value of if logging is enabled for the Error level, otherwise it returns . + + + + Gets a value indicating whether logging is enabled for the Fatal level. + + A value of if logging is enabled for the Fatal level, otherwise it returns . + + + + Writes the diagnostic message at the Trace level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Trace level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Trace level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Trace level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Trace level. + + Log message. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Trace level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Debug level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Debug level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Debug level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Debug level. + + Log message. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Debug level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Info level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Info level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Info level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Info level. + + Log message. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Info level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Info level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Info level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Warn level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Warn level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Warn level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Warn level. + + Log message. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Warn level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Error level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Error level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Error level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Error level. + + Log message. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Error level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Error level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Error level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified format provider and format parameters. + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + Type of the value. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the Fatal level. + + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the Fatal level using the specified parameters and formatting them with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level. + + Log message. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + + + + Writes the diagnostic message and exception at the Fatal level. + + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message and exception at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + An exception to be logged. + Arguments to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameter. + + The type of the argument. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + A to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter and formatting it with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified value as a parameter. + + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level. + + A to be written. + + + + Writes the diagnostic message at the Trace level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Trace level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Trace level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level. + + A to be written. + + + + Writes the diagnostic message at the Debug level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Debug level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Debug level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level. + + A to be written. + + + + Writes the diagnostic message at the Info level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Info level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Info level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level. + + A to be written. + + + + Writes the diagnostic message at the Warn level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Warn level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Warn level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level. + + A to be written. + + + + Writes the diagnostic message at the Error level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Error level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Error level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level. + + A to be written. + + + + Writes the diagnostic message at the Fatal level. + + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified parameters. + + A containing format items. + First argument to format. + Second argument to format. + Third argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter and formatting it with the supplied format provider. + + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the Fatal level using the specified value as a parameter. + + A containing one format item. + The argument to format. + + + + Initializes a new instance of the class. + + + + + Occurs when logger configuration changes. + + + + + Gets the name of the logger. + + + + + Gets the factory that created this logger. + + + + + Collection of context properties for the Logger. The logger will append it for all log events + + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Gets a value indicating whether logging is enabled for the specified level. + + Log level to be checked. + A value of if logging is enabled for the specified level, otherwise it returns . + + + + Creates new logger that automatically appends the specified property to all log events (without changing current logger) + + Property Name + Property Value + New Logger object that automatically appends specified property + + + + Updates the specified context property for the current logger. The logger will append it for all log events. + + It could be rendered with ${event-properties:YOURNAME} + + With property, all properties could be changed. + + + Will affect all locations/contexts that makes use of the same named logger object. + + Property Name + Property Value + + It is recommended to use for modifying context properties + when same named logger is used at multiple locations or shared by different thread contexts. + + + + + Writes the specified diagnostic message. + + Log event. + + + + Writes the specified diagnostic message. + + The name of the type that wraps Logger. + Log event. + + + + Writes the diagnostic message at the specified level using the specified format provider and format parameters. + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + Type of the value. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + The value to be written. + + + + Writes the diagnostic message at the specified level. + + The log level. + A function returning message to be written. Function is not evaluated if logging is not enabled. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message at the specified level using the specified parameters and formatting them with the supplied format provider. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message at the specified level. + + The log level. + Log message. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The log level. + A containing format items. + Arguments to format. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + An exception to be logged. + This method was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message and exception at the specified level. + + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A to be written. + Arguments to format. + An exception to be logged. + + + + Writes the diagnostic message at the specified level using the specified parameter and formatting it with the supplied format provider. + + The type of the argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameter. + + The type of the argument. + The log level. + A containing one format item. + The argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + + + + Writes the diagnostic message at the specified level using the specified arguments formatting it with the supplied format provider. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + An IFormatProvider that supplies culture-specific formatting information. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Writes the diagnostic message at the specified level using the specified parameters. + + The type of the first argument. + The type of the second argument. + The type of the third argument. + The log level. + A containing one format item. + The first argument to format. + The second argument to format. + The third argument to format. + + + + Runs the provided action. If the action throws, the exception is logged at Error level. The exception is not propagated outside of this method. + + Action to execute. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a default value is returned instead. + + Return type of the provided function. + Function to run. + Result returned by the provided function or the default value of type in case of exception. + + + + Runs the provided function and returns its result. If an exception is thrown, it is logged at Error level. + The exception is not propagated outside of this method; a fallback value is returned instead. + + Return type of the provided function. + Function to run. + Fallback value to return in case of exception. + Result returned by the provided function or fallback value in case of exception. + + + + Raises the event when the logger is reconfigured. + + Event arguments + + + + Implementation of logging engine. + + + + + Gets the filter result. + + The filter chain. + The log event. + default result if there are no filters, or none of the filters decides. + The result of the filter. + + + + Defines available log levels. + + + + + Trace log level. + + + + + Debug log level. + + + + + Info log level. + + + + + Warn log level. + + + + + Error log level. + + + + + Fatal log level. + + + + + Off log level. + + + + + Gets all the available log levels (Trace, Debug, Info, Warn, Error, Fatal, Off). + + + + + Gets all the log levels that can be used to log events (Trace, Debug, Info, Warn, Error, Fatal) + i.e LogLevel.Off is excluded. + + + + + Initializes a new instance of . + + The log level name. + The log level ordinal number. + + + + Gets the name of the log level. + + + + + Gets the ordinal of the log level. + + + + + Compares two objects + and returns a value indicating whether + the first one is equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal == level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is not equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal != level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than the second one. + + The first level. + The second level. + The value of level1.Ordinal > level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is greater than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal >= level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than the second one. + + The first level. + The second level. + The value of level1.Ordinal < level2.Ordinal. + + + + Compares two objects + and returns a value indicating whether + the first one is less than or equal to the second one. + + The first level. + The second level. + The value of level1.Ordinal <= level2.Ordinal. + + + + Gets the that corresponds to the specified ordinal. + + The ordinal. + The instance. For 0 it returns , 1 gives and so on. + + + + Returns the that corresponds to the supplied . + + The textual representation of the log level. + The enumeration value. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Determines whether the specified instance is equal to this instance. + + The to compare with this instance. + Value of true if the specified is equal to + this instance; otherwise, false. + + + + Compares the level to the other object. + + + The object object. + + + A value less than zero when this logger's is + less than the other logger's ordinal, 0 when they are equal and + greater than zero when this ordinal is greater than the + other ordinal. + + + + + Creates and manages instances of objects. + + + + + Internal for unit tests + + + + + Delegate used to set/get the culture in use. + + This delegate marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the instance used in the . + + Could be used to pass the to other methods + + + + Occurs when logging changes. + + + + + Gets or sets a value indicating whether NLog should throw exceptions. + By default exceptions are not thrown under any circumstances. + + + + + Gets or sets a value indicating whether should be thrown. + + A value of true if exception should be thrown; otherwise, false. + + This option is for backwards-compatibility. + By default exceptions are not thrown under any circumstances. + + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. + Default value - false. + + + + + Gets or sets a value indicating whether to automatically call + on AppDomain.Unload or AppDomain.ProcessExit + + + + + Gets or sets the current logging configuration. + + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Begins configuration of the LogFactory options using fluent interface + + + + + Loads logging configuration from file (Currently only XML configuration files supported) + + Configuration file to be read + LogFactory instance for fluent interface + + + + Gets or sets the global log threshold. Log events below this threshold are not logged. + + + + + Gets or sets the default culture to use. + + This property was marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Gets the logger with the full name of the current class, so namespace and class name. + + The logger. + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Adds the given assembly which will be skipped + when NLog is trying to find the calling method on stack trace. + + The assembly to skip. + + + + Gets a custom logger with the full name of the current class, so namespace and class name. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + The logger class. This class must inherit from . + The logger of type . + This is a slow-running method. + Make sure you're not doing this in a loop. + + + + Creates a logger that discards all log messages. + + Null logger which discards all log messages. + + + + Gets the specified named logger. + + Name of the logger. + The logger reference. Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + + + + Gets the specified named custom logger. + Use to create instance of a custom . + If you haven't defined your own class, then use the overload without the loggerType. + + Name of the logger. + The logger class. This class must inherit from . + The logger of type . Multiple calls to GetLogger with the same argument aren't guaranteed to return the same logger reference. + The generic way for this method is + + + + Loops through all loggers previously returned by GetLogger. + and recalculates their target and filter list. Useful after modifying the configuration programmatically + to ensure that all loggers have been properly configured. + + + + + Flush any pending log messages (in case of asynchronous targets) with the default timeout of 15 seconds. + + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + Maximum time to allow for the flush. Any messages after that time will be discarded. + + + + Decreases the log enable counter and if it reaches -1 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + An object that implements IDisposable whose Dispose() method re-enables logging. + To be used with C# using () statement. + + + + Increases the log enable counter and if it reaches 0 the logs are disabled. + + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Checks if logging is currently enabled. + + if logging is currently enabled, + otherwise. + Logging is enabled if the number of calls is greater + than or equal to calls. + + + + Dispose all targets, and shutdown logging. + + + + + Generates a formatted message from the log event + + Log event. + Formatted message + + + + Returns a log message. Used to defer calculation of + the log message until it's actually needed. + + Log message. + + + + Service contract for Log Receiver client. + + This class marked as obsolete before NLog 4.3.11 and it may be removed in a future release. + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Service contract for Log Receiver client. + + + + + Begins processing of log messages. + + The events. + The callback. + Asynchronous state. + + IAsyncResult value which can be passed to . + + + + + Ends asynchronous processing of log messages. + + The result. + + + + Internal configuration of Log Receiver Service contracts. + + + + + Wire format for NLog Event. + + + + + Initializes a new instance of the class. + + + + + Gets or sets the client-generated identifier of the event. + + + + + Gets or sets the ordinal of the log level. + + + + + Gets or sets the logger ordinal (index into . + + The logger ordinal. + + + + Gets or sets the time delta (in ticks) between the time of the event and base time. + + + + + Gets or sets the message string index. + + + + + Gets or sets the collection of layout values. + + + + + Gets the collection of indexes into array for each layout value. + + + + + Converts the to . + + The object this is part of.. + The logger name prefix to prepend in front of the logger name. + Converted . + + + + Wire format for NLog event package. + + + + + Gets or sets the name of the client. + + The name of the client. + + + + Gets or sets the base time (UTC ticks) for all events in the package. + + The base time UTC. + + + + Gets or sets the collection of layout names which are shared among all events. + + The layout names. + + + + Gets or sets the collection of logger names. + + The logger names. + + + + Gets or sets the list of events. + + The events. + + + + Converts the events to sequence of objects suitable for routing through NLog. + + The logger name prefix to prepend in front of each logger name. + + Sequence of objects. + + + + + Converts the events to sequence of objects suitable for routing through NLog. + + + Sequence of objects. + + + + + List of strings annotated for more terse serialization. + + + + + Initializes a new instance of the class. + + + + + Mapped Diagnostics Context - a thread-local structure that keeps a dictionary + of strings and provides methods to output them in layouts. + + + + + Gets the thread-local dictionary + + Must be true for any subsequent dictionary modification operation + + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current thread MDC. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The to use when converting a value to a . + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Returns all item names + + A set of the names of all items in current thread-MDC. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified exists in current thread MDC. + + + + Removes the specified from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Async version of Mapped Diagnostics Context - a logical context structure that keeps a dictionary + of strings and provides methods to output them in layouts. Allows for maintaining state across + asynchronous tasks and call contexts. + + + Ideally, these changes should be incorporated as a new version of the MappedDiagnosticsContext class in the original + NLog library so that state can be maintained for multiple threads in asynchronous situations. + + + + + Simulate ImmutableDictionary behavior (which is not yet part of all .NET frameworks). + In future the real ImmutableDictionary could be used here to minimize memory usage and copying time. + + Must be true for any subsequent dictionary modification operation + Prepare dictionary for additional inserts + + + + + Gets the current logical context named item, as . + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current logical context named item, as . + + Item name. + The to use when converting a value to a string. + The value of , if defined; otherwise . + If is null and the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current logical context named item, as . + + Item name. + The value of , if defined; otherwise null. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + >An that can be used to remove the item from the current logical context. + + + + Updates the current logical context with multiple items in single operation + + . + >An that can be used to remove the item from the current logical context (null if no items). + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Sets the current logical context item to the specified value. + + Item name. + Item value. + + + + Returns all item names + + A collection of the names of all items in current logical context. + + + + Checks whether the specified exists in current logical context. + + Item name. + A boolean indicating whether the specified exists in current logical context. + + + + Removes the specified from current logical context. + + Item name. + + + + Clears the content of current logical context. + + + + + Clears the content of current logical context. + + Free the full slot. + + + + Mapped Diagnostics Context + + This class marked as obsolete before NLog 2.0 and it may be removed in a future release. + + + + Sets the current thread MDC item to the specified value. + + Item name. + Item value. + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise . + If the value isn't a already, this call locks the for reading the needed for converting to . + + + + Gets the current thread MDC named item. + + Item name. + The value of , if defined; otherwise null. + + + + Checks whether the specified item exists in current thread MDC. + + Item name. + A boolean indicating whether the specified item exists in current thread MDC. + + + + Removes the specified item from current thread MDC. + + Item name. + + + + Clears the content of current thread MDC. + + + + + Mark a parameter of a method for message templating + + + + + Specifies which parameter of an annotated method should be treated as message-template-string + + + + + The name of the parameter that should be as treated as message-template-string + + + + + The type of the captured hole + + + + + Not decided + + + + + normal {x} + + + + + Serialize operator {@x} (aka destructure) + + + + + stringification operator {$x} + + + + + A hole that will be replaced with a value + + + + + Constructor + + + + Parameter name sent to structured loggers. + This is everything between "{" and the first of ",:}". + Including surrounding spaces and names that are numbers. + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + Type + + + + When the template is positional, this is the parsed name of this parameter. + For named templates, the value of Index is undefined. + + + Alignment to render the parameter, by default 0. + This is the parsed value between "," and the first of ":}" + + + + A fixed value + + + + Number of characters from the original template to copy at the current position. + This can be 0 when the template starts with a hole or when there are multiple consecutive holes. + + + Number of characters to skip in the original template at the current position. + 0 is a special value that mean: 1 escaped char, no hole. It can also happen last when the template ends with a literal. + + + + Combines Literal and Hole + + + + Literal + + + Hole + Uninitialized when = 0. + + + + Description of a single parameter extracted from a MessageTemplate + + + + + Parameter Name extracted from + This is everything between "{" and the first of ",:}". + + + + + Parameter Value extracted from the -array + + + + + Format to render the parameter. + This is everything between ":" and the first unescaped "}" + + + + + Parameter method that should be used to render the parameter + See also + + + + + Returns index for , when + + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + + + + Constructs a single message template parameter + + Parameter Name + Parameter Value + Parameter Format + Parameter CaptureType + + + + Parameters extracted from parsing as MessageTemplate + + + + + + + + + + + Gets the parameters at the given index + + + + + Number of parameters + + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Indicates whether the template was parsed successful, and there are no unmatched parameters + + + + + Constructor for parsing the message template with parameters + + including any parameter placeholders + All + + + + Constructor for named parameters that already has been parsed + + + + + Create MessageTemplateParameter from + + + + + A message template + + + + The original template string. + This is the key passed to structured targets. + + + The list of literal parts, useful for string rendering. + It indicates the number of characters from the original string to print, + then there's a hole with how many chars to skip. + + "Hello {firstName} {lastName}!" + ------------------------------------- + ║P |S ║P|S ║P|S║ + ║6 |11 ║1|10 ║1|0║ + ║Hello |{firstName}║ |{lastName}║!║ + + "{x} * 2 = {2x}" + -------------------- + ║P|S ║P |S ║ + ║0|3 ║7 |4 ║ + ║{x}║ * 2 = |{2x}║ + + The tricky part is escaped braces. They are represented by a skip = 0, + which is interpreted as "move one char forward, no hole". + + "Escaped }} is fun." + ---------------------- + ║P |S║P |S║ + ║9 |0║8 |0║ + ║Escaped }|}║ is fun.|║ + + + + This list of holes. It's used both to fill the string rendering + and to send values along the template to structured targets. + + + Indicates whether the template should be interpreted as positional + (all holes are numbers) or named. + + + + Create a template, which is already parsed + + + + + + + + + Create a template, which is already parsed + + + + + + + + This is for testing only: recreates from the parsed data. + + + + This is for testing only: rebuilds the hole + + Add to this string builder + ref for performance + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Gets the current literal/hole in the template + + + + + Clears the enumerator + + + + + Restarts the enumerator of the template + + + + + Moves to the next literal/hole in the template + + Found new element [true/false] + + + + Parse format after hole name/index. Handle the escaped { and } in the format. Don't read the last } + + + + + + Parse templates. + + + + + Parse a template. + + Template to be parsed. + When is null. + Template, never null + + + + Error when parsing a template. + + + + + Current index when the error occurred. + + + + + The template we were parsing + + + + + New exception + + The message to be shown. + Current index when the error occurred. + + + + + Render templates + + + + + Render a template to a string. + + The template. + Culture. + Parameters for the holes. + Do not fallback to StringBuilder.Format for positional templates. + The String Builder destination. + Parameters for the holes. + + + + Render a template to a string. + + The template. + The String Builder destination. + Culture. + Parameters for the holes. + Rendered template, never null. + + + + Convert Render or serialize a value, with optionally backwards-compatible with + + + + Singleton + + + + Serialization of an object, e.g. JSON and append to + + The object to serialize to string. + Parameter Format + Parameter CaptureType + An object that supplies culture-specific formatting information. + Output destination. + Serialize succeeded (true/false) + + + + Format an object to a readable string, or if it's an object, serialize + + The value to convert + + + + + + + + Try serializing a scalar (string, int, NULL) or simple type (IFormattable) + + + + + Serialize Dictionary as JSON like structure, without { and } + + + "FirstOrder"=true, "Previous login"=20-12-2017 14:55:32, "number of tries"=1 + + + formatstring of an item + + + + + + + + + Convert a value to a string with format and append to . + + The value to convert. + Format sting for the value. + Format provider for the value. + Append to this + + + + Nested Diagnostics Context + + This class marked as obsolete on NLog 2.0 and it may be removed in a future release. + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top object off the NDC stack. The object is removed from the stack. + + The top object from the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all objects on the NDC stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Nested Diagnostics Context - a thread-local structure that keeps a stack + of strings and provides methods to output them in layouts + + + + + Gets the top NDC message but doesn't remove it. + + The top message. . + + + + Gets the top NDC object but doesn't remove it. + + The object at the top of the NDC stack if defined; otherwise null. + + + + Pushes the specified text on current thread NDC. + + The text to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified object on current thread NDC. + + The object to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDC stack. + + The top message which is no longer on the stack. + + + + Pops the top message from the NDC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top object off the NDC stack. + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Peeks the first object on the NDC stack + + The object from the top of the NDC stack, if defined; otherwise null. + + + + Clears current thread NDC stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. + + Array of objects on the stack. + + + + Resets the stack to the original count during . + + + + + Initializes a new instance of the class. + + The stack. + The previous count. + + + + Reverts the stack to original item count. + + + + + Async version of - a logical context structure that keeps a stack + Allows for maintaining scope across asynchronous tasks and call contexts. + + + + + Pushes the specified value on current stack + + The value to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pushes the specified value on current stack + + The value to be pushed. + An instance of the object that implements IDisposable that returns the stack to the previous level when IDisposable.Dispose() is called. To be used with C# using() statement. + + + + Pops the top message off the NDLC stack. + + The top message which is no longer on the stack. + this methods returns a object instead of string, this because of backwards-compatibility + + + + Pops the top message from the NDLC stack. + + The to use when converting the value to a string. + The top message, which is removed from the stack, as a string value. + + + + Pops the top message off the current NDLC stack + + The object from the top of the NDLC stack, if defined; otherwise null. + + + + Peeks the top object on the current NDLC stack + + The object from the top of the NDLC stack, if defined; otherwise null. + + + + Peeks the current scope, and returns its start time + + Scope Creation Time + + + + Peeks the first scope, and returns its start time + + Scope Creation Time + + + + Clears current stack. + + + + + Gets all messages on the stack. + + Array of strings on the stack. + + + + Gets all messages from the stack, without removing them. + + The to use when converting a value to a string. + Array of strings. + + + + Gets all objects on the stack. The objects are not removed from the stack. + + Array of objects on the stack. + + + + Exception thrown during NLog configuration. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The inner exception. + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + Exception thrown during log event processing. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The message. + Parameters for the message + + + + Initializes a new instance of the class. + + The message. + The inner exception. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + The parameter is null. + + + The class name is null or is zero (0). + + + + + It works as a normal but it discards all messages which an application requests + to be logged. + + It effectively implements the "Null Object" pattern for objects. + + + + + Initializes a new instance of . + + The factory class to be used for the creation of this logger. + + + + Extension methods to setup LogFactory options + + + + + Gets the logger with the full name of the current class, so namespace and class name. + + + + + Gets the specified named logger. + + + + + Configures loading of NLog extensions for Targets and LayoutRenderers + + + + + Configures the output of NLog for diagnostics / troubleshooting + + + + + Configures serialization and transformation of LogEvents + + + + + Loads NLog config created by the method + + + + + Loads NLog config provided in + + + + + Loads NLog config from filename if provided, else fallback to scanning for NLog.config + + + + + Loads NLog config from XML in + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Enable/disables autoloading of NLog extensions by scanning and loading available assemblies + + + Enabled by default, and gives a huge performance hit during startup. Recommended to disable this when running in the cloud. + + + + + Registers NLog extensions from the assembly. + + + + + Registers NLog extensions from the assembly type name + + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Fluent interface parameter. + Type of the Target. + Name of the Target. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer. + + Fluent interface parameter. + Type of the layout renderer. + Name of the layout renderer - without ${}. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom layout renderer with a callback function . The callback receives the logEvent and the current configuration. + + Fluent interface parameter. + Name of the layout renderer - without ${}. + Callback that returns the value for the layout renderer. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + MethodInfo extracted by reflection - typeof(MyClass).GetMethod("MyFunc", BindingFlags.Static). + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + Lambda method. + + + + Register a custom condition method, that can use in condition filters + + Fluent interface parameter. + Name of the condition filter method + Lambda method. + + + + Extension methods to setup NLog options + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Configures + + + + + Extension methods to setup NLog extensions, so they are known when loading NLog LoggingConfiguration + + + + + Overrides the active with a new custom implementation + + + + + Overrides the active with a new custom implementation + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Registers object Type transformation from dangerous (massive) object to safe (reduced) object + + + + + Specifies the way archive numbering is performed. + + + + + Sequence style numbering. The most recent archive has the highest number. + + + + + Rolling style numbering (the most recent is always #0 then #1, ..., #N. + + + + + Date style numbering. Archives will be stamped with the prior period + (Year, Month, Day, Hour, Minute) datetime. + + + + + Date and sequence style numbering. + Archives will be stamped with the prior period (Year, Month, Day) datetime. + The most recent archive has the highest number (in combination with the date). + + + + + Abstract Target with async Task support + + + + + How many milliseconds to delay the actual write operation to optimize for batching + + + + + How many seconds a Task is allowed to run before it is cancelled. + + + + + How many attempts to retry the same Task, before it is aborted + + + + + How many milliseconds to wait before next retry (will double with each retry) + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Task Scheduler used for processing async Tasks + + + + + Constructor + + + + + Initializes the internal queue for pending logevents + + + + + Override this to create the actual logging task + + Example of how to override this method, and call custom async method + + protected override Task WriteAsyncTask(LogEventInfo logEvent, CancellationToken token) + { + return CustomWriteAsync(logEvent, token); + } + + private async Task CustomWriteAsync(LogEventInfo logEvent, CancellationToken token) + { + await MyLogMethodAsync(logEvent, token).ConfigureAwait(false); + } + + + The log event. + The cancellation token + + + + + Override this to create the actual logging task for handling batch of logevents + + A batch of logevents. + The cancellation token + + + + + Handle cleanup after failed write operation + + Exception from previous failed Task + The cancellation token + Number of retries remaining + Time to sleep before retrying + Should attempt retry + + + + Schedules the LogEventInfo for async writing + + The log event. + + + + Write to queue without locking + + + + + + Schedules notification of when all messages has been written + + + + + + Closes Target by updating CancellationToken + + + + + Releases any managed resources + + + + + + Checks the internal queue for the next to create a new task for + + Used for race-condition validation between task-completion and timeout + Signals whether previousTask completed an almost full BatchSize + + + + Generates recursive task-chain to perform retry of writing logevents with increasing retry-delay + + + + + Creates new task to handle the writing of the input + + LogEvents to write + New Task created [true / false] + + + + Handles that scheduled task has completed (successfully or failed), and starts the next pending task + + Task just completed + AsyncContinuation to notify of success or failure + + + + Timer method, that is fired when pending task fails to complete within timeout + + + + + + Sends log messages to the remote instance of Chainsaw application from log4j. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a name. + + Name of the target. + + + + Color formatting for using ANSI Color Codes + + + + + Not using bold to get light colors, as it has to be cleared + + + + + Not using bold to get light colors, as it has to be cleared (And because it only works for text, and not background) + + + + + Resets both foreground and background color. + + + + + ANSI have 8 color-codes (30-37) by default. The "bright" (or "intense") color-codes (90-97) are extended values not supported by all terminals + + + + + Writes log messages to the console with customizable coloring. + + Documentation on NLog Wiki + + + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default.In multithreaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether the error stream (stderr) should be used instead of the output stream (stdout). + + + + + + Gets or sets a value indicating whether to use default row highlighting rules. + + + The default rules are: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConditionForeground ColorBackground Color
level == LogLevel.FatalRedNoChange
level == LogLevel.ErrorYellowNoChange
level == LogLevel.WarnMagentaNoChange
level == LogLevel.InfoWhiteNoChange
level == LogLevel.DebugGrayNoChange
level == LogLevel.TraceDarkGrayNoChange
+
+ +
+ + + Gets or sets a value indicating whether to auto-check if the console is available. + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-check if the console has been redirected to file + - Disables coloring logic when System.Console.IsOutputRedirected = true + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + + Enables output using ANSI Color Codes + + + + + + Gets the row highlighting rules. + + + + + + Gets the word highlighting rules. + + + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified log event to the console highlighting entries + and words based on a set of defined rules. + + Log event. + + + + Colored console output color. + + + Note that this enumeration is defined to be binary compatible with + .NET 2.0 System.ConsoleColor + some additions + + + + + Black Color (#000000). + + + + + Dark blue Color (#000080). + + + + + Dark green Color (#008000). + + + + + Dark Cyan Color (#008080). + + + + + Dark Red Color (#800000). + + + + + Dark Magenta Color (#800080). + + + + + Dark Yellow Color (#808000). + + + + + Gray Color (#C0C0C0). + + + + + Dark Gray Color (#808080). + + + + + Blue Color (#0000FF). + + + + + Green Color (#00FF00). + + + + + Cyan Color (#00FFFF). + + + + + Red Color (#FF0000). + + + + + Magenta Color (#FF00FF). + + + + + Yellow Color (#FFFF00). + + + + + White Color (#FFFFFF). + + + + + Don't change the color. + + + + + The row-highlighting condition. + + + + + Initializes static members of the ConsoleRowHighlightingRule class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The condition. + Color of the foreground. + Color of the background. + + + + Gets the default highlighting rule. Doesn't change the color. + + + + + Gets or sets the condition that must be met in order to set the specified foreground and background color. + + + + + + Gets or sets the foreground color. + + + + + + Gets or sets the background color. + + + + + + Checks whether the specified log event matches the condition (if any). + + + Log event. + + + A value of if the condition is not defined or + if it matches, otherwise. + + + + + Writes log messages to the console. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Should logging being paused/stopped because of the race condition bug in Console.Writeline? + + + Console.Out.Writeline / Console.Error.Writeline could throw 'IndexOutOfRangeException', which is a bug. + See https://stackoverflow.com/questions/33915790/console-out-and-console-error-race-condition-error-in-a-windows-service-written + and https://connect.microsoft.com/VisualStudio/feedback/details/2057284/console-out-probable-i-o-race-condition-issue-in-multi-threaded-windows-service + + Full error: + Error during session close: System.IndexOutOfRangeException: Probable I/ O race condition detected while copying memory. + The I/ O package is not thread safe by default. In multi threaded applications, + a stream must be accessed in a thread-safe way, such as a thread - safe wrapper returned by TextReader's or + TextWriter's Synchronized methods.This also applies to classes like StreamWriter and StreamReader. + + + + + + Gets or sets a value indicating whether to send the log messages to the standard error instead of the standard output. + + + + + + Gets or sets a value indicating whether to auto-check if the console is available + - Disables console writing if Environment.UserInteractive = False (Windows Service) + - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + + Gets or sets a value indicating whether to auto-flush after + + + Normally not required as standard Console.Out will have = true, but not when pipe to file + + + + + + Gets or sets whether to enable batch writing using char[]-buffers, instead of using + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + + + + Writes the specified logging event to the Console.Out or + Console.Error depending on the value of the Error flag. + + The logging event. + + Note that the Error option is not supported on .NET Compact Framework. + + + + + + + + Write to output + + + + + Highlighting rule for Win32 colorful console. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The text to be matched.. + Color of the foreground. + Color of the background. + + + + Gets or sets the regular expression to be matched. You must specify either text or regex. + + + + + + Gets or sets the condition that must be met before scanning the row for highlight of words + + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + + Gets or sets the text to be matched. You must specify either text or regex. + + + + + + Gets or sets a value indicating whether to match whole words only. + + + + + + Gets or sets a value indicating whether to ignore case when comparing texts. + + + + + + Gets or sets the foreground color. + + + + + + Gets or sets the background color. + + + + + + Gets the compiled regular expression that matches either Text or Regex property. Only used when is true. + + + + + A descriptor for an archive created with the DateAndSequence numbering mode. + + + + + The full name of the archive file. + + + + + The parsed date contained in the file name. + + + + + The parsed sequence number contained in the file name. + + + + + Determines whether produces the same string as the current instance's date once formatted with the current instance's date format. + + The date to compare the current object's date to. + True if the formatted dates are equal, otherwise False. + + + + Initializes a new instance of the class. + + + + + Writes log messages to the attached managed debugger. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Initializes the target. + + + + + Closes the target and releases any unmanaged resources. + + + + + Writes the specified logging event to the attached debugger. + + The logging event. + + + + Mock target - useful for testing. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the number of times this target has been called. + + + + + + Gets the last message rendered by this target. + + + + + + Increases the number of messages. + + The logging event. + + + + Default class for serialization of values to JSON format. + + + + + Singleton instance of the serializer. + + + + + Private. Use + + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + Serialized value. + + + + Returns a serialization of an object into JSON format. + + The object to serialize to JSON. + serialisation options + Serialized value. + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + Object serialized successfully (true/false). + + + + Serialization of the object in JSON format to the destination StringBuilder + + The object to serialize to JSON. + Write the resulting JSON to this destination. + serialisation options + The objects in path (Avoid cyclic reference loop). + The current depth (level) of recursion. + Object serialized successfully (true/false). + + + + No quotes needed for this type? + + + + + Checks the object if it is numeric + + TypeCode for the object + Accept fractional types as numeric type. + + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + all options + JSON escaped string + + + + Checks input string if it needs JSON escaping, and makes necessary conversion + + Destination Builder + Input string + Should non-ascii characters be encoded + + JSON escaped string + + + + Action that should be taken if the message is greater than + the max message size allowed by the Event Log. + + + + + Truncate the message before writing to the Event Log. + + + + + Split the message and write multiple entries to the Event Log. + + + + + Discard of the message. It will not be written to the Event Log. + + + + + Check if cleanup should be performed on initialize new file + + Skip cleanup when initializing new file, just after having performed archive operation + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Characters determining the start of the . + + + + + Characters determining the end of the . + + + + + File name which is used as template for matching and replacements. + It is expected to contain a pattern to match. + + + + + The begging position of the + within the . -1 is returned + when no pattern can be found. + + + + + The ending position of the + within the . -1 is returned + when no pattern can be found. + + + + + Replace the pattern with the specified String. + + + + + + + Archives the log-files using a date style numbering. Archives will be stamped with the + prior period (Year, Month, Day, Hour, Minute) datetime. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Archives the log-files using a date and sequence style numbering. Archives will be stamped + with the prior period (Year, Month, Day) datetime. The most recent archive has the highest number (in + combination with the date). + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Parse filename with date and sequence pattern + + + dateformat for archive + + the found pattern. When failed, then default + the found pattern. When failed, then default + + + + + Archives the log-files using the provided base-archive-filename. If the base-archive-filename causes + duplicate archive filenames, then sequence-style is automatically enforced. + + Example: + Base Filename trace.log + Next Filename trace.0.log + + The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Dynamically converts a non-template archiveFilePath into a correct archiveFilePattern. + Before called the original IFileArchiveMode, that has been wrapped by this + + + + + Determines if the file name as contains a numeric pattern i.e. {#} in it. + + Example: + trace{#}.log Contains the numeric pattern. + trace{###}.log Contains the numeric pattern. + trace{#X#}.log Contains the numeric pattern (See remarks). + trace.log Does not contain the pattern. + + Occasionally, this method can identify the existence of the {#} pattern incorrectly. + File name to be checked. + when the pattern is found; otherwise. + + + + Archives the log-files using a rolling style numbering (the most recent is always #0 then + #1, ..., #N. + + When the number of archive files exceed the obsolete archives + are deleted. + + + + + Replaces the numeric pattern i.e. {#} in a file name with the parameter value. + + File name which contains the numeric pattern. + Value which will replace the numeric pattern. + File name with the value of in the position of the numeric pattern. + + + + Archives the log-files using a sequence style numbering. The most recent archive has the highest number. + + When the number of archive files exceed the obsolete archives are deleted. + When the age of archive files exceed the obsolete archives are deleted. + + + + + Modes of archiving files based on time. + + + + + Don't archive based on time. + + + + + AddToArchive every year. + + + + + AddToArchive every month. + + + + + AddToArchive daily. + + + + + AddToArchive every hour. + + + + + AddToArchive every minute. + + + + + AddToArchive every Sunday. + + + + + AddToArchive every Monday. + + + + + AddToArchive every Tuesday. + + + + + AddToArchive every Wednesday. + + + + + AddToArchive every Thursday. + + + + + AddToArchive every Friday. + + + + + AddToArchive every Saturday. + + + + + Type of filepath + + + + + Detect of relative or absolute + + + + + Relative path + + + + + Absolute path + + Best for performance + + + + Writes log messages to one or more files. + + Documentation on NLog Wiki + + + + Default clean up period of the initialized files. When a file exceeds the clean up period is removed from the list. + + Clean up period is defined in days. + + + + The maximum number of initialized files before clean up procedures are initiated, + to keep the number of initialized files to a minimum. Chose 25 to cater for monthly rolling of log-files. + + + + + This value disables file archiving based on the size. + + + + + Holds the initialized files each given time by the instance. Against each file, the last write time is stored. + + Last write time is store in local time (no UTC). + + + + List of the associated file appenders with the instance. + + + + + The number of initialized files at any one time. + + + + + The maximum number of archive files that should be kept. + + + + + The maximum days of archive files that should be kept. + + + + + The filename as target + + + + + The archive file name as target + + + + + The date of the previous log event. + + + + + The file name of the previous log event. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the name of the file to write to. + + + This FileName string is a layout which may include instances of layout renderers. + This lets you use a single target to write to multiple files. + + + The following value makes NLog write logging events to files based on the log level in the directory where + the application runs. + ${basedir}/${level}.log + All Debug messages will go to Debug.log, all Info messages will go to Info.log and so on. + You can combine as many of the layout renderers as you want to produce an arbitrary log file name. + + + + + + Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. + If set to false, nothing gets written when the filename is wrong. + + + + + + Is the an absolute or relative path? + + + + + + Gets or sets a value indicating whether to create directories if they do not exist. + + + Setting this to false may improve performance a bit, but you'll receive an error + when attempting to write to a directory that's not present. + + + + + + Gets or sets a value indicating whether to delete old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + + + + + + Gets or sets a value indicating whether to replace file contents on each write instead of appending log message at the end. + + + + + + Gets or sets a value indicating whether to keep log file open instead of opening and closing it on each logging event. + + + Setting this property to True helps improve performance. + + + + + + Gets or sets the maximum number of log file names that should be stored as existing. + + + The bigger this number is the longer it will take to write each log record. The smaller the number is + the higher the chance that the clean function will be run when no new files have been opened. + + + + + Gets or sets a value indicating whether to enable log file(s) to be deleted. + + + + + + Gets or sets the line ending mode. + + + + + + Gets or sets a value indicating whether to automatically flush the file buffers after each log message. + + + + + + Gets or sets the number of files to be kept open. Setting this to a higher value may improve performance + in a situation where a single File target is writing to many files + (such as splitting by level or by logger). + + + The files are managed on a LRU (least recently used) basis, which flushes + the files that have not been used for the longest period of time should the + cache become full. As a rule of thumb, you shouldn't set this parameter to + a very high value. A number like 10-15 shouldn't be exceeded, because you'd + be keeping a large number of files open which consumes system resources. + + + + + + Gets or sets the maximum number of seconds that files are kept open. If this number is negative the files are + not automatically closed after a period of inactivity. + + + + + + Gets or sets the maximum number of seconds before open files are flushed. If this number is negative or zero + the files are not flushed by timer. + + + + + + Gets or sets the log file buffer size in bytes. + + + + + + Gets or sets the file encoding. + + + + + + Gets or sets whether or not this target should just discard all data that its asked to write. + Mostly used for when testing NLog Stack except final write + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on the same host. + + + This makes multi-process logging possible. NLog uses a special technique + that lets it keep the files open for writing. + + + + + + Gets or sets a value indicating whether concurrent writes to the log file by multiple processes on different network hosts. + + + This effectively prevents files from being kept open. + + + + + + Gets or sets a value indicating whether to write BOM (byte order mark) in created files + + + + + + Gets or sets the number of times the write is appended on the file before NLog + discards the log message. + + + + + + Gets or sets the delay in milliseconds to wait before attempting to write to the file again. + + + The actual delay is a random value between 0 and the value specified + in this parameter. On each failed attempt the delay base is doubled + up to times. + + + Assuming that ConcurrentWriteAttemptDelay is 10 the time to wait will be:

+ a random value between 0 and 10 milliseconds - 1st attempt
+ a random value between 0 and 20 milliseconds - 2nd attempt
+ a random value between 0 and 40 milliseconds - 3rd attempt
+ a random value between 0 and 80 milliseconds - 4th attempt
+ ...

+ and so on. + + + + +

+ Gets or sets a value indicating whether to archive old log file on startup. + + + This option works only when the "FileName" parameter denotes a single file. + After archiving the old file, the current log file will be empty. + + +
+ + + Gets or sets a value of the file size threshold to archive old log file on startup. + + + This option won't work if is set to false + Default value is 0 which means that the file is archived as soon as archival on + startup is enabled. + + + + + + Gets or sets a value specifying the date format to use when archiving files. + + + This option works only when the "ArchiveNumbering" parameter is set either to Date or DateAndSequence. + + + + + + Gets or sets the size in bytes above which log files will be automatically archived. + + Warning: combining this with isn't supported. We cannot create multiple archive files, if they should have the same name. + Choose: + + + Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. + + + + + + Gets or sets a value indicating whether to automatically archive log files every time the specified time passes. + + + Files are moved to the archive as part of the write operation if the current period of time changes. For example + if the current hour changes from 10 to 11, the first write that will occur + on or after 11:00 will trigger the archiving. +

+ Caution: Enabling this option can considerably slow down your file + logging in multi-process scenarios. If only one process is going to + be writing to the file, consider setting ConcurrentWrites + to false for maximum performance. +

+
+ +
+ + + Is the an absolute or relative path? + + + + + + Gets or sets the name of the file to be used for an archive. + + + It may contain a special placeholder {#####} + that will be replaced with a sequence of numbers depending on + the archiving strategy. The number of hash characters used determines + the number of numerical digits to be used for numbering files. + + + + + + Gets or sets the maximum number of archive files that should be kept. + + + + + + Gets or sets the maximum days of archive files that should be kept. + + + + + + Gets or sets the way file archives are numbered. + + + + + + Used to compress log files during archiving. + This may be used to provide your own implementation of a zip file compressor, + on platforms other than .Net4.5. + Defaults to ZipArchiveFileCompressor on .Net4.5 and to null otherwise. + + + + + + Gets or sets a value indicating whether to compress archive files into the zip archive format. + + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + + Gets or sets a value indicating whether the footer should be written only when the file is archived. + + + + + + Gets the characters that are appended after each line. + + + + + Refresh the ArchiveFilePatternToWatch option of the . + The log file must be watched for archiving when multiple processes are writing to the same + open file. + + + + + Removes records of initialized files that have not been + accessed in the last two days. + + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Removes records of initialized files that have not been + accessed after the specified date. + + The cleanup threshold. + + Files are marked 'initialized' for the purpose of writing footers when the logging finishes. + + + + + Flushes all pending file operations. + + The asynchronous continuation. + + The timeout parameter is ignored, because file APIs don't provide + the needed functionality. + + + + + Returns the suitable appender factory ( ) to be used to generate the file + appenders associated with the instance. + + The type of the file appender factory returned depends on the values of various properties. + + suitable for this instance. + + + + Initializes file logging by creating data structures that + enable efficient multi-file logging. + + + + + Closes the file(s) opened for writing. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Can be used if has been enabled. + + + + + Writes the specified logging event to a file specified in the FileName + parameter. + + The logging event. + + + + Get full filename (=absolute) and cleaned if needed. + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes the specified array of logging events to a file specified in the FileName + parameter. + + An array of objects. + + This function makes use of the fact that the events are batched by sorting + the requests by filename. This optimizes the number of open/close calls + and can help improve performance. + + + + + Returns estimated size for memory stream, based on events count and first event size in bytes. + + Count of events + Bytes count of first event + + + + Formats the log event for write. + + The log event to be formatted. + A string representation of the log event. + + + + Gets the bytes to be written to the file. + + Log event. + Array of bytes that are ready to be written. + + + + Modifies the specified byte array before it gets sent to a file. + + The byte array. + The modified byte array. The function can do the modification in-place. + + + + Gets the bytes to be written to the file. + + The log event to be formatted. + to help format log event. + Optional temporary char-array to help format log event. + Destination for the encoded result. + + + + Formats the log event for write. + + The log event to be formatted. + for the result. + + + + Modifies the specified byte array before it gets sent to a file. + + The LogEvent being written + The byte array. + + + + Archives fileName to archiveFileName. + + File name to be archived. + Name of the archive file. + + + + Gets the correct formatting to be used based on the value of for converting values which will be inserting into file + names during archiving. + + This value will be computed only when a empty value or is passed into + + Date format to used irrespectively of value. + Formatting for dates. + + + + Calculate the DateTime of the requested day of the week. + + The DateTime of the previous log event. + The next occuring day of the week to return a DateTime for. + The DateTime of the next occuring dayOfWeek. + For example: if previousLogEventTimestamp is Thursday 2017-03-02 and dayOfWeek is Sunday, this will return + Sunday 2017-03-05. If dayOfWeek is Thursday, this will return *next* Thursday 2017-03-09. + + + + Invokes the archiving process after determining when and which type of archiving is required. + + File name to be checked and archived. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + + + + Gets the pattern that archive files will match + + Filename of the log file + Log event that the instance is currently processing. + A string with a pattern that will match the archive file names + + + + Archives the file if it should be archived. + + The file name to check for. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + True when archive operation of the file was completed (by this target or a concurrent target) + + + + Closes any active file-appenders that matches the input filenames. + File-appender is requested to invalidate/close its filehandle, but keeping its archive-mutex alive + + + + + Indicates if the automatic archiving process should be executed. + + File name to be written. + Log event that the instance is currently processing. + The size in bytes of the next chunk of data to be written in the file. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the correct filename to archive + + + + + + Gets the file name for archiving, or null if archiving should not occur based on file size. + + File name to be written. + The size in bytes of the next chunk of data to be written in the file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Returns the file name for archiving, or null if archiving should not occur based on date/time. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file. + File has just been opened. + Filename to archive. If null, then nothing to archive. + + + + Truncates the input-time, so comparison of low resolution times (like dates) are not affected by ticks + + High resolution Time + Time Resolution Level + Truncated Low Resolution Time + + + + Evaluates which parts of a file should be written (header, content, footer) based on various properties of + instance and writes them. + + File name to be written. + Raw sequence of to be written into the content part of the file. + File has just been opened. + + + + Initialise a file to be used by the instance. Based on the number of initialized + files and the values of various instance properties clean up and/or archiving processes can be invoked. + + File name to be written. + Log event that the instance is currently processing. + The DateTime of the previous log event for this file (DateTime.MinValue if just initialized). + + + + Writes the file footer and finalizes the file in instance internal structures. + + File name to close. + Indicates if the file is being finalized for archiving. + + + + Writes the footer information to a file. + + The file path to write to. + + + + Decision logic whether to archive logfile on startup. + and properties. + + File name to be written. + Decision whether to archive or not. + + + + Invokes the archiving and clean up of older archive file based on the values of + and + properties respectively. + + File name to be written. + Log event that the instance is currently processing. + + + + Creates the file specified in and writes the file content in each entirety i.e. + Header, Content and Footer. + + The name of the file to be written. + Sequence of to be written in the content section of the file. + First attempt to write? + This method is used when the content of the log file is re-written on every write. + + + + Writes the header information and byte order mark to a file. + + File appender associated with the file. + + + + The sequence of to be written in a file after applying any formatting and any + transformations required from the . + + The layout used to render output message. + Sequence of to be written. + Usually it is used to render the header and hooter of the files. + + + + Controls the text and color formatting for + + + + + Creates a TextWriter for the console to start building a colored text message + + Active console stream + Optional StringBuilder to optimize performance + TextWriter for the console + + + + Releases the TextWriter for the console after having built a colored text message (Restores console colors) + + Colored TextWriter + Active console stream + Original foreground color for console (If changed) + Original background color for console (If changed) + Flush TextWriter + + + + Changes foreground color for the Colored TextWriter + + Colored TextWriter + New foreground color for the console + Old previous backgroundColor color for the console + Old foreground color for the console + + + + Changes backgroundColor color for the Colored TextWriter + + Colored TextWriter + New backgroundColor color for the console + Old previous backgroundColor color for the console + Old backgroundColor color for the console + + + + Restores console colors back to their original state + + Colored TextWriter + Original foregroundColor color for the console + Original backgroundColor color for the console + + + + Writes multiple characters to console in one operation (faster) + + Colored TextWriter + Output Text + Start Index + End Index + + + + Writes single character to console + + Colored TextWriter + Output Text + + + + Writes whole string and completes with newline + + Colored TextWriter + Output Text + + + + Default row highlight rules for the console printer + + + + + Check if cleanup should be performed on initialize new file + + Base archive file pattern + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + True, when archive cleanup is needed + + + + Create a wildcard file-mask that allows one to find all files belonging to the same archive. + + Base archive file pattern + Wildcard file-mask + + + + Search directory for all existing files that are part of the same archive. + + Base archive file pattern + + + + + Generate the next archive filename for the archive. + + Base archive file pattern + File date of archive + Existing files in the same archive + + + + + Return all files that should be removed from the provided archive. + + Base archive file pattern + Existing files in the same archive + Maximum number of archive files that should be kept + Maximum days of archive files that should be kept + + + + may be configured to compress archived files in a custom way + by setting before logging your first event. + + + + + Create archiveFileName by compressing fileName. + + Absolute path to the log file to compress. + Absolute path to the compressed archive file to create. + + + + Interface for serialization of values, maybe even objects to JSON format. + Useful for wrappers for existing serializers. + + + + + Returns a serialization of an object + into JSON format. + + The object to serialize to JSON. + Serialized value (null = Serialize failed). + + + + Options for JSON serialisation + + + + + Add quotes around object keys? + + + + + Format provider for value + + + + + Format string for value + + + + + Should non-ascii characters be encoded + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + Serialize enum as string value + + + + + Should dictionary keys be sanitized. All characters must either be letters, numbers or underscore character (_). + + Any other characters will be converted to underscore character (_) + + + + + How far down the rabbit hole should the Json Serializer go with object-reflection before stopping + + + + Initializes a new instance of the class. + + + + Line ending mode. + + + + + Insert platform-dependent end-of-line sequence after each line. + + + + + Insert CR LF sequence (ASCII 13, ASCII 10) after each line. + + + + + Insert CR character (ASCII 13) after each line. + + + + + Insert LF character (ASCII 10) after each line. + + + + + Insert null terminator (ASCII 0) after each line. + + + + + Do not insert any line ending. + + + + + Gets the name of the LineEndingMode instance. + + + + + Gets the new line characters (value) of the LineEndingMode instance. + + + + + Initializes a new instance of . + + The mode name. + The new line characters to be used. + + + + Returns the that corresponds to the supplied . + + + The textual representation of the line ending mode, such as CRLF, LF, Default etc. + Name is not case sensitive. + + The value, that corresponds to the . + There is no line ending mode with the specified name. + + + + Compares two objects and returns a + value indicating whether the first one is equal to the second one. + + The first level. + The second level. + The value of mode1.NewLineCharacters == mode2.NewLineCharacters. + + + + Compares two objects and returns a + value indicating whether the first one is not equal to the second one. + + The first mode + The second mode + The value of mode1.NewLineCharacters != mode2.NewLineCharacters. + + + + Returns a string representation of the log level. + + Log level name. + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms + and data structures like a hash table. + + + + + Determines whether the specified is + equal to this instance. + + The to compare with + this instance. + + Value of true if the specified + is equal to this instance; otherwise, false. + + + The parameter is null. + + + + Indicates whether the current object is equal to another object of the same type. + true if the current object is equal to the parameter; otherwise, false. + An object to compare with this object. + + + + Provides a type converter to convert objects to and from other representations. + + + + + Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. + + + true if this converter can perform the conversion; otherwise, false. + + An that provides a format context. A that represents the type you want to convert from. + + + + Converts the given object to the type of this converter, using the specified context and culture information. + + + An that represents the converted value. + + An that provides a format context. The to use as the current culture. The to convert. The conversion cannot be performed. + + + + Sends log messages by email using SMTP protocol. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ Mail target works best when used with BufferingWrapper target + which lets you send multiple log messages in single mail +

+

+ To set up the buffered mail target in the configuration file, + use the following syntax: +

+ +

+ To set up the buffered mail target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets sender's email address (e.g. joe@domain.com). + + + + + + Gets or sets recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + + Gets or sets a value indicating whether to add new lines between log entries. + + A value of true if new lines should be added; otherwise, false. + + + + + Gets or sets the mail subject. + + + + + + Gets or sets mail message body (repeated for each log message send in one mail). + + Alias for the Layout property. + + + + + Gets or sets encoding to be used for sending e-mail. + + + + + + Gets or sets a value indicating whether to send message as HTML instead of plain text. + + + + + + Gets or sets SMTP Server to be used for sending. + + + + + + Gets or sets SMTP Authentication mode. + + + + + + Gets or sets the username used to connect to SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + + Gets or sets the password used to authenticate against SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + + Gets or sets a value indicating whether SSL (secure sockets layer) should be used when communicating with SMTP server. + + . + + + + Gets or sets the port number that SMTP Server is listening on. + + + + + + Gets or sets a value indicating whether the default Settings from System.Net.MailSettings should be used. + + + + + + Specifies how outgoing email messages will be handled. + + + + + + Gets or sets the folder where applications save mail messages to be processed by the local SMTP server. + + + + + + Gets or sets the priority used for sending mails. + + + + + + Gets or sets a value indicating whether NewLine characters in the body should be replaced with
tags. +
+ Only happens when is set to true. + +
+ + + Gets or sets a value indicating the SMTP client timeout. + + Warning: zero is not infinite waiting + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Renders an array logging events. + + Array of logging events. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Create mail and send with SMTP + + event printed in the body of the event + + + + Create buffer for body + + all events + first event for header + last event for footer + + + + + Set properties of + + last event for username/password + client to set properties on + Configure not at , as the properties could have layout renderers. + + + + Handle if it is a virtual directory. + + + + + + + Create key for grouping. Needed for multiple events in one mail message + + event for rendering layouts + string to group on + + + + Append rendered to + + append to this + event for rendering + append if not null + + + + Create the mail message with the addresses, properties and body. + + + + + Render and add the addresses to + + Addresses appended to this list + layout with addresses, ; separated + event for rendering the + added a address? + + + + Writes log messages to an ArrayList in memory for programmatic retrieval. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets the list of logs gathered in the . + + + + + Gets or sets the max number of items to have in memory + + + + + + Renders the logging event message and adds it to the internal ArrayList of log messages. + + The logging event. + + + + A parameter to MethodCall. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The layout to use for parameter value. + + + + Initializes a new instance of the class. + + Name of the parameter. + The layout. + + + + Initializes a new instance of the class. + + The name of the parameter. + The layout. + The type of the parameter. + + + + Gets or sets the name of the parameter. + + + + + + Gets or sets the type of the parameter. Obsolete alias for + + + + + + Gets or sets the type of the parameter. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Calls the specified static method on each log message and passes contextual parameters to it. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets the class name. + + + + + + Gets or sets the method name. The method must be public and static. + + Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx + e.g. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + + + + Initializes a new instance of the class. + + Name of the target. + Method to call on logevent. + + + + Initializes the target. + + + + + Calls the specified Method. + + Method parameters. + The logging event. + + + + Calls the specified Method. + + Method parameters. + + + + The base class for all targets which call methods (local or remote). + Manages parameters and type coercion. + + + + + Initializes a new instance of the class. + + + + + Gets the array of parameters to be passed. + + + + + + + + + Prepares an array of parameters to be passed based on the logging event and calls DoInvoke(). + + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The logging event. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Sends log messages over the network. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ To print the results, use any application that's able to receive messages over + TCP or UDP. NetCat is + a simple but very powerful command-line tool that can be used for that. This image + demonstrates the NetCat tool receiving log messages from Network target. +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will be very slow. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+

+ There are two specialized versions of the Network target: Chainsaw + and NLogViewer which write to instances of Chainsaw log4j viewer + or NLogViewer application respectively. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets the network address. + + + The network address can be: +
    +
  • tcp://host:port - TCP (auto select IPv4/IPv6) (not supported on Windows Phone 7.0)
  • +
  • tcp4://host:port - force TCP/IPv4 (not supported on Windows Phone 7.0)
  • +
  • tcp6://host:port - force TCP/IPv6 (not supported on Windows Phone 7.0)
  • +
  • udp://host:port - UDP (auto select IPv4/IPv6, not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp4://host:port - force UDP/IPv4 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • udp6://host:port - force UDP/IPv6 (not supported on Silverlight and on Windows Phone 7.0)
  • +
  • http://host:port/pageName - HTTP using POST verb
  • +
  • https://host:port/pageName - HTTPS using POST verb
  • +
+ For SOAP-based webservice support over HTTP use WebService target. +
+ +
+ + + Gets or sets a value indicating whether to keep connection open whenever possible. + + + + + + Gets or sets a value indicating whether to append newline at the end of log message. + + + + + + Gets or sets the end of line value if a newline is appended at the end of log message . + + + + + + Gets or sets the maximum message size in bytes. + + + + + + Gets or sets the size of the connection cache (number of connections which are kept alive). + + + + + + Gets or sets the maximum current connections. 0 = no maximum. + + + + + + Gets or sets the action that should be taken if the will be more connections than . + + + + + + Gets or sets the maximum queue size. + + + + + + Gets or sets the action that should be taken if the message is larger than + maxMessageSize. + + + + + + Gets or sets the encoding to be used. + + + + + + Get or set the SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Sends the + rendered logging event over the network optionally concatenating it with a newline character. + + The logging event. + + + + Try to remove. + + + + + removed something? + + + + Gets the bytes to be written. + + Log event. + Byte array. + + + + The action to be taken when there are more connections then the max. + + + + + Just allow it. + + + + + Discard the connection item. + + + + + Block until there's more room in the queue. + + + + + Action that should be taken if the message overflows. + + + + + Report an error. + + + + + Split the message into smaller pieces. + + + + + Discard the entire message. + + + + + Represents a parameter to a NLogViewer target. + + + + + Initializes a new instance of the class. + + + + + Gets or sets viewer parameter name. + + + + + + Gets or sets the layout that should be use to calculate the value for the parameter. + + + + + + Gets or sets whether an attribute with empty value should be included in the output + + + + + + Sends log messages to the remote instance of NLog Viewer. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

+ NOTE: If your receiver application is ever likely to be off-line, don't use TCP protocol + or you'll get TCP timeouts and your application will crawl. + Either switch to UDP transport or use AsyncWrapper target + so that your application threads will not be blocked by the timing-out connection attempts. +

+
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Gets or sets a value indicating whether to include NLog-specific extensions to log4j schema. + + + + + + Gets or sets the AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the information sent over the network. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include stack contents. + + + + + + Gets or sets a value indicating whether to include dictionary contents. + + + + + + Gets or sets a value indicating whether to include contents of the stack. + + + + + + Gets or sets the NDLC item separator. + + + + + + Gets or sets the option to include all properties from the log events + + + + + + Gets or sets the NDC item separator. + + + + + + Gets or sets the renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + + Gets the collection of parameters. Each parameter contains a mapping + between NLog layout and a named parameter. + + + + + + Gets the layout renderer which produces Log4j-compatible XML events. + + + + + Gets or sets the instance of that is used to format log messages. + + + + + + Discards log messages. Used mainly for debugging and benchmarking. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Gets or sets a value indicating whether to perform layout calculation. + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + + Does nothing. Optionally it calculates the layout text but + discards the results. + + The logging event. + + + + Outputs log messages through the OutputDebugString() Win32 API. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Outputs the rendered logging event through the OutputDebugString() Win32 API. + + The logging event. + + + + SMTP authentication modes. + + + + + No authentication. + + + + + Basic - username and password. + + + + + NTLM Authentication. + + + + + Represents logging target. + + + + Are all layouts in this target thread-agnostic, if so we don't precalculate the layouts + + + + The Max StackTraceUsage of all the in this Target + + + + + Gets or sets the name of the target. + + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers + Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + Gets the object which can be used to synchronize asynchronous operations that must rely on the . + + + + + Gets the logging configuration this target is part of. + + + + + Gets a value indicating whether the target has been initialized. + + + + + Can be used if has been enabled. + + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Closes the target. + + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Calls the on each volatile layout + used by this target. + This method won't prerender if all layouts in this target are thread-agnostic. + + + The log event. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Writes the log to the target. + + Log event to write. + + + + Writes the array of log events. + + The log events. + + + + Writes the array of log events. + + The log events. + + + + Initializes this instance. + + The configuration. + + + + Closes this instance. + + + + + Releases unmanaged and - optionally - managed resources. + + True to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Initializes the target. Can be used by inheriting classes + to initialize logging. + + + + + Closes the target and releases any unmanaged resources. + + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Writes async log event to the log target. + + Async Log event to be written out. + + + + Writes a log event to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Log event to be written out. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + NOTE! Obsolete, instead override WriteAsyncThreadSafe(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target, in a thread safe manner. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Writes an array of logging events to the log target, in a thread safe manner. + Any override of this method has to provide their own synchronization mechanism. + + !WARNING! Custom targets should only override this method if able to provide their + own synchronization mechanism. -objects are not guaranteed to be + thread-safe, so using them without a SyncRoot-object can be dangerous. + + Logging events to be written out. + + + + Merges (copies) the event context properties from any event info object stored in + parameters of the given event info object. + + The event info object to perform the merge to. + + + + Renders the event info in layout. + + The layout. + The event info. + String representing log event. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Register a custom Target. + + Short-cut for registering to default + Type of the Target. + Name of the Target. + + + + Should the exception be rethrown? + + + Upgrade to private protected when using C# 7.2 + + + + Marks class as a logging target and assigns a name to it. + + This attribute is not required when registering the target in the API. + + + + Initializes a new instance of the class. + + Name of the target. + + + + Gets or sets a value indicating whether to the target is a wrapper target (used to generate the target summary documentation page). + + + + + Gets or sets a value indicating whether to the target is a compound target (used to generate the target summary documentation page). + + + + + Attribute details for + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the attribute. + The layout of the attribute's value. + + + + Gets or sets the name of the attribute. + + + + + + Gets or sets the layout that will be rendered as the attribute's value. + + + + + + Gets or sets when an empty value should cause the property to be included + + + + + Gets or sets the type of the property. + + + + + Represents target that supports context capture using MDLC, MDC, NDLC and NDC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets or sets a value indicating whether to include contents of the dictionary + + + + + + Gets or sets a value indicating whether to include call site (class and method name) in the + + + + + + Gets or sets a value indicating whether to include source info (file name and line number) in the + + + + + + Gets the array of custom attributes to be passed into the logevent context + + + + + + Constructor + + + + + + + + Check if logevent has properties (or context properties) + + + True if properties should be included + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Dictionary with any context properties for the logEvent (Null if none found) + + + + Checks if any context properties, and if any returns them as a single dictionary + + + Optional prefilled dictionary + Dictionary with any context properties for the logEvent (Null if none found) + + + + Creates combined dictionary of all configured properties for logEvent + + + Dictionary with all collected properties for logEvent + + + + Creates combined dictionary of all configured properties for logEvent + + + Optional prefilled dictionary + Dictionary with all collected properties for logEvent + + + + Generates a new unique name, when duplicate names are detected + + LogEvent that triggered the duplicate name + Duplicate item name + Item Value + Dictionary of context values + New (unique) value (or null to skip value). If the same value is used then the item will be overwritten + + + + Returns the captured snapshot of for the + + + Dictionary with MDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with MDLC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Returns the captured snapshot of for the + + + Dictionary with NDLC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with GDC context if any, else null + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDC key + MDC value + Snapshot of MDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Optional pre-allocated dictionary for the snapshot + Dictionary with MDLC context if any, else null + + + + Take snapshot of a single object value from + + Log event + MDLC key + MDLC value + Snapshot of MDLC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDC value + Snapshot of NDC value + Include object value in snapshot + + + + Takes snapshot of for the + + + Dictionary with NDLC context if any, else null + + + + Take snapshot of a single object value from + + Log event + NDLC value + Snapshot of NDLC value + Include object value in snapshot + + + + Take snapshot of a single object value + + Log event + Key Name (null when NDC / NDLC) + Object Value + Snapshot of value + Include object value in snapshot + + + Internal Layout that allows capture of MDC context + + + Internal Layout that allows capture of NDC context + + + Internal Layout that allows capture of MDLC context + + + Internal Layout that allows capture of NDLC context + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the layout used to format log messages. + + + + + + Represents target that supports string formatting using layouts. + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Gets or sets the text to be rendered. + + + + + + Gets or sets the footer. + + + + + + Gets or sets the header. + + + + + + Gets or sets the layout with header and footer. + + The layout with header and footer. + + + + Sends log messages through System.Diagnostics.Trace. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +
+
+ + + Always use independent of + + + + + + Forward to (Instead of ) + + + Trace.Fail can have special side-effects, and give fatal exceptions, message dialogs or Environment.FailFast + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + Name of the target. + + + + Writes the specified logging event to the facility. + + Redirects the log message depending on and . + When is false: + - writes to + - writes to + - writes to + - writes to + - writes to + - writes to + + The logging event. + + + + Web service protocol. + + + + + Use SOAP 1.1 Protocol. + + + + + Use SOAP 1.2 Protocol. + + + + + Use HTTP POST Protocol. + + + + + Use HTTP GET Protocol. + + + + + Do an HTTP POST of a JSON document. + + + + + Do an HTTP POST of an XML document. + + + + + Web Service Proxy Configuration Type + + + + + Default proxy configuration from app.config (System.Net.WebRequest.DefaultWebProxy) + + + Example of how to configure default proxy using app.config + + <system.net> + <defaultProxy enabled = "true" useDefaultCredentials = "true" > + <proxy usesystemdefault = "True" /> + </defaultProxy> + </system.net> + + + + + + Automatic use of proxy with authentication (cached) + + + + + Disables use of proxy (fast) + + + + + Custom proxy address (cached) + + + + + Calls the specified web service on each log message. + + Documentation on NLog Wiki + + The web service must implement a method that accepts a number of string parameters. + + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ This assumes just one target and a single rule. More configuration + options are described here. +

+

+ To set up the log target programmatically use code like this: +

+ +

The example web service that works with this example is shown below

+ +
+
+ + + dictionary that maps a concrete implementation + to a specific -value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target + + + + Gets or sets the web service URL. + + + + + + Gets or sets the Web service method name. Only used with Soap. + + + + + + Gets or sets the Web service namespace. Only used with Soap. + + + + + + Gets or sets the protocol to be used when calling web service. + + + + + + Gets or sets the proxy configuration when calling web service + + + + + + Gets or sets the custom proxy address, include port separated by a colon + + + + + + Should we include the BOM (Byte-order-mark) for UTF? Influences the property. + + This will only work for UTF-8. + + + + + + Gets or sets the encoding. + + + + + + Gets or sets a value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + A value of true if Rfc3986; otherwise, false for legacy Rfc2396. + + + + + Gets or sets a value whether escaping be done according to the old NLog style (Very non-standard) + + A value of true if legacy encoding; otherwise, false for standard UTF8 encoding. + + + + + Gets or sets the name of the root XML element, + if POST of XML document chosen. + If so, this property must not be null. + (see and ). + + + + + + Gets or sets the (optional) root namespace of the XML document, + if POST of XML document chosen. + (see and ). + + + + + + Gets the array of parameters to be passed. + + + + + + Indicates whether to pre-authenticate the HttpWebRequest (Requires 'Authorization' in parameters) + + + + + + Calls the target method. Must be implemented in concrete classes. + + Method call parameters. + + + + Calls the target DoInvoke method, and handles AsyncContinuation callback + + Method call parameters. + The continuation. + + + + Invokes the web service method. + + Parameters to be passed. + The logging event. + + + + Flush any pending log messages asynchronously (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + Builds the URL to use when calling the web service for a message, depending on the WebServiceProtocol. + + + + + + + Write from input to output. Fix the UTF-8 bom + + + + + + + + + base class for POST formatters, that + implement former PrepareRequest() method, + that creates the content for + the requested kind of HTTP request + + + + + Asynchronous request queue. + + + + + Initializes a new instance of the AsyncRequestQueue class. + + Request limit. + The overflow action. + + + + Gets the number of requests currently in the queue. + + + + + Enqueues another item. If the queue is overflown the appropriate + action is taken as specified by . + + The log event info. + Queue was empty before enqueue + + + + Dequeues a maximum of count items from the queue + and adds returns the list containing them. + + Maximum number of items to be dequeued (-1 means everything). + The array of log events. + + + + Dequeues into a preallocated array, instead of allocating a new one + + Maximum number of items to be dequeued + Preallocated list + + + + Clears the queue. + + + + + Gets or sets the request limit. + + + + + Gets or sets the action to be taken when there's no more room in + the queue and another request is enqueued. + + + + + Notifies about log event that was dropped when set to + + + + + Notifies when queue size is growing over + + + + + Raise event when queued element was dropped because of queue overflow + + Dropped queue item + + + + Raise event when RequestCount overflow + + current requests count + + + + Provides asynchronous, buffered execution of target writes. + + Documentation on NLog Wiki + +

+ Asynchronous target wrapper allows the logger code to execute more quickly, by queueing + messages and processing them in a separate thread. You should wrap targets + that spend a non-trivial amount of time in their Write() method with asynchronous + target to speed up logging. +

+

+ Because asynchronous logging is quite a common scenario, NLog supports a + shorthand notation for wrapping all targets with AsyncWrapper. Just add async="true" to + the <targets/> element in the configuration file. +

+ + + ... your targets go here ... + + ]]> +
+ +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of requests in the queue. + The action to be taken when the queue overflows. + + + + Gets or sets the number of log events that should be processed in a batch + by the lazy writer thread. + + + + + + Gets or sets the time in milliseconds to sleep between batches. (1 or less means trigger on new activity) + + + + + + Raise event when Target cannot store LogEvent. + Event arg contains lost LogEvents + + + + + Raises when event queue grow. + Queue can grow when was set to + + + + + Gets or sets the action to be taken when the lazy writer thread request queue count + exceeds the set limit. + + + + + + Gets or sets the limit on the number of requests in the lazy writer thread request queue. + + + + + + Gets or sets the limit of full s to write before yielding into + Performance is better when writing many small batches, than writing a single large batch + + + + + + Gets or sets whether to use the locking queue, instead of a lock-free concurrent queue + The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + + Gets the queue of lazy writer thread requests. + + + + + Schedules a flush of pending events in the queue (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target by starting the lazy writer timer. + + + + + Shuts down the lazy writer timer. + + + + + Starts the lazy writer thread which periodically writes + queued log messages. + + + + + Attempts to start an instant timer-worker-thread which can write + queued log messages. + + Returns true when scheduled a timer-worker-thread + + + + Stops the lazy writer thread. + + + + + Adds the log event to asynchronous queue to be processed by + the lazy writer thread. + + The log event. + + The is called + to ensure that the log event can be processed in another thread. + + + + + Write to queue without locking + + + + + + The action to be taken when the queue overflows. + + + + + Grow the queue. + + + + + Discard the overflowing item. + + + + + Block until there's more room in the queue. + + + + + Causes a flush on a wrapped target if LogEvent satisfies the . + If condition isn't set, flushes on each write. + + Documentation on NLog Wiki + +

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Gets or sets the condition expression. Log events who meet this condition will cause + a flush on the wrapped target. + + + + + + Delay the flush until the LogEvent has been confirmed as written + + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + + + + Initializes a new instance of the class. + + + The default value of the layout is: ${longdate}|${level:uppercase=true}|${logger}|${message} + + The wrapped target. + Name of the target + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes the target. + + + + + Forwards the call to the .Write() + and calls on it if LogEvent satisfies + the flush condition or condition is null. + + Logging event to be written out. + + + + Schedules a flush operation, that triggers when all pending flush operations are completed (in case of asynchronous targets). + + The asynchronous continuation. + + + + Closes the target. + + + + + A target that buffers log events and sends them in batches to the wrapped target. + + Documentation on NLog Wiki + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + + + + Initializes a new instance of the class. + + The wrapped target. + Size of the buffer. + The flush timeout. + The action to take when the buffer overflows. + + + + Gets or sets the number of log events to be buffered. + + + + + + Gets or sets the timeout (in milliseconds) after which the contents of buffer will be flushed + if there's no write in the specified period of time. Use -1 to disable timed flushes. + + + + + + Gets or sets a value indicating whether to use sliding timeout. + + + This value determines how the inactivity period is determined. If sliding timeout is enabled, + the inactivity timer is reset after each write, if it is disabled - inactivity timer will + count from the first event written to the buffer. + + + + + + Gets or sets the action to take if the buffer overflows. + + + Setting to will replace the + oldest event with new events without sending events down to the wrapped target, and + setting to will flush the + entire buffer to the wrapped target. + + + + + + Flushes pending events in the buffer (if any), followed by flushing the WrappedTarget. + + The asynchronous continuation. + + + + Initializes the target. + + + + + Closes the target by flushing pending events in the buffer (if any). + + + + + Adds the specified log event to the buffer and flushes + the buffer in case the buffer gets full. + + The log event. + + + + The action to be taken when the buffer overflows. + + + + + Flush the content of the buffer. + + + + + Discard the oldest item. + + + + + A base class for targets which wrap other (multiple) targets + and provide various forms of target routing. + + + + + Initializes a new instance of the class. + + The targets. + + + + Gets the collection of targets managed by this compound target. + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Writes logging event to the log target. + + Logging event to be written out. + + + + Flush any pending log messages for all wrapped targets. + + The asynchronous continuation. + + + + Provides fallback-on-error. + + Documentation on NLog Wiki + +

This example causes the messages to be written to server1, + and if it fails, messages go to server2.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Gets or sets a value indicating whether to return to the first target after any successful write. + + + + + + + + + + + + Forwards the log event to the sub-targets until one of them succeeds. + + The log event. + + The method remembers the last-known-successful target + and starts the iteration from it. + If is set, the method + resets the target to the first target + stored in . + + + + + Filtering rule for . + + + + + Initializes a new instance of the FilteringRule class. + + + + + Initializes a new instance of the FilteringRule class. + + Condition to be tested against all events. + Filter to apply to all log events when the first condition matches any of them. + + + + Gets or sets the condition to be tested. + + + + + + Gets or sets the resulting filter to be applied when the condition matches. + + + + + + Filters log entries based on a condition. + + Documentation on NLog Wiki + +

This example causes the messages not contains the string '1' to be ignored.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The condition. + + + + Initializes a new instance of the class. + + The wrapped target. + The condition. + + + + Gets or sets the condition expression. Log events who meet this condition will be forwarded + to the wrapped target. + + + + + + Gets or sets the filter. Log events who evaluates to will be discarded + + + + + + + + + Checks the condition against the passed log event. + If the condition is met, the log event is forwarded to + the wrapped target. + + Log event. + + + + + + + Limits the number of messages written per timespan to the wrapped target. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The name of the target. + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + + + + Initializes a new instance of the class. + + The wrapped target. + Maximum number of messages written per interval. + Interval in which the maximum number of messages can be written. + + + + Gets or sets the maximum allowed number of messages written per . + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets or sets the interval in which messages will be written up to the number of messages. + + + Messages received after has been reached in the current will be discarded. + + + + + + Gets the DateTime when the current will be reset. + + + + + + Gets the number of written in the current . + + + + + + Initializes the target and resets the current Interval and . + + + + + Writes log event to the wrapped target if the current is lower than . + If the is already reached, no log event will be written to the wrapped target. + resets when the current is expired. + + Log event to be written out. + + + + Arguments for events. + + + + + + + + Instance of that was dropped by + + + + + Raises by when + queue is full + and set to + By default queue doubles it size. + + + + + Contains items count and new queue size. + + Required queue size + Current queue size + + + + New queue size + + + + + Current requests count + + + + + Logon provider. + + + + + Use the standard logon provider for the system. + + + The default security provider is negotiate, unless you pass NULL for the domain name and the user name + is not in UPN format. In this case, the default provider is NTLM. + NOTE: Windows 2000/NT: The default security provider is NTLM. + + + + + Filters buffered log entries based on a set of conditions that are evaluated on a group of events. + + Documentation on NLog Wiki + + PostFilteringWrapper must be used with some type of buffering target or wrapper, such as + AsyncTargetWrapper, BufferingWrapper or ASPNetBufferingWrapper. + + +

+ This example works like this. If there are no Warn,Error or Fatal messages in the buffer + only Info messages are written to the file, but if there are any warnings or errors, + the output includes detailed trace (levels >= Debug). You can plug in a different type + of buffering wrapper (such as ASPNetBufferingWrapper) to achieve different + functionality. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + + + + Gets or sets the default filter to be applied when no specific rule matches. + + + + + + Gets the collection of filtering rules. The rules are processed top-down + and the first rule that matches determines the filtering condition to + be applied to log events. + + + + + + + + + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Evaluates all filtering rules to find the first one that matches. + The matching rule determines the filtering condition to be applied + to all items in a buffer. If no condition matches, default filter + is applied to the array of log events. + + Array of log events to be post-filtered. + + + + Evaluate all the rules to get the filtering condition + + + + + + + Sends log messages to a randomly selected target. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt + chosen randomly on a per-message basis. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the log event to one of the sub-targets. + The sub-target is randomly chosen. + + The log event. + + + + Repeats each log event the specified number of times. + + Documentation on NLog Wiki + +

This example causes each log message to be repeated 3 times.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The repeat count. + + + + Initializes a new instance of the class. + + The wrapped target. + The repeat count. + + + + Gets or sets the number of times to repeat each log message. + + + + + + Forwards the log message to the by calling the method times. + + The log event. + + + + Retries in case of write error. + + Documentation on NLog Wiki + +

This example causes each write attempt to be repeated 3 times, + sleeping 1 second between attempts if first one fails.

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Initializes a new instance of the class. + + The wrapped target. + The retry count. + The retry delay milliseconds. + + + + Gets or sets the number of retries that should be attempted on the wrapped target in case of a failure. + + + + + + Gets or sets the time to wait between retries in milliseconds. + + + + + + Special SyncObject to allow closing down Target while busy retrying + + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Writes the specified log event to the wrapped target in a thread-safe manner. + + The log event. + + + + Writes the specified log event to the wrapped target, retrying and pausing in case of an error. + + The log event. + + + + Distributes log events to targets in a round-robin fashion. + + Documentation on NLog Wiki + +

This example causes the messages to be written to either file1.txt or file2.txt. + Each odd message is written to file2.txt, each even message goes to file1.txt. +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Ensures forwarding happens without holding lock + + + + + + Forwards the write to one of the targets from + the collection. + + The log event. + + The writes are routed in a round-robin fashion. + The first log event goes to the first target, the second + one goes to the second target and so on looping to the + first target when there are no more targets available. + In general request N goes to Targets[N % Targets.Count]. + + + + + Impersonation level. + + + + + Anonymous Level. + + + + + Identification Level. + + + + + Impersonation Level. + + + + + Delegation Level. + + + + + Logon type. + + + + + Interactive Logon. + + + This logon type is intended for users who will be interactively using the computer, such as a user being logged on + by a terminal server, remote shell, or similar process. + This logon type has the additional expense of caching logon information for disconnected operations; + therefore, it is inappropriate for some client/server applications, + such as a mail server. + + + + + Network Logon. + + + This logon type is intended for high performance servers to authenticate plaintext passwords. + The LogonUser function does not cache credentials for this logon type. + + + + + Batch Logon. + + + This logon type is intended for batch servers, where processes may be executing on behalf of a user without + their direct intervention. This type is also for higher performance servers that process many plaintext + authentication attempts at a time, such as mail or Web servers. + The LogonUser function does not cache credentials for this logon type. + + + + + Logon as a Service. + + + Indicates a service-type logon. The account provided must have the service privilege enabled. + + + + + Network Clear Text Logon. + + + This logon type preserves the name and password in the authentication package, which allows the server to make + connections to other network servers while impersonating the client. A server can accept plaintext credentials + from a client, call LogonUser, verify that the user can access the system across the network, and still + communicate with other servers. + NOTE: Windows NT: This value is not supported. + + + + + New Network Credentials. + + + This logon type allows the caller to clone its current token and specify new credentials for outbound connections. + The new logon session has the same local identifier but uses different credentials for other network connections. + NOTE: This logon type is supported only by the LOGON32_PROVIDER_WINNT50 logon provider. + NOTE: Windows NT: This value is not supported. + + + + + Writes log events to all targets. + + Documentation on NLog Wiki + +

This example causes the messages to be written to both file1.txt or file2.txt +

+

+ To set up the target in the configuration file, + use the following syntax: +

+ +

+ The above examples assume just one target and a single rule. See below for + a programmatic configuration that's equivalent to the above config file: +

+ +
+
+ + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Name of the target. + The targets. + + + + Initializes a new instance of the class. + + The targets. + + + + Forwards the specified log event to all sub-targets. + + The log event. + + + + NOTE! Obsolete, instead override Write(IList{AsyncLogEventInfo} logEvents) + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Writes an array of logging events to the log target. By default it iterates on all + events and passes them to "Write" method. Inheriting classes can use this method to + optimize batch writes. + + Logging events to be written out. + + + + Base class for targets wrap other (single) targets. + + + + + Gets or sets the target that is wrapped by this target. + + + + + + Returns the text representation of the object. Used for diagnostics. + + A string that describes the target. + + + + Flush any pending log messages (in case of asynchronous targets). + + The asynchronous continuation. + + + + Writes logging event to the log target. Must be overridden in inheriting + classes. + + Logging event to be written out. + + + + Current local time retrieved directly from DateTime.Now. + + + + + Gets current local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Current UTC time retrieved directly from DateTime.UtcNow. + + + + + Gets current UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Fast time source that updates current time only once per tick (15.6 milliseconds). + + + + + Gets raw uncached time from derived time source. + + + + + Gets current time cached for one system tick (15.6 milliseconds). + + + + + Fast local time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached local time directly from DateTime.Now. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to local time. + + + + + Fast UTC time source that is updated once per tick (15.6 milliseconds). + + + + + Gets uncached UTC time directly from DateTime.UtcNow. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to UTC time. + + + + + Defines source of current time. + + + + + Gets current time. + + + + + Gets or sets current global time source used in all log events. + + + Default time source is . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Converts the specified system time to the same form as the time value originated from this time source. + + The system originated time value to convert. + + The value of converted to the same form + as time values originated from this source. + + + + There are situations when NLog have to compare the time originated from TimeSource + to the time originated externally in the system. + To be able to provide meaningful result of such comparisons the system time must be expressed in + the same form as TimeSource time. + + + Examples: + - If the TimeSource provides time values of local time, it should also convert the provided + to the local time. + - If the TimeSource shifts or skews its time values, it should also apply + the same transform to the given . + + + + + + Marks class as a time source and assigns a name to it. + + + + + Initializes a new instance of the class. + + Name of the time source. + + + diff --git a/packages/NLog.Config.4.7.2/.signature.p7s b/packages/NLog.Config.4.7.2/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..9445336177635bb9f88e0811aef10eb025f2e249 GIT binary patch literal 9471 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 S?Ko3bi#)LumP+Iz?SBBL&L!vo literal 0 HcmV?d00001 diff --git a/packages/NLog.Config.4.7.2/content/NLog.config b/packages/NLog.Config.4.7.2/content/NLog.config new file mode 100644 index 0000000..7a0f3aa --- /dev/null +++ b/packages/NLog.Config.4.7.2/content/NLog.config @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/packages/NLog.Config.4.7.2/contentFiles/any/any/NLog.config b/packages/NLog.Config.4.7.2/contentFiles/any/any/NLog.config new file mode 100644 index 0000000..7a0f3aa --- /dev/null +++ b/packages/NLog.Config.4.7.2/contentFiles/any/any/NLog.config @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/packages/NLog.Config.4.7.2/tools/Install.ps1 b/packages/NLog.Config.4.7.2/tools/Install.ps1 new file mode 100644 index 0000000..3c10903 --- /dev/null +++ b/packages/NLog.Config.4.7.2/tools/Install.ps1 @@ -0,0 +1,12 @@ +param($installPath, $toolsPath, $package, $project) + +$configItem = $project.ProjectItems.Item("NLog.config") + +# set 'Copy To Output Directory' to 'Copy if newer' +$copyToOutput = $configItem.Properties.Item("CopyToOutputDirectory") +$copyToOutput.Value = 2 + +# set 'Build Action' to 'Content' +$buildAction = $configItem.Properties.Item("BuildAction") +$buildAction.Value = 2 + diff --git a/packages/NLog.Schema.4.7.2/.signature.p7s b/packages/NLog.Schema.4.7.2/.signature.p7s new file mode 100644 index 0000000000000000000000000000000000000000..a261386206e2fe3c1ab020acab179a16726fc5ac GIT binary patch literal 9470 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 + + + + + + + + + + + + + + Watch config file for changes and reload automatically. + + + + + Print internal NLog messages to the console. Default value is: false + + + + + Print internal NLog messages to the console error output. Default value is: false + + + + + Write internal NLog messages to the specified file. + + + + + Log level threshold for internal log messages. Default value is: Info. + + + + + Global log level threshold for application log messages. Messages below this level won't be logged. + + + + + Throw an exception when there is an internal error. Default value is: false. Not recommend to set to true in production! + + + + + Throw an exception when there is a configuration error. If not set, determined by throwExceptions. + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. Default value is: false. + + + + + Write internal NLog messages to the System.Diagnostics.Trace. Default value is: false. + + + + + Write timestamps for internal NLog messages. Default value is: true. + + + + + Use InvariantCulture as default culture instead of CurrentCulture. Default value is: false. + + + + + Perform message template parsing and formatting of LogEvent messages (true = Always, false = Never, empty = Auto Detect). Default value is: empty. + + + + + + + + + + + + + + Make all targets within this section asynchronous (creates additional threads but the calling thread isn't blocked by any target writes). + + + + + + + + + + + + + + + + + Prefix for targets/layout renderers/filters/conditions loaded from this assembly. + + + + + Load NLog extensions from the specified file (*.dll) + + + + + Load NLog extensions from the specified assembly. Assembly name should be fully qualified. + + + + + + + + + + Filter on the name of the logger. May include wildcard characters ('*' or '?'). + + + + + Comma separated list of levels that this rule matches. + + + + + Minimum level that this rule matches. + + + + + Maximum level that this rule matches. + + + + + Level that this rule matches. + + + + + Comma separated list of target names. + + + + + Ignore further rules if this one matches. + + + + + Enable this rule. Note: disabled rules aren't available from the API. + + + + + Rule identifier to allow rule lookup with Configuration.FindRuleByName and Configuration.RemoveRuleByName. + + + + + + + + + + + + + + + Default action if none of the filters match. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the file to be included. You could use * wildcard. The name is relative to the name of the current config file. + + + + + Ignore any errors in the include file. + + + + + + + + Variable value. Note, the 'value' attribute has precedence over this one. + + + + + + Variable name. + + + + + Variable value. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Number of log events that should be processed in a batch by the lazy writer thread. + + + + + Whether to use the locking queue, instead of a lock-free concurrent queue The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + Limit of full s to write before yielding into Performance is better when writing many small batches, than writing a single large batch + + + + + Action to be taken when the lazy writer thread request queue count exceeds the set limit. + + + + + Limit on the number of requests in the lazy writer thread request queue. + + + + + Time in milliseconds to sleep between batches. (1 or less means trigger on new activity) + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + Delay the flush until the LogEvent has been confirmed as written + + + + + Condition expression. Log events who meet this condition will cause a flush on the wrapped target. + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Number of log events to be buffered. + + + + + Timeout (in milliseconds) after which the contents of buffer will be flushed if there's no write in the specified period of time. Use -1 to disable timed flushes. + + + + + Action to take if the buffer overflows. + + + + + Indicates whether to use sliding timeout. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Encoding to be used. + + + + + Instance of that is used to format log messages. + + + + + End of line value if a newline is appended at the end of log message . + + + + + Maximum message size in bytes. + + + + + Indicates whether to append newline at the end of log message. + + + + + Get or set the SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + Network address. + + + + + Size of the connection cache (number of connections which are kept alive). + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + Maximum queue size. + + + + + Maximum current connections. 0 = no maximum. + + + + + Action that should be taken if the will be more connections than . + + + + + Action that should be taken if the message is larger than maxMessageSize. + + + + + Indicates whether to keep connection open whenever possible. + + + + + NDLC item separator. + + + + + Indicates whether to include source info (file name and line number) in the information sent over the network. + + + + + Renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + Indicates whether to include NLog-specific extensions to log4j schema. + + + + + Indicates whether to include contents of the stack. + + + + + Indicates whether to include stack contents. + + + + + Indicates whether to include dictionary contents. + + + + + Indicates whether to include dictionary contents. + + + + + Indicates whether to include call site (class and method name) in the information sent over the network. + + + + + Option to include all properties from the log events + + + + + AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + NDC item separator. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Layout that should be use to calculate the value for the parameter. + + + + + Viewer parameter name. + + + + + Whether an attribute with empty value should be included in the output + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + Indicates whether to auto-check if the console is available. - Disables console writing if Environment.UserInteractive = False (Windows Service) - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + Enables output using ANSI Color Codes + + + + + The encoding for writing messages to the . + + + + + Indicates whether the error stream (stderr) should be used instead of the output stream (stdout). + + + + + Indicates whether to auto-flush after + + + + + Indicates whether to auto-check if the console has been redirected to file - Disables coloring logic when System.Console.IsOutputRedirected = true + + + + + Indicates whether to use default row highlighting rules. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Condition that must be met in order to set the specified foreground and background color. + + + + + Background color. + + + + + Foreground color. + + + + + + + + + + + + + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + Condition that must be met before scanning the row for highlight of words + + + + + Indicates whether to ignore case when comparing texts. + + + + + Regular expression to be matched. You must specify either text or regex. + + + + + Text to be matched. You must specify either text or regex. + + + + + Indicates whether to match whole words only. + + + + + Background color. + + + + + Foreground color. + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + Indicates whether to auto-flush after + + + + + Indicates whether to auto-check if the console is available - Disables console writing if Environment.UserInteractive = False (Windows Service) - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + The encoding for writing messages to the . + + + + + Indicates whether to send the log messages to the standard error instead of the standard output. + + + + + Whether to enable batch writing using char[]-buffers, instead of using + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Obsolete - value will be ignored! The logging code always runs outside of transaction. Gets or sets a value indicating whether to use database transactions. Some data providers require this. + + + + + Indicates whether to keep the database connection open between the log events. + + + + + Name of the database provider. + + + + + Database password. If the ConnectionString is not provided this value will be used to construct the "Password=" part of the connection string. + + + + + Database host name. If the ConnectionString is not provided this value will be used to construct the "Server=" part of the connection string. + + + + + Database user name. If the ConnectionString is not provided this value will be used to construct the "User ID=" part of the connection string. + + + + + Name of the connection string (as specified in <connectionStrings> configuration section. + + + + + Connection string. When provided, it overrides the values specified in DBHost, DBUserName, DBPassword, DBDatabase. + + + + + Database name. If the ConnectionString is not provided this value will be used to construct the "Database=" part of the connection string. + + + + + Connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used. + + + + + Configures isolated transaction batch writing. If supported by the database, then it will improve insert performance. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + Text of the SQL command to be run on each log level. + + + + + Type of the SQL command to be run on each log level. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Convert format of the property value + + + + + Culture used for parsing property string-value for type-conversion + + + + + Value to assign on the object-property + + + + + Name for the object-property + + + + + Type of the object-property + + + + + + + + + + + + + + Type of the command. + + + + + Connection string to run the command against. If not provided, connection string from the target is used. + + + + + Indicates whether to ignore failures. + + + + + Command text. + + + + + + + + + + + + + + + + + + Database parameter name. + + + + + Layout that should be use to calculate the value for the parameter. + + + + + Database parameter DbType. + + + + + Database parameter size. + + + + + Database parameter precision. + + + + + Database parameter scale. + + + + + Type of the parameter. + + + + + Convert format of the database parameter value. + + + + + Culture used for parsing parameter string-value for type-conversion + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Layout that renders event Category. + + + + + Optional entry type. When not set, or when not convertible to then determined by + + + + + Layout that renders event ID. + + + + + Name of the Event Log to write to. This can be System, Application or any user-defined name. + + + + + Name of the machine on which Event Log service is running. + + + + + Maximum Event log size in kilobytes. + + + + + Message length limit to write to the Event Log. + + + + + Value to be used as the event Source. + + + + + Action to take if the message is larger than the option. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Indicates whether to return to the first target after any successful write. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + File encoding. + + + + + Line ending mode. + + + + + Maximum days of archive files that should be kept. + + + + + Indicates whether to compress archive files into the zip archive format. + + + + + Way file archives are numbered. + + + + + Name of the file to be used for an archive. + + + + + Is the an absolute or relative path? + + + + + Indicates whether to automatically archive log files every time the specified time passes. + + + + + Size in bytes above which log files will be automatically archived. Warning: combining this with isn't supported. We cannot create multiple archive files, if they should have the same name. Choose: + + + + + Maximum number of archive files that should be kept. + + + + + Indicates whether the footer should be written only when the file is archived. + + + + + Maximum number of log file names that should be stored as existing. + + + + + Indicates whether to delete old log file on startup. + + + + + File attributes (Windows only). + + + + + Indicates whether to create directories if they do not exist. + + + + + Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. If set to false, nothing gets written when the filename is wrong. + + + + + Value of the file size threshold to archive old log file on startup. + + + + + Indicates whether to archive old log file on startup. + + + + + Value specifying the date format to use when archiving files. + + + + + Indicates whether to enable log file(s) to be deleted. + + + + + Indicates whether to write BOM (byte order mark) in created files + + + + + Indicates whether to replace file contents on each write instead of appending log message at the end. + + + + + Indicates whether file creation calls should be synchronized by a system global mutex. + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + Is the an absolute or relative path? + + + + + Name of the file to write to. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + Indicates whether concurrent writes to the log file by multiple processes on different network hosts. + + + + + Maximum number of seconds that files are kept open. If this number is negative the files are not automatically closed after a period of inactivity. + + + + + Number of files to be kept open. Setting this to a higher value may improve performance in a situation where a single File target is writing to many files (such as splitting by level or by logger). + + + + + Indicates whether to keep log file open instead of opening and closing it on each logging event. + + + + + Whether or not this target should just discard all data that its asked to write. Mostly used for when testing NLog Stack except final write + + + + + Indicates whether concurrent writes to the log file by multiple processes on the same host. + + + + + Number of times the write is appended on the file before NLog discards the log message. + + + + + Delay in milliseconds to wait before attempting to write to the file again. + + + + + Log file buffer size in bytes. + + + + + Maximum number of seconds before open files are flushed. If this number is negative or zero the files are not flushed by timer. + + + + + Indicates whether to automatically flush the file buffers after each log message. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Condition expression. Log events who meet this condition will be forwarded to the wrapped target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Windows domain name to change context to. + + + + + Required impersonation level. + + + + + Type of the logon provider. + + + + + Logon Type. + + + + + User account password. + + + + + Indicates whether to revert to the credentials of the process instead of impersonating another user. + + + + + Username to change context to. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Interval in which messages will be written up to the number of messages. + + + + + Maximum allowed number of messages written per . + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Endpoint address. + + + + + Name of the endpoint configuration in WCF configuration file. + + + + + Indicates whether to use a WCF service contract that is one way (fire and forget) or two way (request-reply) + + + + + Client ID. + + + + + Indicates whether to include per-event properties in the payload sent to the server. + + + + + Indicates whether to use binary message encoding. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + Layout that should be use to calculate the value for the parameter. + + + + + Name of the parameter. + + + + + Type of the parameter. + + + + + Type of the parameter. Obsolete alias for + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + Indicates whether NewLine characters in the body should be replaced with tags. + + + + + Priority used for sending mails. + + + + + Encoding to be used for sending e-mail. + + + + + BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + Indicates whether to add new lines between log entries. + + + + + Indicates whether to send message as HTML instead of plain text. + + + + + Sender's email address (e.g. joe@domain.com). + + + + + Mail message body (repeated for each log message send in one mail). + + + + + Mail subject. + + + + + Recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + Indicates the SMTP client timeout. + + + + + SMTP Server to be used for sending. + + + + + SMTP Authentication mode. + + + + + Username used to connect to SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + Password used to authenticate against SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + Indicates whether SSL (secure sockets layer) should be used when communicating with SMTP server. + + + + + Port number that SMTP Server is listening on. + + + + + Indicates whether the default Settings from System.Net.MailSettings should be used. + + + + + Folder where applications save mail messages to be processed by the local SMTP server. + + + + + Specifies how outgoing email messages will be handled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Max number of items to have in memory + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Class name. + + + + + Method name. The method must be public and static. Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx e.g. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Encoding to be used. + + + + + End of line value if a newline is appended at the end of log message . + + + + + Maximum message size in bytes. + + + + + Indicates whether to append newline at the end of log message. + + + + + Network address. + + + + + Size of the connection cache (number of connections which are kept alive). + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + Indicates whether to keep connection open whenever possible. + + + + + Maximum current connections. 0 = no maximum. + + + + + Maximum queue size. + + + + + Action that should be taken if the will be more connections than . + + + + + Action that should be taken if the message is larger than maxMessageSize. + + + + + Get or set the SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Encoding to be used. + + + + + Instance of that is used to format log messages. + + + + + End of line value if a newline is appended at the end of log message . + + + + + Maximum message size in bytes. + + + + + Indicates whether to append newline at the end of log message. + + + + + Get or set the SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + Network address. + + + + + Size of the connection cache (number of connections which are kept alive). + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + Maximum queue size. + + + + + Maximum current connections. 0 = no maximum. + + + + + Action that should be taken if the will be more connections than . + + + + + Action that should be taken if the message is larger than maxMessageSize. + + + + + Indicates whether to keep connection open whenever possible. + + + + + NDLC item separator. + + + + + Indicates whether to include source info (file name and line number) in the information sent over the network. + + + + + Renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + Indicates whether to include NLog-specific extensions to log4j schema. + + + + + Indicates whether to include contents of the stack. + + + + + Indicates whether to include stack contents. + + + + + Indicates whether to include dictionary contents. + + + + + Indicates whether to include dictionary contents. + + + + + Indicates whether to include call site (class and method name) in the information sent over the network. + + + + + Option to include all properties from the log events + + + + + AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + NDC item separator. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Indicates whether to perform layout calculation. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Indicates whether performance counter should be automatically created. + + + + + Name of the performance counter category. + + + + + Counter help text. + + + + + Name of the performance counter. + + + + + Performance counter type. + + + + + The value by which to increment the counter. + + + + + Performance counter instance name. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Default filter to be applied when no specific rule matches. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + Condition to be tested. + + + + + Resulting filter to be applied when the condition matches. + + + + + + + + + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + Number of times to repeat each log message. + + + + + + + + + + + + + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + Number of retries that should be attempted on the wrapped target in case of a failure. + + + + + Time to wait between retries in milliseconds. + + + + + + + + + + + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Forward to (Instead of ) + + + + + Always use independent of + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + Should we include the BOM (Byte-order-mark) for UTF? Influences the property. This will only work for UTF-8. + + + + + Web service method name. Only used with Soap. + + + + + Web service namespace. Only used with Soap. + + + + + Protocol to be used when calling web service. + + + + + Custom proxy address, include port separated by a colon + + + + + Encoding. + + + + + Web service URL. + + + + + Value whether escaping be done according to the old NLog style (Very non-standard) + + + + + Value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + + + + Indicates whether to pre-authenticate the HttpWebRequest (Requires 'Authorization' in parameters) + + + + + Name of the root XML element, if POST of XML document chosen. If so, this property must not be null. (see and ). + + + + + (optional) root namespace of the XML document, if POST of XML document chosen. (see and ). + + + + + Proxy configuration when calling web service + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Footer layout. + + + + + Header layout. + + + + + Body layout (can be repeated multiple times). + + + + + Custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). + + + + + Column delimiter. + + + + + Quote Character. + + + + + Quoting mode. + + + + + Indicates whether CVS should include header. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Layout of the column. + + + + + Name of the column. + + + + + Override of Quoting mode + + + + + + + + + + + + + + + + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + Option to render the empty object value {} + + + + + Option to suppress the extra spaces in the output json + + + + + List of property names to exclude when is true + + + + + Option to include all properties from the log event (as JSON) + + + + + Indicates whether to include contents of the dictionary. + + + + + Indicates whether to include contents of the dictionary. + + + + + Indicates whether to include contents of the dictionary. + + + + + How far should the JSON serializer follow object references before backing off + + + + + + + + + + + + + + + + + Layout that will be rendered as the attribute's value. + + + + + Name of the attribute. + + + + + Determines whether or not this attribute will be Json encoded. + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + Indicates whether to escape non-ascii characters + + + + + Whether an attribute with empty value should be included in the output + + + + + + + + + + + + + + Footer layout. + + + + + Header layout. + + + + + Body layout (can be repeated multiple times). + + + + + + + + + + + + + + + + + + + + + Option to include all properties from the log events + + + + + Indicates whether to include call site (class and method name) in the information sent over the network. + + + + + Indicates whether to include contents of the dictionary. + + + + + Indicates whether to include contents of the dictionary. + + + + + Indicates whether to include contents of the stack. + + + + + Indicates whether to include contents of the stack. + + + + + Indicates whether to include source info (file name and line number) in the information sent over the network. + + + + + + + + + + + + + + Layout text. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + List of property names to exclude when is true + + + + + Option to include all properties from the log event (as XML) + + + + + Indicates whether to include contents of the dictionary. + + + + + Indicates whether to include contents of the dictionary. + + + + + How far should the XML serializer follow object references before backing off + + + + + XML element name to use for rendering IList-collections items + + + + + XML attribute name to use when rendering property-key When null (or empty) then key-attribute is not included + + + + + XML element name to use when rendering properties + + + + + XML attribute name to use when rendering property-value When null (or empty) then value-attribute is not included and value is formatted as XML-element-value + + + + + Name of the root XML element + + + + + Value inside the root XML element + + + + + Whether a ElementValue with empty value should be included in the output + + + + + Auto indent and create new lines + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + + + + + + + + + + Layout that will be rendered as the attribute's value. + + + + + Name of the attribute. + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + Whether an attribute with empty value should be included in the output + + + + + + + + + + + + + + + + + + + + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + Name of the element + + + + + Value inside the element + + + + + Whether a ElementValue with empty value should be included in the output + + + + + Auto indent and create new lines + + + + + List of property names to exclude when is true + + + + + Option to include all properties from the log event (as XML) + + + + + Indicates whether to include contents of the dictionary. + + + + + Indicates whether to include contents of the dictionary. + + + + + How far should the XML serializer follow object references before backing off + + + + + XML element name to use for rendering IList-collections items + + + + + XML attribute name to use when rendering property-key When null (or empty) then key-attribute is not included + + + + + XML element name to use when rendering properties + + + + + XML attribute name to use when rendering property-value When null (or empty) then value-attribute is not included and value is formatted as XML-element-value + + + + + + + + + + + + + Action to be taken when filter matches. + + + + + Condition expression. + + + + + + + + + + + + + + + + + + + + + + + + + + Action to be taken when filter matches. + + + + + Indicates whether to ignore case when comparing strings. + + + + + Layout to be used to filter log messages. + + + + + Substring to be matched. + + + + + + + + + + + + + + + + + Action to be taken when filter matches. + + + + + String to compare the layout to. + + + + + Indicates whether to ignore case when comparing strings. + + + + + Layout to be used to filter log messages. + + + + + + + + + + + + + + + + + Action to be taken when filter matches. + + + + + Indicates whether to ignore case when comparing strings. + + + + + Layout to be used to filter log messages. + + + + + Substring to be matched. + + + + + + + + + + + + + + + + + Action to be taken when filter matches. + + + + + String to compare the layout to. + + + + + Indicates whether to ignore case when comparing strings. + + + + + Layout to be used to filter log messages. + + + + + + + + + + + + + + + + + + + + + + + + Action to be taken when filter matches. + + + + + Default number of unique filter values to expect, will automatically increase if needed + + + + + Applies the configured action to the initial logevent that starts the timeout period. Used to configure that it should ignore all events until timeout. + + + + + Layout to be used to filter log messages. + + + + + Max number of unique filter values to expect simultaneously + + + + + Max length of filter values, will truncate if above limit + + + + + How long before a filter expires, and logging is accepted again + + + + + Default buffer size for the internal buffers + + + + + Reuse internal buffers, and doesn't have to constantly allocate new buffers + + + + + Append FilterCount to the when an event is no longer filtered + + + + + Insert FilterCount value into when an event is no longer filtered + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/NLog.Schema.4.7.2/contentFiles/any/any/NLog.xsd b/packages/NLog.Schema.4.7.2/contentFiles/any/any/NLog.xsd new file mode 100644 index 0000000..578682a --- /dev/null +++ b/packages/NLog.Schema.4.7.2/contentFiles/any/any/NLog.xsd @@ -0,0 +1,3638 @@ + + + + + + + + + + + + + + + Watch config file for changes and reload automatically. + + + + + Print internal NLog messages to the console. Default value is: false + + + + + Print internal NLog messages to the console error output. Default value is: false + + + + + Write internal NLog messages to the specified file. + + + + + Log level threshold for internal log messages. Default value is: Info. + + + + + Global log level threshold for application log messages. Messages below this level won't be logged. + + + + + Throw an exception when there is an internal error. Default value is: false. Not recommend to set to true in production! + + + + + Throw an exception when there is a configuration error. If not set, determined by throwExceptions. + + + + + Gets or sets a value indicating whether Variables should be kept on configuration reload. Default value is: false. + + + + + Write internal NLog messages to the System.Diagnostics.Trace. Default value is: false. + + + + + Write timestamps for internal NLog messages. Default value is: true. + + + + + Use InvariantCulture as default culture instead of CurrentCulture. Default value is: false. + + + + + Perform message template parsing and formatting of LogEvent messages (true = Always, false = Never, empty = Auto Detect). Default value is: empty. + + + + + + + + + + + + + + Make all targets within this section asynchronous (creates additional threads but the calling thread isn't blocked by any target writes). + + + + + + + + + + + + + + + + + Prefix for targets/layout renderers/filters/conditions loaded from this assembly. + + + + + Load NLog extensions from the specified file (*.dll) + + + + + Load NLog extensions from the specified assembly. Assembly name should be fully qualified. + + + + + + + + + + Filter on the name of the logger. May include wildcard characters ('*' or '?'). + + + + + Comma separated list of levels that this rule matches. + + + + + Minimum level that this rule matches. + + + + + Maximum level that this rule matches. + + + + + Level that this rule matches. + + + + + Comma separated list of target names. + + + + + Ignore further rules if this one matches. + + + + + Enable this rule. Note: disabled rules aren't available from the API. + + + + + Rule identifier to allow rule lookup with Configuration.FindRuleByName and Configuration.RemoveRuleByName. + + + + + + + + + + + + + + + Default action if none of the filters match. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the file to be included. You could use * wildcard. The name is relative to the name of the current config file. + + + + + Ignore any errors in the include file. + + + + + + + + Variable value. Note, the 'value' attribute has precedence over this one. + + + + + + Variable name. + + + + + Variable value. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Number of log events that should be processed in a batch by the lazy writer thread. + + + + + Whether to use the locking queue, instead of a lock-free concurrent queue The locking queue is less concurrent when many logger threads, but reduces memory allocation + + + + + Limit of full s to write before yielding into Performance is better when writing many small batches, than writing a single large batch + + + + + Action to be taken when the lazy writer thread request queue count exceeds the set limit. + + + + + Limit on the number of requests in the lazy writer thread request queue. + + + + + Time in milliseconds to sleep between batches. (1 or less means trigger on new activity) + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + Delay the flush until the LogEvent has been confirmed as written + + + + + Condition expression. Log events who meet this condition will cause a flush on the wrapped target. + + + + + Only flush when LogEvent matches condition. Ignore explicit-flush, config-reload-flush and shutdown-flush + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Number of log events to be buffered. + + + + + Timeout (in milliseconds) after which the contents of buffer will be flushed if there's no write in the specified period of time. Use -1 to disable timed flushes. + + + + + Action to take if the buffer overflows. + + + + + Indicates whether to use sliding timeout. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Encoding to be used. + + + + + Instance of that is used to format log messages. + + + + + End of line value if a newline is appended at the end of log message . + + + + + Maximum message size in bytes. + + + + + Indicates whether to append newline at the end of log message. + + + + + Get or set the SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + Network address. + + + + + Size of the connection cache (number of connections which are kept alive). + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + Maximum queue size. + + + + + Maximum current connections. 0 = no maximum. + + + + + Action that should be taken if the will be more connections than . + + + + + Action that should be taken if the message is larger than maxMessageSize. + + + + + Indicates whether to keep connection open whenever possible. + + + + + NDLC item separator. + + + + + Indicates whether to include source info (file name and line number) in the information sent over the network. + + + + + Renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + Indicates whether to include NLog-specific extensions to log4j schema. + + + + + Indicates whether to include contents of the stack. + + + + + Indicates whether to include stack contents. + + + + + Indicates whether to include dictionary contents. + + + + + Indicates whether to include dictionary contents. + + + + + Indicates whether to include call site (class and method name) in the information sent over the network. + + + + + Option to include all properties from the log events + + + + + AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + NDC item separator. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Layout that should be use to calculate the value for the parameter. + + + + + Viewer parameter name. + + + + + Whether an attribute with empty value should be included in the output + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + Indicates whether to auto-check if the console is available. - Disables console writing if Environment.UserInteractive = False (Windows Service) - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + Enables output using ANSI Color Codes + + + + + The encoding for writing messages to the . + + + + + Indicates whether the error stream (stderr) should be used instead of the output stream (stdout). + + + + + Indicates whether to auto-flush after + + + + + Indicates whether to auto-check if the console has been redirected to file - Disables coloring logic when System.Console.IsOutputRedirected = true + + + + + Indicates whether to use default row highlighting rules. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Condition that must be met in order to set the specified foreground and background color. + + + + + Background color. + + + + + Foreground color. + + + + + + + + + + + + + + + + + Compile the ? This can improve the performance, but at the costs of more memory usage. If false, the Regex Cache is used. + + + + + Condition that must be met before scanning the row for highlight of words + + + + + Indicates whether to ignore case when comparing texts. + + + + + Regular expression to be matched. You must specify either text or regex. + + + + + Text to be matched. You must specify either text or regex. + + + + + Indicates whether to match whole words only. + + + + + Background color. + + + + + Foreground color. + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + Indicates whether to auto-flush after + + + + + Indicates whether to auto-check if the console is available - Disables console writing if Environment.UserInteractive = False (Windows Service) - Disables console writing if Console Standard Input is not available (Non-Console-App) + + + + + The encoding for writing messages to the . + + + + + Indicates whether to send the log messages to the standard error instead of the standard output. + + + + + Whether to enable batch writing using char[]-buffers, instead of using + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Obsolete - value will be ignored! The logging code always runs outside of transaction. Gets or sets a value indicating whether to use database transactions. Some data providers require this. + + + + + Indicates whether to keep the database connection open between the log events. + + + + + Name of the database provider. + + + + + Database password. If the ConnectionString is not provided this value will be used to construct the "Password=" part of the connection string. + + + + + Database host name. If the ConnectionString is not provided this value will be used to construct the "Server=" part of the connection string. + + + + + Database user name. If the ConnectionString is not provided this value will be used to construct the "User ID=" part of the connection string. + + + + + Name of the connection string (as specified in <connectionStrings> configuration section. + + + + + Connection string. When provided, it overrides the values specified in DBHost, DBUserName, DBPassword, DBDatabase. + + + + + Database name. If the ConnectionString is not provided this value will be used to construct the "Database=" part of the connection string. + + + + + Connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used. + + + + + Configures isolated transaction batch writing. If supported by the database, then it will improve insert performance. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + Text of the SQL command to be run on each log level. + + + + + Type of the SQL command to be run on each log level. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Convert format of the property value + + + + + Culture used for parsing property string-value for type-conversion + + + + + Value to assign on the object-property + + + + + Name for the object-property + + + + + Type of the object-property + + + + + + + + + + + + + + Type of the command. + + + + + Connection string to run the command against. If not provided, connection string from the target is used. + + + + + Indicates whether to ignore failures. + + + + + Command text. + + + + + + + + + + + + + + + + + + Database parameter name. + + + + + Layout that should be use to calculate the value for the parameter. + + + + + Database parameter DbType. + + + + + Database parameter size. + + + + + Database parameter precision. + + + + + Database parameter scale. + + + + + Type of the parameter. + + + + + Convert format of the database parameter value. + + + + + Culture used for parsing parameter string-value for type-conversion + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Layout that renders event Category. + + + + + Optional entry type. When not set, or when not convertible to then determined by + + + + + Layout that renders event ID. + + + + + Name of the Event Log to write to. This can be System, Application or any user-defined name. + + + + + Name of the machine on which Event Log service is running. + + + + + Maximum Event log size in kilobytes. + + + + + Message length limit to write to the Event Log. + + + + + Value to be used as the event Source. + + + + + Action to take if the message is larger than the option. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Indicates whether to return to the first target after any successful write. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + File encoding. + + + + + Line ending mode. + + + + + Maximum days of archive files that should be kept. + + + + + Indicates whether to compress archive files into the zip archive format. + + + + + Way file archives are numbered. + + + + + Name of the file to be used for an archive. + + + + + Is the an absolute or relative path? + + + + + Indicates whether to automatically archive log files every time the specified time passes. + + + + + Size in bytes above which log files will be automatically archived. Warning: combining this with isn't supported. We cannot create multiple archive files, if they should have the same name. Choose: + + + + + Maximum number of archive files that should be kept. + + + + + Indicates whether the footer should be written only when the file is archived. + + + + + Maximum number of log file names that should be stored as existing. + + + + + Indicates whether to delete old log file on startup. + + + + + File attributes (Windows only). + + + + + Indicates whether to create directories if they do not exist. + + + + + Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. If set to false, nothing gets written when the filename is wrong. + + + + + Value of the file size threshold to archive old log file on startup. + + + + + Indicates whether to archive old log file on startup. + + + + + Value specifying the date format to use when archiving files. + + + + + Indicates whether to enable log file(s) to be deleted. + + + + + Indicates whether to write BOM (byte order mark) in created files + + + + + Indicates whether to replace file contents on each write instead of appending log message at the end. + + + + + Indicates whether file creation calls should be synchronized by a system global mutex. + + + + + Gets or set a value indicating whether a managed file stream is forced, instead of using the native implementation. + + + + + Is the an absolute or relative path? + + + + + Name of the file to write to. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + Indicates whether concurrent writes to the log file by multiple processes on different network hosts. + + + + + Maximum number of seconds that files are kept open. If this number is negative the files are not automatically closed after a period of inactivity. + + + + + Number of files to be kept open. Setting this to a higher value may improve performance in a situation where a single File target is writing to many files (such as splitting by level or by logger). + + + + + Indicates whether to keep log file open instead of opening and closing it on each logging event. + + + + + Whether or not this target should just discard all data that its asked to write. Mostly used for when testing NLog Stack except final write + + + + + Indicates whether concurrent writes to the log file by multiple processes on the same host. + + + + + Number of times the write is appended on the file before NLog discards the log message. + + + + + Delay in milliseconds to wait before attempting to write to the file again. + + + + + Log file buffer size in bytes. + + + + + Maximum number of seconds before open files are flushed. If this number is negative or zero the files are not flushed by timer. + + + + + Indicates whether to automatically flush the file buffers after each log message. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Condition expression. Log events who meet this condition will be forwarded to the wrapped target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Windows domain name to change context to. + + + + + Required impersonation level. + + + + + Type of the logon provider. + + + + + Logon Type. + + + + + User account password. + + + + + Indicates whether to revert to the credentials of the process instead of impersonating another user. + + + + + Username to change context to. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Interval in which messages will be written up to the number of messages. + + + + + Maximum allowed number of messages written per . + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Endpoint address. + + + + + Name of the endpoint configuration in WCF configuration file. + + + + + Indicates whether to use a WCF service contract that is one way (fire and forget) or two way (request-reply) + + + + + Client ID. + + + + + Indicates whether to include per-event properties in the payload sent to the server. + + + + + Indicates whether to use binary message encoding. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + Layout that should be use to calculate the value for the parameter. + + + + + Name of the parameter. + + + + + Type of the parameter. + + + + + Type of the parameter. Obsolete alias for + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Text to be rendered. + + + + + Header. + + + + + Footer. + + + + + Indicates whether NewLine characters in the body should be replaced with tags. + + + + + Priority used for sending mails. + + + + + Encoding to be used for sending e-mail. + + + + + BCC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + CC email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + Indicates whether to add new lines between log entries. + + + + + Indicates whether to send message as HTML instead of plain text. + + + + + Sender's email address (e.g. joe@domain.com). + + + + + Mail message body (repeated for each log message send in one mail). + + + + + Mail subject. + + + + + Recipients' email addresses separated by semicolons (e.g. john@domain.com;jane@domain.com). + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + Indicates the SMTP client timeout. + + + + + SMTP Server to be used for sending. + + + + + SMTP Authentication mode. + + + + + Username used to connect to SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + Password used to authenticate against SMTP server (used when SmtpAuthentication is set to "basic"). + + + + + Indicates whether SSL (secure sockets layer) should be used when communicating with SMTP server. + + + + + Port number that SMTP Server is listening on. + + + + + Indicates whether the default Settings from System.Net.MailSettings should be used. + + + + + Folder where applications save mail messages to be processed by the local SMTP server. + + + + + Specifies how outgoing email messages will be handled. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Max number of items to have in memory + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Class name. + + + + + Method name. The method must be public and static. Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx e.g. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Encoding to be used. + + + + + End of line value if a newline is appended at the end of log message . + + + + + Maximum message size in bytes. + + + + + Indicates whether to append newline at the end of log message. + + + + + Network address. + + + + + Size of the connection cache (number of connections which are kept alive). + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + Indicates whether to keep connection open whenever possible. + + + + + Maximum current connections. 0 = no maximum. + + + + + Maximum queue size. + + + + + Action that should be taken if the will be more connections than . + + + + + Action that should be taken if the message is larger than maxMessageSize. + + + + + Get or set the SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Encoding to be used. + + + + + Instance of that is used to format log messages. + + + + + End of line value if a newline is appended at the end of log message . + + + + + Maximum message size in bytes. + + + + + Indicates whether to append newline at the end of log message. + + + + + Get or set the SSL/TLS protocols. Default no SSL/TLS is used. Currently only implemented for TCP. + + + + + Network address. + + + + + Size of the connection cache (number of connections which are kept alive). + + + + + The number of seconds a connection will remain idle before the first keep-alive probe is sent + + + + + Maximum queue size. + + + + + Maximum current connections. 0 = no maximum. + + + + + Action that should be taken if the will be more connections than . + + + + + Action that should be taken if the message is larger than maxMessageSize. + + + + + Indicates whether to keep connection open whenever possible. + + + + + NDLC item separator. + + + + + Indicates whether to include source info (file name and line number) in the information sent over the network. + + + + + Renderer for log4j:event logger-xml-attribute (Default ${logger}) + + + + + Indicates whether to include NLog-specific extensions to log4j schema. + + + + + Indicates whether to include contents of the stack. + + + + + Indicates whether to include stack contents. + + + + + Indicates whether to include dictionary contents. + + + + + Indicates whether to include dictionary contents. + + + + + Indicates whether to include call site (class and method name) in the information sent over the network. + + + + + Option to include all properties from the log events + + + + + AppInfo field. By default it's the friendly name of the current AppDomain. + + + + + NDC item separator. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Indicates whether to perform layout calculation. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Indicates whether performance counter should be automatically created. + + + + + Name of the performance counter category. + + + + + Counter help text. + + + + + Name of the performance counter. + + + + + Performance counter type. + + + + + The value by which to increment the counter. + + + + + Performance counter instance name. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Default filter to be applied when no specific rule matches. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + Condition to be tested. + + + + + Resulting filter to be applied when the condition matches. + + + + + + + + + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + Number of times to repeat each log message. + + + + + + + + + + + + + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + Number of retries that should be attempted on the wrapped target in case of a failure. + + + + + Time to wait between retries in milliseconds. + + + + + + + + + + + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Layout used to format log messages. + + + + + Forward to (Instead of ) + + + + + Always use independent of + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name of the target. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + + + + Should we include the BOM (Byte-order-mark) for UTF? Influences the property. This will only work for UTF-8. + + + + + Web service method name. Only used with Soap. + + + + + Web service namespace. Only used with Soap. + + + + + Protocol to be used when calling web service. + + + + + Custom proxy address, include port separated by a colon + + + + + Encoding. + + + + + Web service URL. + + + + + Value whether escaping be done according to the old NLog style (Very non-standard) + + + + + Value whether escaping be done according to Rfc3986 (Supports Internationalized Resource Identifiers - IRIs) + + + + + Indicates whether to pre-authenticate the HttpWebRequest (Requires 'Authorization' in parameters) + + + + + Name of the root XML element, if POST of XML document chosen. If so, this property must not be null. (see and ). + + + + + (optional) root namespace of the XML document, if POST of XML document chosen. (see and ). + + + + + Proxy configuration when calling web service + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Footer layout. + + + + + Header layout. + + + + + Body layout (can be repeated multiple times). + + + + + Custom column delimiter value (valid when ColumnDelimiter is set to 'Custom'). + + + + + Column delimiter. + + + + + Quote Character. + + + + + Quoting mode. + + + + + Indicates whether CVS should include header. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Layout of the column. + + + + + Name of the column. + + + + + Override of Quoting mode + + + + + + + + + + + + + + + + + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + Option to render the empty object value {} + + + + + Option to suppress the extra spaces in the output json + + + + + List of property names to exclude when is true + + + + + Option to include all properties from the log event (as JSON) + + + + + Indicates whether to include contents of the dictionary. + + + + + Indicates whether to include contents of the dictionary. + + + + + Indicates whether to include contents of the dictionary. + + + + + How far should the JSON serializer follow object references before backing off + + + + + + + + + + + + + + + + + Layout that will be rendered as the attribute's value. + + + + + Name of the attribute. + + + + + Determines whether or not this attribute will be Json encoded. + + + + + Should forward slashes be escaped? If true, / will be converted to \/ + + + + + Indicates whether to escape non-ascii characters + + + + + Whether an attribute with empty value should be included in the output + + + + + + + + + + + + + + Footer layout. + + + + + Header layout. + + + + + Body layout (can be repeated multiple times). + + + + + + + + + + + + + + + + + + + + + Option to include all properties from the log events + + + + + Indicates whether to include call site (class and method name) in the information sent over the network. + + + + + Indicates whether to include contents of the dictionary. + + + + + Indicates whether to include contents of the dictionary. + + + + + Indicates whether to include contents of the stack. + + + + + Indicates whether to include contents of the stack. + + + + + Indicates whether to include source info (file name and line number) in the information sent over the network. + + + + + + + + + + + + + + Layout text. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + List of property names to exclude when is true + + + + + Option to include all properties from the log event (as XML) + + + + + Indicates whether to include contents of the dictionary. + + + + + Indicates whether to include contents of the dictionary. + + + + + How far should the XML serializer follow object references before backing off + + + + + XML element name to use for rendering IList-collections items + + + + + XML attribute name to use when rendering property-key When null (or empty) then key-attribute is not included + + + + + XML element name to use when rendering properties + + + + + XML attribute name to use when rendering property-value When null (or empty) then value-attribute is not included and value is formatted as XML-element-value + + + + + Name of the root XML element + + + + + Value inside the root XML element + + + + + Whether a ElementValue with empty value should be included in the output + + + + + Auto indent and create new lines + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + + + + + + + + + + + Layout that will be rendered as the attribute's value. + + + + + Name of the attribute. + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + Whether an attribute with empty value should be included in the output + + + + + + + + + + + + + + + + + + + + + + + + + Determines whether or not this attribute will be Xml encoded. + + + + + Name of the element + + + + + Value inside the element + + + + + Whether a ElementValue with empty value should be included in the output + + + + + Auto indent and create new lines + + + + + List of property names to exclude when is true + + + + + Option to include all properties from the log event (as XML) + + + + + Indicates whether to include contents of the dictionary. + + + + + Indicates whether to include contents of the dictionary. + + + + + How far should the XML serializer follow object references before backing off + + + + + XML element name to use for rendering IList-collections items + + + + + XML attribute name to use when rendering property-key When null (or empty) then key-attribute is not included + + + + + XML element name to use when rendering properties + + + + + XML attribute name to use when rendering property-value When null (or empty) then value-attribute is not included and value is formatted as XML-element-value + + + + + + + + + + + + + Action to be taken when filter matches. + + + + + Condition expression. + + + + + + + + + + + + + + + + + + + + + + + + + + Action to be taken when filter matches. + + + + + Indicates whether to ignore case when comparing strings. + + + + + Layout to be used to filter log messages. + + + + + Substring to be matched. + + + + + + + + + + + + + + + + + Action to be taken when filter matches. + + + + + String to compare the layout to. + + + + + Indicates whether to ignore case when comparing strings. + + + + + Layout to be used to filter log messages. + + + + + + + + + + + + + + + + + Action to be taken when filter matches. + + + + + Indicates whether to ignore case when comparing strings. + + + + + Layout to be used to filter log messages. + + + + + Substring to be matched. + + + + + + + + + + + + + + + + + Action to be taken when filter matches. + + + + + String to compare the layout to. + + + + + Indicates whether to ignore case when comparing strings. + + + + + Layout to be used to filter log messages. + + + + + + + + + + + + + + + + + + + + + + + + Action to be taken when filter matches. + + + + + Default number of unique filter values to expect, will automatically increase if needed + + + + + Applies the configured action to the initial logevent that starts the timeout period. Used to configure that it should ignore all events until timeout. + + + + + Layout to be used to filter log messages. + + + + + Max number of unique filter values to expect simultaneously + + + + + Max length of filter values, will truncate if above limit + + + + + How long before a filter expires, and logging is accepted again + + + + + Default buffer size for the internal buffers + + + + + Reuse internal buffers, and doesn't have to constantly allocate new buffers + + + + + Append FilterCount to the when an event is no longer filtered + + + + + Insert FilterCount value into when an event is no longer filtered + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file

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 mgF9aIdRD0*I*R3g&f2?E(_l!QqWn_taC?{gcYe literal 0 HcmV?d00001 diff --git a/packages/NLog.4.7.2/lib/sl5/NLog.xml b/packages/NLog.4.7.2/lib/sl5/NLog.xml new file mode 100644 index 0000000..80940f9 --- /dev/null +++ b/packages/NLog.4.7.2/lib/sl5/NLog.xml @@ -0,0 +1,22039 @@ + + + + NLog + + + +

w|AK!7oFwvI0=2KGxo+t88=~&AhF2iB@8Rm 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